並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 516件

新着順 人気順

wantedlyの検索結果1 - 40 件 / 516件

タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。

wantedlyに関するエントリは516件あります。 開発javascript設計 などが関連タグです。 人気エントリには 『ソフトウェア設計の Why & What & How | Wantedly Engineer Blog』などがあります。
  • ソフトウェア設計の Why & What & How | Wantedly Engineer Blog

    こんにちは、開発チームのアーキテクトをやっている竹野(@Altech)です。先日、新人研修でソフトウェアの設計について話す機会がありました。 ソフトウェアの設計というのは関連する領域が広いため、どうしても断片的な理解になりがちです。そこで、早い段階で全体像を感じてもらうために、ソフトウェア設計の Why と How と What を1時間でまとめて話すというちょっと意欲的なコンセプトで研修を行いました。今回は、その内容を記事にしました。 この研修のねらいはじめにソフトウェアの設計について書かれた情報は世の中に多いですが、その情報の多くは How であり、それだけを読んで適切に使うことが難しいと感じています。その直接的な理由は、How に対しての What、How / What に対しての Why が語られることが少ないからです。 ただ、How だけを知っていると、それは本当に問題を解決して

      ソフトウェア設計の Why & What & How | Wantedly Engineer Blog
    • 「YAMLの本来の使い方」を仕様から読み取ってみる | Wantedly Engineer Blog

      YAMLは「便利なJSON」として使われることが多い一方、その複雑性から落とし穴も多く、しばしば批判の対象になります。 なぜYAMLはそこまで複雑なのでしょうか? その背景のひとつは、本来のYAMLがJSONとは大きく異なる目的意識で作られているからです。 本稿ではYAML specに従う形でYAMLのコンセプトを解説することを目指します。残念ながら、ここに書かれているYAMLの思想は実際には実用されているとは言い難いですし、これらの背景を理解しても「YAMLは複雑だ」という事実がひっくり返ることはないでしょう。それでも、YAMLの複雑さの源泉を体系的に理解し、YAMLとほどほどの距離感で付き合う助けにはなるのではないかと思います。 この記事ではこういう話をしますYAMLはJSONとは独立に、異なる目的で生まれた野心的な仕様であるアンカーやタグなどの強力な構文は、これらの目的を満たすために

        「YAMLの本来の使い方」を仕様から読み取ってみる | Wantedly Engineer Blog
      • React でデザインシステムを正しく実装する - コンポーネントカタログを超えて | Wantedly Engineer Blog

        Wantedly でバックエンドのテックリード的なやつをやってる @izumin5210 です。半年くらい前から取り組んでいた、UI デザインシステムの React 実装について紹介します。ソフトウェアの設計としても非常にエキサイティングだったので、ライブラリ作ったりするのが好きな人なども楽しんでもらえると思います。 TL;DRWantedly の UI デザインシステムは「WantedlyのUIをデザインする上での共通の考え方とツール&アセット」でありエンジニアとデザイナが効率よくコミュニケーションするための共通言語となるデザインシステムを (Web) Frontend に持ち込む際は、単なるコンポーネントカタログではなく、システムが定義するものと同じレベルの抽象を持つライブラリ・フレームワークとして実装することで、より有効性を発揮するこの話が気になった(Web・モバイル問わず)フロント

          React でデザインシステムを正しく実装する - コンポーネントカタログを超えて | Wantedly Engineer Blog
        • Slackアプリ開発を始めるときに全人類が知っておくべきこと | Wantedly Engineer Blog

          こんにちは! Wantedly で Web エンジニアをしている木村(@hachiblog)です。8月にβ版をリリースした、コンディション・マネジメントサービスのWantedly Pulseを開発しています。 Pulse は毎週の調子を記録する機能や、社内のメンバーを称賛できる機能を提供していますが、そのほとんどを Slack アプリ内で実現しています Pulse(パルス)/ チームの状態 Slackを通じてチームの価値観を浸透させ、メンバーの抱える課題や隠れた貢献を可視化。行動のベクトルを束ね、自律して同じ価値に向かうチームを生み出す、新しいモチベーション・マネージメントツールです。 Slackを通じてメンバーの抱えるモチベーションの課題や隠れた貢献を可視化。行動のベクトルを束ね、自律して同じ価値に向かうチームを生み出します。 ... その他にも Wantedly Visit で募集に応

            Slackアプリ開発を始めるときに全人類が知っておくべきこと | Wantedly Engineer Blog
          • JavaScript: 所望のイベントリスナの発火を妨げているイベントリスナを特定する | Wantedly Engineer Blog

            Webアプリケーションでは、DOMの要素にイベントリスナ(イベントハンドラ)を取り付けることで、ユーザーによる様々な操作 (クリックなど) に応じて処理を行うことができます。 しかし、イベントリスナを登録しても、他のイベントリスナとの干渉によって意図した通りに発火しないことがあります。ここではその調査方法を紹介します。 前提知識: イベントバブリングイベントについては筆者の過去記事でも解説しましたが、あらためてここでも説明します。イベントバブリングを理解することが、イベントデバッグの近道だからです。 DOMにおいて、要素はネストすることによって木構造を形成します。ある要素(ターゲット要素)がクリックされるなどしてイベントが発生したとき、イベントはその要素自体だけではなく、その祖先要素にも送られます。これをイベントバブリングといいます。 イベントバブリングは2つの段階に分けられます。 Cap

              JavaScript: 所望のイベントリスナの発火を妨げているイベントリスナを特定する | Wantedly Engineer Blog
            • 和田 卓人さん(t_wadaさん)に「予防に勝る防御なし - 堅牢なコードを導く様々な設計のヒント」を社内で講演いただきました! | Wantedly Engineer Blog

              和田 卓人さん(t_wadaさん)に「予防に勝る防御なし - 堅牢なコードを導く様々な設計のヒント」を社内で講演いただきました! こんにちは、ウォンテッドリーDev Branch VPoE 室長の髙橋です。 ウォンテッドリーの開発組織であるDev Branchでは、外部から有識者を招いて勉強会を開催したり、技術顧問として知見を取り入れるなど、プロダクト開発により強い組織となるためにさまざまな施策を行っています。 今回、「テスト書いてないとかお前それ @t_wada の前でも同じ事言えんの」 でおなじみのt_wadaさん(和田 卓人さん、以下和田さん)に「予防に勝る防御なし - 堅牢なコードを導く様々な設計のヒント」をウォンテッドリー向けにカスタマイズして講演いただきました。 このストーリーでは、今回の講演の経緯から社内の反応・Q&Aまで、講演に関する詳細をご紹介いたします。 社内講演のきっ

                和田 卓人さん(t_wadaさん)に「予防に勝る防御なし - 堅牢なコードを導く様々な設計のヒント」を社内で講演いただきました! | Wantedly Engineer Blog
              • Rails 7.0でアセットパイプラインはどう変わるか | Wantedly Engineer Blog

                Rails 7.0ではフロントエンドサポートが刷新されます。新たなライブラリが多数導入され、選択肢が増えるため、「Rails公式のものを選べばOK」という戦略が通用しなくなります。 本稿では、Railsでフロントエンドを書くための選択肢について、その歴史と実装を踏まえて比較検討します。 結論から言うと(まだアルファ版なので今後も状況が変わる可能性はありますが、) 新規アプリケーションではSprocketsの役割は無くなりそうです。新しいライブラリとして Propshaft, importmap-rails, jsbundling-rails, cssbundling-rails が登場し、主要な選択肢として以下が提供されます。 (各ライブラリの詳細については後述します) Propshaft + importmap-railsデフォルトの選択肢。Node.jsが不要。トランスパイルを含め、複

                  Rails 7.0でアセットパイプラインはどう変わるか | Wantedly Engineer Blog
                • 発表資料「日付時刻A to Z」を公開しました | Wantedly Engineer Blog

                  日付や時刻データの扱いについてまとめたスライド「日付時刻A to Z」を作ったので公開します。 これは何?「日付と時刻」を正しく扱うために、日付/時刻にまつわる諸概念やありがちな間違いを紹介したスライドです。このスライドは大きく3つのパートに分かれています: 第1部「日付編」§1 天体の周期§2 暦§3 紀元と通日第2部「時刻編」§4 時間と分§5 秒§6 相対性理論第3部「コンピューティング編」§7 文字列表現§8 数値表現§9 時刻同期第1部と第2部では、「日付」や「時刻」の概念を定めるのに必要な知識を整理します。第3部ではその日付時刻をコンピューターで扱うときに特有の事情を補足しています。 このスライドが作られた経緯ウォンテッドリー社内では毎週1回お昼の時間に任意で集まって技術の話をする "Tech Lunch" というイベントがあります。テーマは自由で、社内でやったことの紹介やアナ

                    発表資料「日付時刻A to Z」を公開しました | Wantedly Engineer Blog
                  • 奇妙な曜日バグ | Wantedly Engineer Blog

                    ある日、海外チームからバグの報告がありました。日付と曜日が対応していないというのです。 テスト環境でいくつか設定を変更して試したところ、OSのタイムゾーンをシンガポール標準時 (UTC+8) に変更したときに、曜日が2つずれることが確認できました。4/2は金曜日ですが、4/2が水曜日として表示されてしまっています。 原因調査この部分のソースコードはだいたい以下のようになっていました。Moment.jsというライブラリを使って日付と曜日を表示しています。 // TimelineItem.jsx // date は 2021-04-02 のような文字列 const DateBox = ({ date, showMonth }) => { const mDate = moment(date); const dateHuman = showMonth ? mDate.format("M.D") :

                      奇妙な曜日バグ | Wantedly Engineer Blog
                    • GoのスライスとRustのスライス | Wantedly Engineer Blog

                      こんにちは、Wantedly のDX Squadでエンジニアをしている原です。 (DXはDeveloper Experienceの略で、開発者が心地よくプロダクトを作れる環境を作ることを目標に頑張る部門です) 本稿は、WANTEDLY TECH BOOK 9 から「GoのスライスとRustのスライス」という章を抜粋し加筆修正を加えたものです。ウォンテッドリーでは WANTEDLY TECH BOOK のうち最新版を除いた電子版を無料で配布しています。ぜひ読んでみてください。 過去の WANTEDLY TECH BOOK を入手する 以下、本文です。 GoのスライスとRustのスライスは大枠では似ていますが、スライスの共有に関する振舞いが微妙に異なり、GoとRustの設計の違いが垣間見られます。本記事ではこの違いを説明します。 配列型とスライス型Go/Rustにおいて「配列」は固定長でスタッ

                        GoのスライスとRustのスライス | Wantedly Engineer Blog
                      • gRPC Internal - gRPC の設計と内部実装から見えてくる世界 | Wantedly Engineer Blog

                        こんにちは、Wantedly の Infrastructure Team で Engineer をしている南(@south37)です。 今日は、WANTEDLY TECH BOOK 6 から「gRPC Internal」という章を抜粋して Blog にします。 「WANTEDLY TECH BOOK 1-7を一挙大公開」でも書いた通り、Wantedly では WANTEDLY TECH BOOK のうち最新版を除いた電子版を無料で配布する事にしました。Wantedly Engineer Blogでも過去記事の内容を順次公開予定であり、この Blog もその一環となっています。 Wantedly における Go 導入にまつわる技術背景 | Wantedly Engineer Blog (本記事は Go Conference 2019 Autumn にて無料配布した冊子『WANTEDLY TE

                          gRPC Internal - gRPC の設計と内部実装から見えてくる世界 | Wantedly Engineer Blog
                        • Protocol Buffers によるプロダクト開発のススメ - API 開発の今昔 - | Wantedly Engineer Blog

                          こんにちは、Wantedly People アプリの開発をしている竹野(Altech)です。今回は、Protocol Buffers についての記事になります。 Wantedly People では、2018年に Protocol Buffers (以下、Protobuf と呼ぶ)がとあるマイクロサービスに入って以降、何度か大規模に Protobuf を使った開発をしてきました。またその経験を通じて、Protobuf には単に「型がついて嬉しい」というだけではないパラダイム的な変化があることが分かってきました。 その知見を全社に展開するため、去年「Protobuf によるプロダクト開発速習会」という会を行いました。この記事の内容は、そこで話したことの前半「Protobuf を使うと開発がどう変わるのか?」になります。 なお、Protobuf にはバイナリフォーマットとしての役割とインターフ

                            Protocol Buffers によるプロダクト開発のススメ - API 開発の今昔 - | Wantedly Engineer Blog
                          • 令和最新版: PostgreSQLの安全なSET NOT NULL | Wantedly Engineer Blog

                            データベースのスキーマを変更するときは、スキーマの変更作業によってテーブルが長期間ロックされてしまわないように注意が必要です。 2019年にリリースされたPostgreSQL 12.0以降では、NOT NULLを安全に追加するためによりよいベストプラクティスができています。まだ知らない人もいるかもしれないので、ここで紹介します。 何が問題なのか?次のようなDDLコマンドを考えます。 -- posts.moderatedをNULL禁止にする ALTER TABLE posts ALTER COLUMN moderated SET NOT NULL;これはテーブルをACCESS EXCLUSIVEでロックしたままフルテーブルスキャンを行います。その間は他のトランザクションはこのテーブルに関する処理を進行できません。 テーブルが小さければこれで特に問題ありません。しかし、postsがそれなりに大

                              令和最新版: PostgreSQLの安全なSET NOT NULL | Wantedly Engineer Blog
                            • Wantedly Engineering Handbook | Wantedly Engineering Handbook

                              新しく Wantedly の開発チームに参加する人向けのドキュメント集です。社内のエンジニアが知るべき情報のうち外部にも公開できる情報を体系的にまとめたものです。 入社前後のフルタイムの社員が一番の想定読者です。ハンドブックの内容はインターンや採用選考を受けている人にも役に立つことを期待しています。また、PDF 形式の電子書籍およびオンラインドキュメントとして広く一般公開しています。1 年に 1 度、物理書籍としても印刷し社内外に配布します。

                                Wantedly Engineering Handbook | Wantedly Engineering Handbook
                              • ノンデザイナーズ・Wantedly デザインシステム完全理解ペーパー | Wantedly Engineer Blog

                                Wantedly では新卒含む新入社員向けに研修を毎年実施しています。これは「新入社員向け」といいつつ既存の社員も自由に参加できるものです。今年はこの研修のフォーマットを借りて、Wantedly のプロダクト開発を支える重要な概念のひとつである「Wantedly の UI デザインシステム」についての研修を、ソフトウェアエンジニアの @izumin5210 (筆者) とプロダクトデザイナーの @NishaMe で実施しました。 デザインの構造を正しく捉えることは、UI の実装を専門にしているかどうかを問わず、正しい実装 - 開発生産性が高く、ユーザにとっても使いやすい実装 - のための重要なポイントです。よってこの研修は「広義のフロントエンドエンジニア」、業務中に UI を実装することがある全てのエンジニアを対象としました。 Web フロントエンドエンジニアモバイルエンジニア専門ではないが

                                  ノンデザイナーズ・Wantedly デザインシステム完全理解ペーパー | Wantedly Engineer Blog
                                • hi18n (i18nライブラリ) の紹介 (1) 設計思想と基本方針 | Wantedly Engineer Blog

                                  hi18nとはhi18n は現在Wantedlyで開発中の、TypeScript/JavaScript向け翻訳テキスト管理ライブラリ (i18nライブラリの一種) です。 本記事ではhi18nの重要な設計上の判断やその背景について説明します。 GitHub - wantedly/hi18n: message internationalization meets immutability and type-safety Installation: npm install @hi18n/core @hi18n/react-context @hi18n/react npm install -D @hi18n/cli # Or: yarn add @hi18n/core @hi18n/react-context @hi18n/react yarn add -D @hi18n/cli Put the

                                    hi18n (i18nライブラリ) の紹介 (1) 設計思想と基本方針 | Wantedly Engineer Blog
                                  • JavaScriptのカスタムエラーはこれでOK | Wantedly Engineer Blog

                                    JavaScriptでは任意の値を例外としてthrowすることができますが、実際にはErrorのインスタンスをthrowするのが慣例です。 エラーの原因をより正確に説明したいときはErrorを継承するのが望ましいですが、単に継承するのではなく以下のように書くのがオススメです。 class MyError extends Error { static { this.prototype.name = "MyError"; } }その背景について以下で説明します。テーマは以下の3つです。 nameプロパティcaptureStackTracecauseプロパティnameを正しくセットするNode.jsでエラーを表示させると、クラス名が正しく表示されます。 > throw new (class C extends Error {})() Uncaught C [Error]ここで出力されている "C

                                      JavaScriptのカスタムエラーはこれでOK | Wantedly Engineer Blog
                                    • yarn v2にまつわる誤解 | Wantedly Engineer Blog

                                      現在WantedlyではNode.jsのパッケージ管理にyarn v1を使っています。現在私は開発者体験の改善を目指してyarn v2への移行を検討しているのですが、その過程でyarn v2が誤解されがちだと感じるようになりました。そこで社内への情報提供も兼ねて、いくつか誤解されがちだと思われる点を紹介したいと思います。 (わかりやすさのためにyarn v2と呼んでいますが、 yarn v3以降も含みます。これらはメジャーバージョンアップではあるもののyarn v1→v2のようにアーキテクチャが刷新されるわけではないからです) ポイント1: yarnをv2にするのにPnPは必須ではないyarn PnPはyarn v2の目玉機能で、パッケージをnode_modules以下に展開せずに仮想化してロードできるようにするというものです。node_modulesの展開作業が不要になるほか、依存関係の

                                        yarn v2にまつわる誤解 | Wantedly Engineer Blog
                                      • React Nativeをやめる話とKotlin Multiplatform | Wantedly Engineer Blog

                                        Wantedlyのモバイルエンジニアの久保出です。今回は、Wantedly VisitアプリにおいてReact Nativeをやめる決断をしたこと、関連してKotlin Multiplatformを導入しようとしていることについて書かせていただきます。 なぜReact Nativeが導入されていたかVisitのiOSアプリは2018年にフルリニューアルしました。リニューアルプロジェクトはモバイルエンジニアを総動員して半年近くかけてリリースしました。 リニューアルでは、色々なコンテンツを見つけられるDiscoverという新機能追加も予定しており、Discoverの実験もリニューアルと並列して行うことになりました。モバイルエンジニアはリニューアルに集中していたため、Webエンジニアのリソースが使えるReact NativeがDiscoverの実装手段に選ばれました。Discoverは、リニュー

                                          React Nativeをやめる話とKotlin Multiplatform | Wantedly Engineer Blog
                                        • The History of Distributed Databases - Google, Amazon, Facebook など巨大企業による分散データベース技術の発展 | Wantedly Engineer Blog

                                          こんにちは、Wantedly の Infrastructure Team で Engineer をしている南(@south37)です。 今日は、WANTEDLY TECH BOOK 5 から「巨大企業による分散データベース技術の発展」という章を抜粋して Blog にします。 「WANTEDLY TECH BOOK 1-7を一挙大公開」でも書いた通り、Wantedly では WANTEDLY TECH BOOK のうち最新版を除いた電子版を無料で配布する事にしました。Wantedly Engineer Blogでも過去記事の内容を順次公開予定であり、この Blog もその一環となっています。 Wantedly における Go 導入にまつわる技術背景 | Wantedly Engineer Blog (本記事は Go Conference 2019 Autumn にて無料配布した冊子『WANT

                                            The History of Distributed Databases - Google, Amazon, Facebook など巨大企業による分散データベース技術の発展 | Wantedly Engineer Blog
                                          • 実践 Node.js Native ESM — Wantedlyでのアプリケーション移行事例 | Wantedly Engineer Blog

                                            Wantedlyではこのたび、フロントエンドアプリケーションのひとつをNative ESM化しました。本記事ではNative ESM化の必要性と、必要な作業について説明します。 この記事の概要Node.jsにはNative ESMというモードがある。Native ESMはまだ普及していないが、ライブラリ側の更新が進み、移行が必要になりつつある。Native ESMをめぐる状況は (この記事の長さからわかるように) 色々複雑で、概念をちゃんと説明するだけでも大変。Native ESMへの移行にあたってはさまざまな困難が待ち受けている。Native ESMとは歴史的経緯から、JavaScriptには複数のモジュールシステムがあります。そのうちNode.js周辺でよく使われるのはCommonJS ModulesとES Modulesです。 CommonJS Modules (CJS) は実質的に

                                              実践 Node.js Native ESM — Wantedlyでのアプリケーション移行事例 | Wantedly Engineer Blog
                                            • Web アプリのデザインシステムライブラリ | Wantedly Engineering Handbook

                                              Wantedly の UI デザインシステムは「WantedlyのUIをデザインする上での共通の考え方とツール&アセット」でありエンジニアとデザイナが効率よくコミュニケーションするための共通言語となる デザインシステムを (Web) Frontend に持ち込む際は、単なるコンポーネントカタログではなく、システムが定義するものと同じレベルの抽象を持つライブラリ・フレームワークとして実装することで、より有効性を発揮する Wantedly におけるデザインシステムは、「プロダクト・デバイスをまたいでも・誰がデザインしても体験やブランドとしての一貫性を保つ」「デザインの生産性を向上させ、デザイナ - エンジニア 間コミュニケーションを改善することで、ユーザに価値を届ける速度を向上させる」といった目的のために作られたものです。 より詳しくは、デザインシステムが加速させるプロダクト開発 / Desi

                                                Web アプリのデザインシステムライブラリ | Wantedly Engineering Handbook
                                              • RustでProtocol BuffersからGraphQL BFFを自動生成してみた知見 | Wantedly Engineer Blog

                                                Wantedlyでインターンをしている遠藤です。インターンのタスクとして「RustでProtocol BuffersからGraphQL BFFを自動生成する」という技術検証を行ったので、その知見を共有したいと思います。 今回の技術検証で作成したツールのソースコードはここにあります: EXPERIMENTAL] Generate GraphQL schema and gateway from Proto definitions. Licensed under either of Apache License, Version 2.0 or MIT license at your option. Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in

                                                  RustでProtocol BuffersからGraphQL BFFを自動生成してみた知見 | Wantedly Engineer Blog
                                                • Istioを使って「Fast, Dependency-Agnostic, Isolated」な開発体験を実現した話 | Wantedly Engineer Blog

                                                  皆さんこんにちは 👋Wantedly DXチームインターンの森本です。 今回は私がインターン課題として取り組んだ、Istioを使って「Fast, Dependency-Agnostic, Isolated」な開発体験を実現した話を紹介します。 DXチームとはデラックスチームではありません。Developer eXperience チームです 😉社内の開発体験を向上させることを目標に頑張っています。詳しくはメンターの大坪さんの記事を御覧ください。 マイクロサービスWantedlyのアプリケーションは異なる役割を持った複数のサービスによって構成されています。これをマイクロサービスアーキテクチャと呼びます。サービスは、RubyでDBにアクセスしユーザー情報を管理するもの、Pythonで機械学習を行うもの、Goで通知を発行するものなど様々です。それぞれのサービスは、モバイルやブラウザおよび他の

                                                    Istioを使って「Fast, Dependency-Agnostic, Isolated」な開発体験を実現した話 | Wantedly Engineer Blog
                                                  • Ruby の型チェッカーの比較 | Wantedly Engineer Blog

                                                    はじめにこんにちは、Wantedly の 2021 年サマーインターンに参加した宮下と申します。今回のインターンでは三週間の間 DX (Developer Experience) チームに所属し、Wantedly のコードベースに Ruby の型チェッカーの導入を試みることをテーマにしていました。 インターンの前半では、様々な型チェッカーの性能を調べたり、それぞれの型チェッカーを実際に使ってみることで、開発効率を基準とした比較を行いました。インターンの後半では、現段階では一番実務に適しているだろうと判断した Sorbet に焦点を当て、Wantedly のいくつかのコードベースに実験的に Sorbet を導入した環境を作った型情報をつけていく作業をしていました。 本記事は、主にインターンの前半で調査した、型チェッカーの比較という部分に焦点を当て、文章の形にまとめたものになります。 Ruby

                                                      Ruby の型チェッカーの比較 | Wantedly Engineer Blog
                                                    • OSSか、それともSaaSか。グローバルを見据えたプロダクト開発へ向けて | DevLounge.jp Opening Session レポート | Wantedly, Inc.

                                                      エンジニアリング界をリードする著名人が「いま話を聞きたい」開発者を直接指名し、日頃なかなか聞けない開発トピックについて語り尽くすオンライントークセッション「DevLounge.jp」。このイベントのオープニングを飾ったのは、Nature株式会社VPoEのSongmuこと松木雅幸氏と、ローンチャブル(Launchable)Co-CEOの川口耕介氏です。 Songmu氏は日本で、川口氏はアメリカ・カリフォルニアでそれぞれ活躍されています。セッションでは、お二人が感じるオープンソースソフトウェア(OSS)とSaaSの違いから、グローバル展開を目指す際の考えなどを語っていただきました。その一部をご紹介します。 Songmu(松木雅幸)Nature株式会社VPoE。大学で中国語と機械翻訳を学び、中国でIT分野での起業、語学学校でのシステム担当兼営業、印刷系SIerでの金融系Webシステムや物流システ

                                                        OSSか、それともSaaSか。グローバルを見据えたプロダクト開発へ向けて | DevLounge.jp Opening Session レポート | Wantedly, Inc.
                                                      • Kubernetes 8 Factors - Kubernetes クラスタの移行から学んだクラスタのポータビリティの重要性と条件 | Wantedly Engineer Blog

                                                        Kubernetes 8 Factors - Kubernetes クラスタの移行から学んだクラスタのポータビリティの重要性と条件 こんにちは、Wantedly で技術基盤に関わる Developer Experience Squad で Engineer をしている大坪(@potsbo)です。 今日は、WANTEDLY TECH BOOK 7 から「Kubernetes クラスタの移行から学んだクラスタのポータビリティの重要性と条件」という章を抜粋し加筆修正を加えたものを Blog にします。 「WANTEDLY TECH BOOK 1-7を一挙大公開」でも書いた通り、Wantedly では WANTEDLY TECH BOOK のうち最新版を除いた電子版を無料で配布する事にしました。Wantedly Engineer Blogでも過去記事の内容を順次公開予定であり、この Blog もそ

                                                          Kubernetes 8 Factors - Kubernetes クラスタの移行から学んだクラスタのポータビリティの重要性と条件 | Wantedly Engineer Blog
                                                        • ウォンテッドリーのバックエンド領域を支える言語の歴史を読み解く | Wantedly Engineer Blog

                                                          こんにちは、ウォンテッドリー株式会社でインフラエンジニアをやっている @fohte です。 筆者はウォンテッドリーに join して 1 年が経過しようとしており、ようやくウォンテッドリーが採用しているアーキテクチャについて全貌が掴めてきました。そこで改めてウォンテッドリーの技術スタックを考え直してみると、ウォンテッドリーのバックエンド領域において利用している言語はなぜ採用されているのかが気になりました。今回はそれを読み解くべく、過去から現在までに利用されている言語の比率から、その背景と歴史を追っていきます。 ウォンテッドリーで採用している言語とアーキテクチャの歴史まずはじめに、ウォンテッドリーでは下図の技術およびアーキテクチャを選定しています。 (参考: 技術とアーキテクチャ - Wantedly Engineering Handbook) 本記事では、この図での "The System

                                                            ウォンテッドリーのバックエンド領域を支える言語の歴史を読み解く | Wantedly Engineer Blog
                                                          • 最小共通祖先を求めるアルゴリズムの形式検証 | Wantedly Engineer Blog

                                                            競技プログラミングには概念を知っておかないと解きようがない、いわゆる覚えゲーのような問題が存在します。典型的な例が 10^9+7 といった素数で割った余りを求めろといったもので、普段業務で日常的に素数で割った余りを求めている人でもなければ、割り算がしたければフェルマーの小定理や拡張ユークリッドの互除法を使えば良いと直ぐには思い付けないのではないでしょうか。 最小共通祖先も覚えゲーで必要な概念の一種と言えます。これは読んで字のごとく、与えられた根付き木の下で2頂点に共通する祖先のうち、最も根から遠い頂点を指す概念で、例えば木の2頂点が与えられて、頂点間の経路について何かを求めろといった問題で威力を発揮することが多いです。これを用いて解ける例を挙げるとすると次の問題でしょうか。 https://atcoder.jp/contests/abc014/tasks/abc014_4 最小共通祖先を求

                                                              最小共通祖先を求めるアルゴリズムの形式検証 | Wantedly Engineer Blog
                                                            • 計算機に推論できる型、できない型 | Wantedly Engineer Blog

                                                              本記事は Wantedly 21新卒 Advent Calendar の17日目の記事です。本記事では、いくつかの言語の型システムに実装されている様々な機能を紹介するとともに、それが型推論の実現性に与える影響について述べます。 最近静的型付き言語が盛り上がりを見せ、動的型付き言語の筆頭格だった Ruby もバージョン 3.0 で型解析ツールを導入するまでに至った一因には、きっと型推論の有用性が知られるようになったことが挙げられることでしょう。C言語で、関数ポインタを含んだ複雑なプロトタイプ宣言を書いている時ほどストレスを感じる時間はないし、かと言って Ruby on Rails で書かれたバックエンドを弄っている時に、型チェッカがあれば自明に発見できたであろうエラーでインシデントを起こすほど悲しいことはありません。プログラマが型を書かなくても静的な型チェックの恩恵を受けられる型推論の、何と

                                                                計算機に推論できる型、できない型 | Wantedly Engineer Blog
                                                              • WYSIWYGエディターの状態抽象化とReactとのつなぎ込み - 良いクロスブラウザエディターを目指して | Wantedly Engineer Blog

                                                                まえがきブログや記事を投稿するWebサービスには、殆どの場合、リッチなエディター機能が備わっています。特に、記事を見た目通りに書けるエディターは、WYSIWYGエディターと呼ばれ、記事を書く際には欠かせない機能の一つです。 Wantedly にもストーリーと呼ぶ記事を投稿する機能があり、その記事投稿部分では、WYSIWYGエディターを実装しています。 では、どのようにWYSISYGエディターを開発していくのでしょうか。この記事では、エディターの機能を実際に開発するための基礎知識と実装について書いていきます。 今回話すエディターについて今回記事で指すエディターとは、 WYSIWYGエディターを想定しています。例えば、Dropbox Paper や google docs、Medium、Note などのエディターがそれに該当します。Qiita や Zenn のような 2カラムの Markdow

                                                                  WYSIWYGエディターの状態抽象化とReactとのつなぎ込み - 良いクロスブラウザエディターを目指して | Wantedly Engineer Blog
                                                                • TypeScriptの表現力で自由なJavaScriptに立ち向かう 〜 Immutable.js 編 〜 | Wantedly Engineer Blog

                                                                  WantedlyのDX (Developer Experience) Squadでエンジニアをしている原 将己 (qnighy) です。 Immutable.jsというライブラリを使っているJavaScriptコードをTypeScript化するにあたって、既存の型定義では不十分だった箇所を独自に修正しました。このときしたことがTypeScriptの知見として面白いと思ったので紹介します。 Immutable.js とはImmutable.js はFacebookが開発している永続データ構造 (純粋関数型データ構造、不変データ構造) のJavaScript実装です。配列 (List), Map, Set などが実装されていますが、データ構造に対する変更操作は全て「新しい状態を返す関数」の形で提供されています。 import { List } from "immutable"; const u

                                                                    TypeScriptの表現力で自由なJavaScriptに立ち向かう 〜 Immutable.js 編 〜 | Wantedly Engineer Blog
                                                                  • Real World Performance of gRPC - gRPC 利用による劇的なパフォーマンス改善 | Wantedly Engineer Blog

                                                                    こんにちは、Wantedly の Infrastructure Team で Engineer をしている南(@south37)です。 先日は、「gRPC Internal」というタイトルで gRPC の設計と内部実装についてブログを書きました。 こんにちは、Wantedly の Infrastructure Team で Engineer をしている南(@south37 )です。 今日は、WANTEDLY TECH BOOK 6 から「gRPC Internal」という章を抜粋して Blog にします。 「WANTEDLY TECH BOOK 1-7を一挙大公開」でも書いた通り、Wantedly では WANTEDLY TECH BOOK のうち最新版を除いた電子版を無料で配布する事にしました。Wantedly Engineer Blogでも過去 この gRPC ですが、Wantedly

                                                                      Real World Performance of gRPC - gRPC 利用による劇的なパフォーマンス改善 | Wantedly Engineer Blog
                                                                    • プロダクト基盤を EKS に移行しました | Wantedly Engineer Blog

                                                                      こんにちは。Wantedly Infrastructure Squad 所属の @irotoris です。 Wantedly Visit を始めとする Wantedly のサービスのバックエンドシステムはほぼ全て Kubernetes クラスタの上で動いています。今まで kOps という OSS を使って AWS の EC2 インスタンス上に Kubernetes クラスタを自前で構築運用していましたが、2022年6月に AWS の Kubernetes Managed Service である Amazon Elastic Kubernetes Service (EKS) に移行しました。 この記事では Wantedly と Kubernetes の歴史を振り返るとともに、なぜ EKS に移行したか、移行した結果どうだったかをお伝えします。 目次 Wantedly システム基盤としての K

                                                                        プロダクト基盤を EKS に移行しました | Wantedly Engineer Blog
                                                                      • Web アプリ共通ライブラリ "React Shared Component" の紹介 | Wantedly Engineering Handbook

                                                                        Wantedly のフロントエンドは React で書かれており、フロントエンドコードは複数のリポジトリに分かれています。 元々は一つのモノリシックなリポジトリでフロントエンドも管理していましたが、新規で作成するページの大部分は新しいリポジトリで書かれています。 そして、この新しいフロントエンドのリポジトリも、企業側管理画面、ユーザー側画面とで分かれています。 一方で、ヘッダーやサイドバー、フッターなどといったナビゲーションなど、リポジトリ間で共通の UI があります。 実装が重複しないよう、それらを Wantedly 共通の React コンポーネントライブラリに切り出しています。 以下は実例です。これらのページは異なるリポジトリで実装されてます。 一方、青色で囲われたヘッダーは共通なので、ライブラリの中で実装され、それを各リポジトリで呼び出しています。

                                                                          Web アプリ共通ライブラリ "React Shared Component" の紹介 | Wantedly Engineering Handbook
                                                                        • gRPC Development Environment - Wantedly の gRPC Server/Client 開発環境 | Wantedly Engineer Blog

                                                                          こんにちは、Wantedly の Infrastructure Team で Engineer をしている南(@south37)です。 先日、gRPC 関連で2つのブログを書きました。「gRPC Internal」では、ドキュメントやコードを読み解くなかで見えてきた「gRPC の設計と内部実装」についてブログを書きました。「Real World Performance of gRPC」では、Wantedly で実際に gRPC を利用することで達成できたパフォーマンス改善についてブログを書きました。 こんにちは、Wantedly の Infrastructure Team で Engineer をしている南(@south37 )です。 今日は、WANTEDLY TECH BOOK 6 から「gRPC Internal」という章を抜粋して Blog にします。 「WANTEDLY TECH

                                                                            gRPC Development Environment - Wantedly の gRPC Server/Client 開発環境 | Wantedly Engineer Blog
                                                                          • 1人1人が小さなアーキテクトになる組織を目指す | Wantedly Engineer Blog

                                                                            前提: ウォンテッドリーのプロダクト これまでの取り組み: 特定のアプリの UI に依存しないシステムの構築 課題: 次のアーキテクチャの進化の指針を決める 「1人1人が小さなアーキテクト」である組織を目指す 前提: ウォンテッドリーのプロダクトこれまでの取り組みと現在の課題を紹介する前に前提となるプロダクトについてご紹介します。 ウォンテッドリーでは「究極の適材適所により、シゴトでココロオドルひとをふやす」をミッションとして仕事に関するサービスを展開しています。ココロオドルシゴトを見つけてその環境で活躍するまでを “Recruitment Marketing”、 “Recruiting”、”Employee Engagement” というの 3つの領域に分割して考え、その中の “Recruitment Marketing” と ”Employee Engagement” でそれぞれ Wa

                                                                              1人1人が小さなアーキテクトになる組織を目指す | Wantedly Engineer Blog
                                                                            • 同時編集可能なドラッグアンドドロップによる並び替えを実装する | Wantedly Engineer Blog

                                                                              こんにちは。Wantedlyでエンジニアをしている小林(@kbys_02)です。最近、ドラッグアンドドロップで並び替えをする機能を実装していて、技術的に面白いトピックだと思ったので記事にしました。 前提「Pulse」というモチベーション管理ツールにある1on1機能の開発を行なっています。 1on1で話をするトピックの優先度を変更できるようにするという施策を実現するため、ドラッグアンドドロップによる並び替え機能を実装しました。 1on1機能には、1on1に参加する2人が編集した内容がお互い同期更新されるという仕様があります。並び替え時にも同じように、参加者2人が同時に並び替えを行った時にロジックが壊れないようにする必要がありました。 浮動小数を利用した並び替えアルゴリズムこのような、リストにあるアイテムの並び替えを実装しようとした時に最初に思い浮かぶのは、連番による方法です。まず、上から順に

                                                                                同時編集可能なドラッグアンドドロップによる並び替えを実装する | Wantedly Engineer Blog
                                                                              • インターンで作成したgRPCリクエスト再現ツールについて | Wantedly Engineer Blog

                                                                                こんにちは!Wantedly Visitの推薦基盤チームで三週間インターンをしていた大山です。 今回のインターンで、過去の特定の日のgRPCリクエストを模倣して同じリクエストを再び投げるリクエスト再現ツールを作ったのでここで紹介させていただきます。 何を作ったかgRPCリクエストしたいサービス・メソッド・日時が書かれたjsonファイルを読み込んで、それに従ってgRPCのリクエストを送るツール (request-repeater)BigQuery上の推薦基盤サービスvisit-recommendation-projectのアクセスログから上記jsonファイルを作成するツール (bq-to-request-file)以下、上記括弧内の名称をそれぞれのツールの呼称とします。 背景このようなツールを作るにあたって以下のような背景がありました。 本番環境と同じリクエストを用いてqa環境に対して負荷を

                                                                                  インターンで作成したgRPCリクエスト再現ツールについて | Wantedly Engineer Blog
                                                                                • 「新しい世界線だ…」友達のアパレル会社がWantedlyを解約して採用をTikTokに振り切ったら1募集に対して340の応募が来るようになったらしい

                                                                                  廣渡裕介/ DAOX @hirowatari_y 友達のアパレル会社はWantedly解約して採用はTikTokに振り切ったのこと。 1募集に340件くるらしい笑 廣渡裕介/ DAOX @hirowatari_y 学生起業→ 3年で上場企業に売却→ GaiaxでDAO事業副責任者。2023年は 約30社のDAO組成支援実績。DAOのプラットフォーム開発中。 https://t.co/D1q0pX3vRu

                                                                                    「新しい世界線だ…」友達のアパレル会社がWantedlyを解約して採用をTikTokに振り切ったら1募集に対して340の応募が来るようになったらしい

                                                                                  新着記事