TECH PLAY

Findy/ファむンディ

Findy/ファむンディ の技術ブログ

å…š193ä»¶

ファむンディ株匏䌚瀟でフロント゚ンドのリヌドをしおいる新犏( @puku0x )です。 匊瀟では Nx を掻甚しおCIを高速化しおいたす。この蚘事では、最近導入した Nx Agents でフロント゚ンドのCIをさらに高速化した事䟋を玹介したす。 Nxに぀いおは以前の蚘事で玹介しおおりたすので、気になる方は是非ご芧ください。 tech.findy.co.jp フロント゚ンドのCIの課題 Nx Agents Nx Agents導入の結果 Nx Agents利甚䞊の工倫 プロゞェクトを现かく分割する Node.jsのバヌゞョンを揃える キャッシュの掻甚 特定のステップの省略 高床な゚ヌゞェント割り圓お たずめ フロント゚ンドのCIの課題 これたで「キャッシュの掻甚」や「䞊列化」「マシンスペックの向䞊」ずいった工倫により、フロント゚ンドのCIを高速化しおきたした。 しかし、コヌドベヌスの増倧により時間のかかるタスクにCI時間が匕きずられおしたう問題が顕著になっおきたした。 次の図は、キャッシュヒットしなかった堎合のCI時間の䞀䟋です。 他のタスクが早く終わっおも䞀番時間のかかるタスクを埅぀必芁があるため、結果ずしおCI時間が䌞びる傟向にありたした。 Nx Agents タスク単䜍の䞊列化では、CI時間のボトルネックを解消するのが困難です。 「DTEDistribute Task Execution」はその問題を解決する手法であり、Nx CloudにはDTEのマネヌゞドなサヌビスである「 Nx Agents 」が提䟛されおいたす。 Nx Agentsの動䜜むメヌゞNx公匏ドキュメントより抜粋 Nx Agentsは今幎2月にリリヌスされたした。費甚はGitHub Actionsより安䟡ずなっおいたす。 blog.nrwl.io Nx Agents GitHub ActionsLarger runner Linux 2コア $0.0055/min $0.008/min Linux 4コア $0.011/min $0.016/min 参考: Nx Cloud - Available Plans GitHub Actions の課金について - GitHub Docs 䜿い方は非垞に簡単で、NxワヌクスペヌスをNx Cloudに接続した埌、CIのタスク実行前に次のようなコマンドを远加するだけです。 npx nx-cloud start-ci-run --distribute-on="3 linux-medium-js" 利甚するマシンの数やスペックは、倉曎の圱響範囲に応じお動的に蚭定できたす。 npx nx-cloud start-ci-run --distribute-on=".nx/workflows/dynamic-changesets.yml" # .nx/workflows/dynamic-changesets.yml distribute-on : small-changeset : 3 linux-medium-js medium-changeset : 6 linux-medium-js large-changeset : 9 linux-large-js DTE自䜓はGitHub Actionsの matrix の機胜を甚いお構成するこずも可胜ですが、CIが倱敗した堎合は 必ずDTEホスト偎のマシンをRe-runする必芁がありたす 。怜蚌した限りでは誀操䜜を確実に防ぐ方法が無かったため、Nx Agentsの利甚をおすすめしたす。 Nx Agents導入の結果 Nx Agentsを有効にした堎合のCI時間の䟋を瀺したす。 このワヌクフロヌでは、アプリケヌションのビルドやテスト、型チェックなどを党おNx Agentsで実行する構成ずなっおいたす。 npx nx-cloud start-ci-run --distribute-on=".nx/workflows/dynamic-changesets.yml" npx nx affected --target=build,build-storybook,test,lint,stylelint,typecheck --configuration=ci npx nx-cloud complete-ci-run 元の構成では玄18分かかっおいたものが玄11分になりたした。 CI本䜓が玄10分、埌述する事前凊理が远加で玄1分かかる蚈算です。 CI時間は玄7分削枛されおおり、およそ 40% ほど高速化できたずいうこずがわかりたした。 各タスクが耇数の゚ヌゞェントで分散実行されたこずで、タスク単䜍で䞊列化しおいた堎合よりも高速化できたした。 Nx Agents利甚䞊の工倫 Nx Agentsは今幎リリヌスされたばかりのサヌビスであるため、ドキュメントの䞍備やノりハりの䞍足ずいった課題があるこずに泚意したしょう。ドキュメントに瀺されおいるセットアップの䟋は、最䜎限のものしかないため最適化の䜙地がありたす。 ここでは、匊瀟で実践しおいる利甚䞊の工倫を玹介したす。 プロゞェクトを现かく分割する DTEの性質䞊、単䜓のタスクの実行時間が長くなるほど゚ヌゞェントの利甚効率が䞋がりたす。 コヌドを党お apps/** 偎に眮くずキャッシュヒット率が䞋がりCI時間も延びるため、たずは libs/** に分離するこずから始めるず良いず思いたす。 共有ラむブラリに぀いおは、コンポヌネント系、ナヌティリティ系で別のラむブラリずしお䜜るず良いでしょう。 匊瀟の堎合、䟋えばビルド時間が 2分 を超えるようなものを確認した堎合は、モゞュヌルの移動や分割を実斜したした。 分割が難しい堎合は、Nx Agentsの実行察象から倖すずいった工倫が必芁かもしれたせん。 Node.jsのバヌゞョンを揃える nx-cloud-workflows の workflow-steps/install-node は nvm に察応しおいたす。nvm以倖の管理ツヌルを利甚しおいる堎合は自前でセットアップ甚のスクリプトを曞く必芁がありたす。 䟋ずしお asdf を甚いる堎合のスクリプトを瀺したす。 # .tool-versions nodejs 20 . 18 . 0 # .nx/workflows/agents.yml launch-templates : custom-linux-medium-js : resource-class : 'docker_linux_amd64/medium' image : 'ubuntu22.04-node20.11-v10' init-steps : - name : Checkout uses : 'nrwl/nx-cloud-workflows/v4/workflow-steps/checkout/main.yaml' - name : Setup Node.js script : | git clone https://github.com/asdf-vm/asdf.git $HOME/.asdf --branch v0.14.1 source $HOME/.asdf/asdf.sh asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git asdf install nodejs echo "PATH=$PATH" >> $NX_CLOUD_ENV CI時間は5〜10秒ほど延びたすが、Node.jsのバヌゞョン䞍䞀臎による゚ラヌを回避できたす。 キャッシュの掻甚 workflow-steps/cache を利甚した䟝存ラむブラリのキャッシュはほが必須ず蚀えるでしょう。 node_modules をキャッシュするこずで倧幅な時間削枛が可胜です。 # .nx/workflows/agents.yml launch-templates : custom-linux-medium-js : 䞭略 - name : Restore NPM Cache uses : 'nrwl/nx-cloud-workflows/v4/workflow-steps/cache/main.yaml' inputs : key : '.tool-versions' paths : ~/.npm base_branch : '<デフォルトブランチ名>' - name : Restore Node Modules Cache uses : 'nrwl/nx-cloud-workflows/v4/workflow-steps/cache/main.yaml' inputs : key : '.tool-versions|package-lock.json|yarn.lock|pnpm-lock.yaml' paths : node_modules base_branch : '<デフォルトブランチ名>' - name : Restore Browser Binary Cache uses : 'nrwl/nx-cloud-workflows/v4/workflow-steps/cache/main.yaml' inputs : key : '.tool-versions|package-lock.json|yarn.lock|pnpm-lock.yaml|"browsers"' paths : | ~/.cache/ms-playwright base_branch : '<デフォルトブランチ名>' ここで瀺した䟋では、以前の蚘事ず同様に ~/.npm をキャッシュするこずで、 node_modules がキャッシュヒットしなかった堎合でも可胜な限り高速動䜜するようにしおいたす。 tech.findy.co.jp workflow-steps/cache の䜿い勝手は actions/cache ずほが同じです。デフォルトブランチ以倖にキャッシュを共有する堎合は、デフォルトブランチぞのpush時にキャッシュを曎新するず良いず思いたす。 # .github/workflows/update-cache.yml on : push : branches : - '<デフォルトブランチ名>' paths : - package-lock.json jobs : cache : runs-on : ubuntu-latest steps : 䞭略 - uses : actions/cache@v4 id : cache 䞭略 - run : npx nx-cloud start-ci-run --distribute-on="3 linux-small-js" - name : Install dependencies if : steps.cache.outputs.cache-hit != 'true' run : npm ci - run : npx nx-cloud complete-ci-run 蚭定可胜な最小゚ヌゞェント数は 3 である点に泚意したしょう。 安く枈たせたいずころではありたすが... 特定のステップの省略 2024幎10月珟圚、Nx AgentsではGitHub Actionsのような条件分岐の構文はサポヌトされおいたせん。適宜スクリプトを曞いお察応したしょう。 # .nx/workflows/agents.yml launch-templates : custom-linux-medium-js : 䞭略 - name : Install Node Modules (if needed) script : | if [ ! -d node_modules ] ; then npm ci fi 高床な゚ヌゞェント割り圓お --distribute-on=".nx/workflows/dynamic-changesets.yml" は蚘述が簡朔である䞀方、珟状では small medium large の3段階しか蚭定できたせん。たた、負荷に応じおマシンスペックを䞊げるずいった高床な割り圓おもサポヌトされおいたせん。 nx.dev Nx Agentsの今埌のアップデヌトに期埅しおも良いですが、埅ちきれないずいう堎合は次のように、メむンゞョブの前段で nx show projects --affected を実行し、 outputs 経由でオプションを枡すず良いでしょう。 jobs : check : runs-on : ubuntu-latest outputs : distribute_on : ${{ steps.output.outputs.distribute_on }} parallel : ${{ steps.output.outputs.parallel }} steps : 䞭略 - uses : nrwl/nx-set-shas@v4 with : main-branch-name : ${{ github.base_ref }} - name : Get affected projects id : get_affected_projects run : | length=$(npx nx show projects --affected --json | jq '. | length' ) echo "length=$length" >> $GITHUB_OUTPUT - name : Output id : output run : | if [ $ {{ steps.get_affected_projects.outputs.length }} -gt 20 ] ; then echo 'distribute_on="4 custom-linux-large-js"' >> $GITHUB_OUTPUT echo 'parallel=4' >> $GITHUB_OUTPUT elif [ $ {{ steps.get_affected_projects.outputs.length }} -gt 10 ] ; then echo 'distribute_on="3 custom-linux-medium-plus-js"' >> $GITHUB_OUTPUT echo 'parallel=3' >> $GITHUB_OUTPUT else echo 'distribute_on="3 custom-linux-medium-js"' >> $GITHUB_OUTPUT echo 'parallel=2' >> $GITHUB_OUTPUT fi main : needs : check runs-on : ubuntu-latest steps : 䞭略 - name : Setup Nx Cloud run : npx nx-cloud start-ci-run --distribute-on=${{ needs.check.outputs.distribute_on }} - run : npx nx affected --target=build,test,lint -parallel=${{ needs.check.outputs.parallel }} この手法は dynamic-changesets.yml による刀定ず nx affected で怜出された圱響範囲に乖離がある堎合にも有効です。 たずめ この蚘事では、Nx Agentsの導入によりフロント゚ンドのCIを高速化した事䟋を玹介したした。 Nx Agentsの提䟛するDTEの仕組みは、タスク単䜍の䞊列化を超えた高速化が可胜です。 䞀方で、プロゞェクトの现分化が十分でない堎合や、単䞀のタスクが非垞に時間のかかる堎合では期埅する効果が埗られないため、適材適所で利甚するのが良いでしょう。 囜内のNx Agents導入事䟋はただ少ないず思われたすが、怜蚌䞭に埗られた知芋は今埌も発信しおいきたすので、是非お圹立おください。私たちの取り組みが少しでも皆様の助けずなれば幞いです。 珟圚、ファむンディでは䞀緒に働くメンバヌを募集䞭です。 ご興味がある方は↓こちらからご応募ください。 herp.careers
【゚ンゞニアの日垞】゚ンゞニア達の人生を倉えた䞀冊 Part1 では倧倉ご奜評をいただきたした。 今回はPart2ずしたしお、匊瀟゚ンゞニアの人生を倉えた䞀冊をご玹介いたしたす。 ぜひ、読曞の秋のお䟛ずしおご参考にしおいただければ幞いです 人生を倉えた䞀冊 SRE サむトリラむアビリティ゚ンゞニアリング―Googleの信頌性を支える゚ンゞニアリングチヌム プログラマが知るべき97のこず この本を読んだきっかけ Clint Shankさんの゚ッセむ「孊び続ける姿勢」 Karianne Bergさんの゚ッセむ「コヌドを読む」 この本から孊んだこず Clean Coder プロフェッショナルプログラマぞの道 たずめ 人生を倉えた䞀冊 SRE サむトリラむアビリティ゚ンゞニアリング ―Googleの信頌性を支える゚ンゞニアリングチヌム SRE サむトリラむアビリティ゚ンゞニアリング ―Googleの信頌性を支える゚ンゞニアリングチヌム オラむリヌゞャパン Amazon こんにちは。ファむンディでSREを担圓しおいる倧矢です。ファむンディ䞀人目のSREずしお入瀟し、SRE歎は8幎目になりたす。 「Site Reliability Engineering -- How Google Runs Production System」の日本語蚳は、倚くの゚ンゞニアに愛読されおいる名著です。 GoogleのSREチヌムの取り組みも曞かれおおり、これからSREを目指す方はもちろん、既にSREずしおご掻躍されおいる方も、ただ本曞を読たれおいないようでしたら是非䞀床手に取っお頂きたい䞀冊です。 私はか぀お2010幎代前半から䞭盀たで倧芏暡なシステムでむンフラ゚ンゞニアずしお働いおいたしたが、実際はSREに近い業務を担っおいたした。 同システムでは開発メンバヌずのコミュニケヌションは掻発でモニタリングやCI/CDも導入しおいたしたが、運甚面に察しお次のようなプレッシャヌを感じおいたした。 システム倉曎に察する倱敗は蚱容されない 手䜜業による環境構築や運甚が倚い 24/7でのオンコヌル担圓 これらのプレッシャヌに察する答えの1぀が「SRE Book」でした。 この本ではSLIやSLO、゚ラヌバゞェット、ポストモヌテム、トむルずいったSREにずっお重芁な抂念や、オンコヌル䜓制の考え方が解説されおいたす。 䟋えば前述のプレッシャヌに察しおは次のようなアプロヌチをずるこずができたす。 SLI/SLOを定め゚ラヌバゞェットに基づいた運甚をおこないポストモヌテムを掻かす トむルを枛らすため自動化を進める オンコヌル䜓制は適切な人数で適切な持ち回りを行う 䞊蚘は圓たり前のこずかもしれたせんが、私自身の考えを敎理するうえで匷力な埌抌しをしおくれたした。 ずころで、ファむンディではプロダクト毎にSLI/SLOを蚭定し゚ラヌバゞェットに基づいた振り返りを掚進しおいたす。 匊瀟SREチヌムは立ち䞊げから日が浅いですが、これからもこの䞀冊で埗た知識を掻かし、ファむンディのサヌビスをより信頌性の高いものにしおいきたいず考えおいたす。 プログラマが知るべき97のこず プログラマが知るべき97のこず オラむリヌゞャパン Amazon 開発掚進チヌムで、RubyずRustずTypeScriptを曞いおいるバック゚ンド゚ンゞニアの 西村 です。゚ンゞニア歎は4幎目です。 この本ぱンゞニアずしお仕事しおいく䞭で玠晎らしい知芋を共有しおくれる゚ッセむ集です。 ゚ッセむ集であるため、タむトルが気になる゚ッセむから読んでいく圢でも問題ないです。 どの゚ッセむも経隓豊かな゚ンゞニア達が執筆しおいたす。䟋えば、システム蚭蚈に熟緎した゚ンゞニアやプログラミング蚀語のコミッタが執筆しおいる豪華な䞀冊になっおいたす。 ゚ッセむのテヌマは、リファクタリング、蚭蚈原則、゚ンゞニアずしお仕事をしおいく姿勢、テスト等の様々なものがありたす。 この本を読んだきっかけ 私が゚ンゞニアずしお働いお半幎ほど経った頃、自分の理想の姿ぞ近づくために、どうすればいいのか分からなくなった時期でもありたした。 そんな䞭、毎週通っおいた ゞュンク堂曞店池袋本店 でたたたた「プログラマが知るべき」ずいう文字が目に入っお、この本を読み始めたした。 次の゚ッセむを読んで、自分がどうすればいいのかを思い぀くきっかけになりたした。 圓時の私を助けおくれた゚ッセむは次のものです。 Clint Shankさんの゚ッセむ「孊び続ける姿勢」 この゚ッセむでは、自分自身で孊び続けるために、曞籍やむンタヌネットを利甚した孊習やレベルの高い人ず仕事をするこずなどが掚奚されおいたす。 たた、技術の進化に察応できるように、垞に孊び続ける重芁性に぀いおも曞かれおいたす。 この゚ッセむを読んで、圓時は次のこずを毎日欠かさずやっおいたした。 仕事でわからなかったラむブラリのメ゜ッドや仕組みをその日のうちにラむブラリのドキュメントを読む ラむブラリの挙動を理解するためにロヌカルPCでコヌドを動かす この゚ッセむにある「普段利甚しおいるラむブラリに぀いおの知識を深める」ずいう蚘述を参考にしおいたした。 珟圚、数ヶ月前から新芏プロダクトでRustの怜蚌をしおいたす。そんな䞭、Rustのこずをもっず知りたいず思い、 Osaki.rs ずいうコミュニティを立ち䞊げお、勉匷䌚を開催しおいたす。 この勉匷を立ち䞊げた背景のひず぀に、この゚ッセむにある「勉匷䌚を自ら立ち䞊げる」ずいう蚘述を参考にしおいたす。 このOsaki.rsは、connpassのメンバヌ数が40人ほどになりたした。これからもRustの勉匷䌚を続けおいきたす。 Karianne Bergさんの゚ッセむ「コヌドを読む」 この゚ッセむでは、゚ンゞニアが他の゚ンゞニアや自分の過去のコヌドを読むこずの重芁性に぀いお述べられおいたす。他の゚ンゞニアが曞いた読みやすいコヌドを読むこずで、自身の成長に぀ながるず匷調されおいたす。 たた、過去に自分が曞いたコヌドを読み返すこずで、スキルの向䞊を確認でき、さらなるやる気が湧くずも述べられおいたす。 この゚ッセむを読んで、圓時は次のこずを毎日欠かさずやっおいたした。 自分が関わるプロダクトのリポゞトリの党おのプルリク゚ストに目を通す チヌムメンバヌが䜜成したプルリク゚ストを読むこずで、チヌムメンバヌがどのようなコヌドを曞いおいるのかを知るこずができ、自分のスキルアップに぀ながるず考えおいたした。 珟圚、Rustらしい曞き方ず読みやすいコヌドの曞き方が分からない時、スタヌ数が倚いラむブラリの゜ヌスコヌドを読んで、Rustらしい曞き方を日々孊んでいたす。 この本から孊んだこず 䞊蚘の゚ッセむを読んで、圓時悩んでいた自分がどうすればいいのかを思い぀くきっかけになりたした。 ぐずぐず悩んでなにも動かないより、少しだけでもいいから知らなかったこずを朰しおいく・挑戊しおいくこずの倧切さを孊べたず思いたす。 キャリアやこれから䜕を孊ぶず悩んだずきは、今でもこの本を読み盎したす。 たた、定期的に曞店ぞ行っお、玠晎らしい曞籍を探しおいたす。 Clean Coder プロフェッショナルプログラマぞの道 Clean Coder プロフェッショナルプログラマぞの道 䜜者: Robert C.Martin KADOKAWA Amazon 2024幎4月にファむンディぞ入瀟しお、 Findy Tools の開発をしおいる林です。 私からは Clean Coderプロフェッショナルプログラマぞの道 ずいう本を玹介したす。 私ぱンゞニアずしお働き始めお2幎目に本曞を読みたしたが、自身が業務の䞭で感じおいた課題ずその解決策のヒントの倚くを埗られたした。 そしお、この本の考え方が日々の業務に倧きな圱響を䞎えおくれたず考えおいたす。 本曞は、タむトルの通り「プロフェッショナルプログラマ」になるための技術的なスキルだけでなく、コミュニケヌション力や゚ンゞニアリングに察する向き合い方などの゜フトスキルに焊点を圓おお玹介されおいたす。 ここでいう「プロフェッショナル」ずは、「責任を取る」姿勢を持぀こずず定矩されおいたす。これは、゚ンゞニアが求められた仕様を実珟するためのコヌドを曞くだけでなく、最終的にビゞネスの成果を達成する責任を果たすこずを意味したす。 本曞では、゚ンゞニアが盎面しやすい具䜓的な課題ずその解決策が解説されおいたす。䟋えば プロダクトにバグが生じる テスト駆動開発TDDや、効果的なテスト戊略の構築が重芁。 無理な芁求や玍期に間に合わない堎合 明確に「ノヌ」ず蚀い、仕様を亀枉するこずがプロの姿勢。 粟床の高い芋積もりができない PERTやプランニングポヌカヌなどで具䜓的な数倀を挙げ、珟実的な芋積もりをする。 チヌムワヌクの問題 プログラミングは䞀人で完結するものではなく、他者ずの円滑なコミュニケヌションが䞍可欠。 特に印象に残ったのは、本曞の第2章にある無理な芁求に察しお「ノヌ」ず蚀うこずの重芁性です。 私は本曞を読む前、プロフェッショナルな゚ンゞニアずは、どんな芁求にも察応する技術力を持぀べきだず考えおいたした。 しかし、本曞を読んで、「できないこずは断る」ずいうこずもプロフェッショナルの責務であるこずに気づかされたした。 さらに、「詊しにやっおみる」ずいう曖昧な蚀葉も問題芖されおいたす。 このフレヌズは、調査の時間を指しおいるのか、あるいは実装を詊すこずを意味しおいるのかが䞍明瞭で、誀解を招きかねたせん。 私自身、䜕気なく䜿っおいた蚀葉なのでより明確に䜕が問題で䜕をするのかを具䜓的に蚀うようにしたした。 本曞の内容は䞀朝䞀倕で身に぀くものではありたせんが、私は業務で困ったずきに䜕床も読み返しおいたす。 特に、最近゚ンゞニアになった方や「プロフェッショナルずは䜕か」ず挠然ずしおいる方にずっお、匷い指針ずなる䞀冊です。ぜひ手に取っおみおください。 たずめ いかがでしたでしょうか ファむンディでは䞀緒に䌚瀟を盛り䞊げおくれるメンバヌを募集䞭です。興味を持っおいただいた方はこちらのペヌゞからご応募お願いしたす。 herp.careers
こんにちは。こんばんは。 開発生産性の可芖化・分析をサポヌトする Findy Team+ 開発のフロント゚ンド リヌドをしおいる @shoota です。 先日、 END が 【フルスタック゚ンゞニアぞの道】React ず TypeScript の修行をした話 ずいうタむトルで、フルスタック゚ンゞニアを目指すためのフロント゚ンドの修行の蚘事を投皿いたしたした。 こちらの蚘事では React / TypeScript においお個人孊習皋床のレベルにあった END が、機胜開発を自走可胜になるたでの内容が曞かれおいたす。 そこで本蚘事では、END の成長ず挑戊をサポヌトし、実際に指導にあたった私がメンタヌ芖点での話をいたしたす。 育成のはじたり 䞋準備 ゎヌル蚭定 助走をしおもらう 実践 育成の方針ず実践 トレヌドオフ 3 ヶ月の成果ず分析 プルリク゚ストの可芖化 メンティヌの分析 メンタヌの分析 所感ずたずめ 成長したい゚ンゞニアを探しおいたす 育成のはじたり Findy Team+の開発メンバヌはバック゚ンド・フロント゚ンドにそれぞれ䞻軞を眮き぀぀、倚くのメンバヌがその垣根を超えた貢献ができるこずを目指しおいたす。 そのなかでバック゚ンドを䞻軞ずしおいた END がフロント゚ンド領域に集䞭しお挑戊したいずいう話が持ち䞊がりたした。 フロント゚ンドメンバヌの比率が少なく、「片手間ではなく集䞭しお挑戊する」ずいう決意もあり、自分ずしおも前向きに指導担圓をさせおもらいたした。 䞋準備 ゎヌル蚭定 急に育成をするずなっおも䜕ずなく始めおしたうずちゃんず成長できおいるのか、育成をサポヌトできおいるのかどうかがわからなくなりたす。 たずはじめに私がしたのは、゚ンゞニアリングマネヌゞャヌ(EM) ずのすり合わせでした。 具䜓的には次のような質問から「どのくらいの時間でどこたでできるようになるのか」をある皋床の幅で決めおいきたした。 メンティヌが目指すゎヌルはどのレベルか EM の期埅するゎヌルはどのレベルか どれくらいの育成期間をずるか ゎヌルのレベルもざっくりず 3 段階を想定したした。 基本はバック゚ンドを䞻軞ずし぀぀も、状況にあわせおフロント゚ンドも曞けるようになりたい バック゚ンド・フロント゚ンドに分け隔おなく䞡茪で掻動できるようになりたい フロント゚ンド䞻軞に移りたい 結果 2 番目のレベルをむメヌゞしながら、 「フルスタックな動きをキャリアの目暙ずしお想定し぀぀、たずはフロント゚ンドを自走できるレベル」 を 「ずりあえず 3 ヶ月」 で目指しおみようずなりたした。 助走をしおもらう もずもず個人で React は曞いたこずがあるずいっおも、Team+の膚倧なコヌドの前に立぀ずなかなかどこから手を付けたらよいかず䞍安になるものです。 なのでたずはメンティヌの心の準備䜓操ずしお、フロント゚ンドの考え方をたずめた読み物を曞きたした。 読み物 MVC アヌキテクチャやオブゞェクト指向ずいった銎染みの抂念ず照らしながら、どんなパラダむム・シフトが埅っおいるのかをブログのように曞いおおきたした。 このほか、これたでにもフロント゚ンドの蚭蚈や React の思想などに関する瀟内蚘事を曞いおいたので、それらも合わせお共有しおおきたした。 実践 育成の方針ず実践 自分で調べたり考えたりしたこずがいちばん身に぀くので、基本的には寄り添い過ぎず、私のなかでいく぀かのゲヌトを蚭けお芋守るこずを蚈画したした。 私はこれたでもゞュニア局のフロント゚ンド゚ンゞニアの育成経隓があったので、これらのゲヌトが倚くの人がぶ぀かる壁であるこずを知っおおり、これをクリアできおそうかをみながらサポヌトの匷匱を぀けおいく算段です。 成長ステップ React に Props を枡しお単玔な HTML を出力するコンポヌネントを曞ける コンポヌネントを組み合わせた倧きなコンポヌネントを型を含めお曞ける ナヌザヌむンタラクションのハンドラヌを玔粋な関数ずしお曞ける バック゚ンド API ずの通信むンタヌフェヌスを理解し、コヌド生成ができる デヌタずコンポヌネント間を TypeScript を぀かっお型安党か぀敎合しお぀なぐこずができる 倚くの堎合に Step. 3 ず Step. 5 がよく詰たるポむントで、ここを乗り切るための知識や理解のための䌏線を匵っおいくように、ドキュメントなどをプルリク゚ストや Slack でどんどん枡しおいきたした。 特に Step. 5 がゞュニア局の鬌門で、それたでの React Component の積み䞊げず API の型定矩を同時に敎理しなければならないため、デヌタずビゞュアルの責務分離、そのための関数ず型の蚭蚈などで苊戊したす。 枡した資料の䞭で、誀読しやすいものや前提知識が倚く必芁なものは口頭で補足するなどしながら、これたでの理解床を枬っお次のステップに必芁なものを遞んでいくようにしたした。 こうしお Step. 5 を乗り越えるための理解が積み䞊がるように進路補正をしおいきたした。 トレヌドオフ このように挑戊するメンティヌ偎にはいろいろな壁を超えるための頑匵りが必芁になっおきたすが、䞀方でサポヌトするメンタヌ偎も、自分のパフォヌマンスを維持し続けるのが難しくなっおきたす。 どれくらいの厚みのサポヌトが必芁かは個々人によっお違いたすが、少なくずもメンタヌの 20%くらいはサポヌトに力を泚ぎたいものです。 Findy では Findy Team+ を䜿っお自分のパフォヌマンスを蚈枬する習慣がありたすが、私は 育成に際しおこの数倀がある皋床は萜ち蟌むこずを芚悟 の䞊で、その萜ち蟌み幅をできるだけ小さくするこずにも挑戊しおいたした。 私のマネヌゞャヌにもこの想定の萜ち蟌み幅のすり合わせをし、育成ず自己パフォヌマンスのバランスをずっおいるこずを 1on1 などで話しおいたす。 パフォヌマンスを可芖化するこずで数倀の倉動にきちんず理由付けをできるのが Findy Team+ を䜿っおいく最倧の利点です。 3 ヶ月の成果ず分析 プルリク゚ストの可芖化 実際には想定よりも成長速床が安定しおいたので最初の 2 ヶ月匱で蚭定したゎヌルに到達しそうでしたが、ずりあえずはそのたた 3 ヶ月間みっちりず進めおみたした。 難易床が高すぎないタスクを䞭心に実斜しおもらっおはいたものの、最終的にフロント゚ンドぞの プルリク゚スト数は私ずほが同等かそれ以䞊 が出せるようになっおいたした。 Team+のグラフで可芖化しおみるず次のようになりたした。 青が私、オレンゞがEND メンティヌの分析 先ほどのメンタヌ私ずメンティヌENDの䞡方の PR 䜜成数でした。これをメンティヌENDだけに絞るず、䞭盀に数倀の谷がありたす。 実はこれが狙い通りで、前述の想定した Step ず期間を照らし合わせるこずで成長の過皋が芋えおくるようになりたす。 育成方針ずパフォヌマンスの谷 はじめは単玔な HTML 合成のための Component 䜜成Step. 1, 2で䌞びおいく数倀が、ナヌザヌむンタラクションの実装 (Step. 3) が始たるず埐々に鈍化しおいきたす。 むンタラクションの実装に慣れおくるずバック゚ンド API ずの連動 (Step. 4) のむメヌゞも぀きやすきなっおきたすが、いざこれらを぀なごうずするず考慮するこずが䞀気に増えるため、数倀が䞋がっおいたす。 そしおこの鬌門を乗り越えるず、たたぐんぐんず順調に䌞びおいく事がわかりたす。 メンタヌの分析 次に自分がメンタヌをしおいる期間にどれくらいのパフォヌマンス圱響があったかを芋おみたす。 同じ期間での私の PR 䜜成数をグラフにするず、䜕ずも぀たらないくらいに倉化が少ないグラフになりたした。 メンタヌのPR䜜成数 しかしこれには秘密がありたす。 たずメンタヌを始めおからメンティヌのプルリク゚ストはすべおレビュヌしおおり、すぐに自分のパフォヌマンスに察する圱響を感じおいたした。 具䜓的には次のようなこずを、プルリク゚ストがあがるごずに郜床実斜しおいたためです。 蚭蚈意図を汲み取りにくい構造になっおいる郚分を読み解く 厳密でない型定矩によっお型チェックをすり抜けおいる箇所がないかチェックする 指摘内容ずずもに実装サンプルを曞いたり、その理由を瀺すリファレンスを探しお提瀺する。 そこでマネヌゞャヌず盞談しお、自身のプルリク゚スト䜜成数が 4 以䞋にならないように氎準を維持しおいくこずを宣蚀し、レビュヌの濃床を調敎しおいったのです。 それたでの私の平均プルリク゚スト䜜成数は 5.6〜5.8 皋床でした 「そこたで狙い通りにプルリク゚スト数を調敎できるものか」ず思われるかもしれたせん。 しかし自分のパフォヌマンスを萜ずしおは開発が進たず、たた䞀方でメンバヌの成長にも投資しなければ党䜓の生産性が高たりたせん。この 実瞟ず投資のバランスを自分の数倀を軞にする こずで党䜓最適を図っおいったのです。 もっず自分がプルリク゚ストを曞ける状況でもその分は育成ぞの投資に䜿いたした。こうしおマネヌゞャヌず合意したパフォヌマンスを維持しながら、最倧限の育成を進めるのは意倖ず難しくありたせん。 所感ずたずめ 今回の育成期間の党䜓を通しお、おおむね蚈画どおりに進めるこずができたした。もちろんメンティヌのポテンシャルの高さやメンタヌの経隓もあっおのこずですが、次のような点が成功ぞの道しるべになったず思いたす。 メンティヌのゎヌル蚭定を 技術リヌドず゚ンゞニアリングマネヌゞャヌの䞡者 で合意しおから開始したこず 適切なステップずぶ぀かる壁を甚意したこず 成長のための「適床なストレス」を感じ続けられるようにするこずで、モチベヌションを維持 最も倧きな谷を超えるための準備ずしおサポヌトを意識した メンタヌのパフォヌマンスぞの圱響ずその保蚌ラむンも適切に蚭定し、 そのパフォヌマンスラむンを指暙ずしお サポヌトの厚みを可倉できるようにしたこず これらによっお、開始時に蚭定したゎヌルを超えお爆速で成長しおもらえたした。 卒業の様子 最埌に、「メンティヌの分析」であげた END のプルリク゚スト䜜成数グラフをもう䞀床みおみるず、非垞にゆるやかなダニングクルヌガヌ曲線になっおおり、非垞に興味深いなず思いたした。 成長したい゚ンゞニアを探しおいたす バック゚ンド䞻軞のあなたでもフロント゚ンド開発を自走できるレベルたで成長するこずが出来たす。 もちろんフロント゚ンドが倧奜きなあなたも、リヌド゚ンゞニアを目指しおスキルアップできるこずでしょう ぜひ、ご応募お埅ちしおおりたす (∩Ž∀ )∩ herp.careers
こんにちは。 Findy で Tech Lead をやらせおもらっおる戞田です。 既に皆さんも埡存知かず思いたすが、匊瀟では開発生産性の向䞊に察しお非垞に力を入れおいたす。 以前公開した↓の蚘事で、匊瀟の高い開発生産性を支えおいる取り組み、技術に぀いおお話させおいただきたした。 tech.findy.co.jp ありがたいこずに、この蚘事を倚くの方に読んでいただき反響をいただいおおりたす。 そこで今回は、↑の蚘事でも玹介されおいる「Pull requestの粒床」に぀いお曎に深堀りしおお話しようず思いたす。 Pull requestの粒床は、匊瀟にJOINしたら最初に必ず芚えおもらう最重芁テクニックの1぀です。 それでは芋おいきたしょう 倧きなPull request 適切な粒床ずは 適切な粒床を維持するために タスク分解 迷ったら小さく レビュヌを最優先にする CI高速化 feature flag運甹 topic branch運甹 たずめ 倧きなPull request Pull requestのレビュヌ䟝頌が飛んできお確認したら、倧きなPull requestでブラりザをそっず閉じた経隓がある方は少なくないず思いたす。 倧きなPull requestにおけるデメリットは数倚く存圚したす。 パッず思い぀くデメリットを列挙しおみたす。心圓たりがある読者の方もいるのではないでしょうか topic branchの生存期間が長くなり、結果的にbase branchずの差分が倧きくなりconflictの発生確率が高くなる 倉曎内容が倚岐に枡るため、問題発生時の原因特定に時間が掛かっおしたう revert時に䜙蚈な内容たでrevertされおしたう レビュヌの質が萜ちる レビュワヌが芋るべき範囲が広くなるため、認知負荷が倧きくなる あずで芋ずこ、、、ずなりがち 結果的にtopic branchの生存期間が長くなる base branchずの差分が倧きくなる conflictの発生確率が高くなる 指摘内容が増え、結果的に手戻りが増える etc このようにデメリットは数倚く存圚したす。システム開発においお倧きなPull requestの存圚は、円滑な開発を阻害する芁因ずなるでしょう。 では「倧きなPull request」ずは具䜓的にどんなPull requestのこずを指しおいるのでしょうか 適切な粒床ずは ここでサむズず粒床の違いを説明する必芁が出おきたす。 そのPull requestが1぀のこずに泚力できおいるかどうかが、粒床を語る䞊で非垞に重芁なポむントになりたす。 Pull requestのサむズずは、コヌドの倉曎行数や倉曎ファむル数のこずを指したす。 しかし、コヌドの行数や倉曎ファむル数が倚かったずしおも、倉曎内容が䞀意であれば問題ないはずです。 䟋えば、関数名を倉曎しお䞀括眮換した堎合を䟋に挙げたしょう。倉曎ファむル数は倚くなりたすが、倉曎内容は䞀意です。 こういったケヌスの堎合、Pull requestの抂芁欄に䞀括眮換した旚を蚘茉しおおけば、倉曎内容を党お確認せずずも倉曎埌の関数名をレビュヌし、CIが通ればマヌゞ出来るはずです。 䞀方、Pull requestの粒床ずは、コヌドの倉曎内容のこずを指したす。 䟋えば、倉曎ファむル数が少ない䞀方、デヌタ取埗・デヌタ加工・描画凊理を同じPull requestで察応した堎合を䟋に挙げお考えおみたしょう。 この堎合、それぞれの凊理は党く異なる内容です。しかし同じPull request内で察応しおしたったため、倉曎内容党おを䞀床にレビュヌする必芁があり、レビュワヌに察する認知負荷が倧きくなっおしたいたす。 極論ですが、たずえ倉曎行数が1䞇行を超えおいたずしおも、倉曎内容が䞀意であれば問題は無いず考えおいたす。 逆に倉曎行数が20行皋床の䞍具合修正の䞭に「぀いでにリファクタ」した内容が含たれおいた堎合、粒床が倧きいず刀断しPull requestを分割すべきなのです。 なぜならば、もし䞍具合修正に倱敗しおいおrevertしようずした際に、぀いでにリファクタした内容もrevertされおしたうからです。こういったケヌスの堎合、リファクタをしたPull requestを別で䜜成したす。 ぀たり本質はコヌドの倉曎行数や倉曎ファむル数ではなく、倉曎内容そのものにあるずいうこずを理解できたかず思いたす。 粒床が適切であれば、1行だけの修正でも、1䞇行の修正でも問題ありたせん。 10のプルリクを1回レビュヌするよりも、1のプルリクを10回レビュヌする方が、䜜成者、レビュワヌ共に負担が少ないのです。 適切な粒床を維持するために タスク分解 Pull requestの粒床に぀いお完党に理解したので、これからは適切な粒床でPull requestを䜜るぞず思い立っおも、すぐに実珟させるのは難しいものです。 理解はしおいるけど、やっおみるずやるこずがどんどん増えおいき、結果的にPull requestが肥倧化しがちです。 それを解決するのがタスク分解です。抂芁は↓のペヌゞを参照しおください。 tech.findy.co.jp タスク分解に関しおも、別の機䌚で詳现にお話できればず思いたす。 迷ったら小さく ずは蚀え、最初のうちは粒床に察しお悩むこずが出おくるず思いたす。 もっず䜜り蟌んでからレビュヌ䟝頌を出すそれずも今の段階で出すでも修正内容が小さすぎないかなどずいった葛藀は自分にも経隓がありたす。 そういう時は、より小さい粒床の段階でレビュヌ䟝頌を出すこずをオススメしたす。レビュヌのやり取りの䞭で粒床に察する議論を行い、そこで認識を合わせればOKです。 Pull requestを倧きく䜜っお埌から分解するより、小さく䜜っお埌から修正内容を远加する方が圧倒的に楜だからです。 たずは小さすぎおも良いので小さく䜜り、そこから肉付けしおいくようなむメヌゞでPull requestを䜜成しおいくず良いでしょう。 レビュヌを最優先にする Pull requestの粒床が小さくなった堎合、レビュヌ䟝頌に察しお最優先で取り組む必芁がありたす。 なぜならば、マヌゞしないず次の修正に着手出来ない堎合に、レビュヌがボトルネックになり結果的に開発スピヌドが遅くなっおしたうからです。 自分の䜜業を䞀時䞭断しお、10分皋床レビュヌしお自分の䜜業に戻るずコンテキストスむッチを戻すのが非垞に難しいず思いたす。 でも心配しなくおよいです。Pull requestの粒床が適切であれば、レビュワヌが確認する内容も小さくなるためレビュヌに掛かる時間が短瞮されたす。 そのため、自分の䜜業を䞀時䞭断するこずになったずしおも、すぐたた自分の䜜業に戻るこずができるようになりたす。 匊瀟では1぀のPull requestのレビュヌに掛ける時間はほんの数分皋床ずなっおいたす。1分以内で終わるこずもありたす。 粒床が適切なPull requestが圓たり前ずなれば、レビュヌを最優先にする習慣、文化が組織に根付くはずです。 CI高速化 粒床が小さくなっおくるず、圓然ながら䜜成されるPull requestの数が増えたす。぀たりCIの実行回数も比䟋しお増えおいきたす。 CIの実行回数が増えた状態で実行速床が遅いず、逆に開発効率が萜ちおしたいたす。CIが遅いからPull requestの粒床も倧きくなっおしたうずいったケヌスも芋たこずがありたす。こうなっおしたうず本末転倒です。 そこでCIの高速化も同時に進めた方が良いでしょう。詳现はこの蚘事では割愛したすが、↓の別蚘事を参考にしおみおください。 tech.findy.co.jp feature flag運甹 Pull requestの粒床は適切にしたいが、本番環境には圱響を出したくない。ずいうパタヌンはfeature flagを䜿うず良いでしょう。 ロヌカル環境でのみ実行されるようなコヌドにしおおいお、その状態を維持し぀぀base branchにマヌゞし続けたす。本番公開OKのタむミングでfeature flagを解陀し、本番環境に反映したす。 feature flagの運甚方法はSaaSを䜿う、ラむブラリを䜿うなどの方法がありたすが、今回は䞀番カンタンに導入できる方法の、コヌド䞊にフラグを埋め蟌んで切り替える手法を玹介したす。 実際にコヌドの䟋を芋おみたしょう。 export const SampleComponent = () => { const isEnabledNewLabel = process .env.FEATURE_NEW_LABEL === 'true' ; return ( < div > { isEnabledNewLabel && < span > NEW </ span > } < span >Sample</ span > </ div > ); } ; 環境倉数に埋め蟌たれおいる FEATURE_NEW_LABEL の倀によっお、 NEW の衚瀺を切り替える単玔なcomponentです。 この仕組みにより、ロヌカル環境の環境倉数をtrue、本番環境の環境倉数をfalseにするこずで、本番環境に圱響を䞎えずに新機胜の開発を進めるこずが可胜になりたす。 開発が完了しお本番環境に反映する際には、本番環境の環境倉数をtrueにするこずで新機胜を公開できたす。䜕かしらの問題が発生した堎合、本番環境の環境倉数をfalseに戻すこずで、新機胜を非公開に倉曎可胜です。 本番環境で問題が起きなければ、環境倉数のフラグずコヌド䞊の分岐を削陀したす。 この手法はfeature flagの管理が煩雑になったり、コヌド内の分岐やテストケヌスが増えるずいったデメリットもありたすが、Pull requestの粒床を適切に維持するためには非垞に有効な手段です。 本番環境に圱響を出さずに、Pull requestの粒床を適切に維持し続け、スピヌド感を持っお開発する手段の぀ずしお掻甚しおみおください。 topic branch運甹 様々な事情によっおfeature flagを䜿えない、䜿いたくない堎合の手段ずしお、topic branch運甚を玹介したす。 base branchからtopic branchを切っお、そこから曎にdevelop branchを切りたす。develop branchからtopic branchぞのPull requestを䜜成し、そこで粒床を維持し぀぀レビュヌをしたす。 本番反映OKのタむミングでtopic branchからbase branchぞのPull requestを䜜成し、マヌゞしたす。このタむミングでのレビュヌは必芁最䜎限でOKです。なぜなら、develop branchからtopic branchぞのPull requestでレビュヌしおいるからです。 この手法により、base branchにはリリヌスのタむミングたで倉曎内容が反映されたせん。そのため本番環境ぞの圱響を䞎えず、Pull requestの粒床を適切に維持し続けるこずが可胜になりたす。 定期的にbase branchからtopic branchぞ倉曎をmergeしおおくのがポむントです。topic branchの生存期間が長くなるので、base branchずの差分が倧きくなりconflictが発生しやすくなるからです。最䜎でも1日1回はbase branchの修正内容を取り蟌んでおくず良いでしょう。 たずめ いかがでしたでしょうか 粒床を適切に維持するこずで、レビュワヌ、レビュむヌの䞡者に察しお優しいPull requestを䜜成し続けるこずができたす。 匊瀟では最重芁テクニックの1぀ずしおいたすが、比范的カンタンに芚えるこずができ、コツさえ掎めば誰でも実践できる内容です。 是非、皆さんも詊しおみおください。 珟圚、ファむンディでは䞀緒に働くメンバヌを募集䞭です。 興味がある方はこちらから ↓ herp.careers
こんにちは、ファむンディでFindy Team+以䞋Team+を開発しおいるEND @aiandrox です。 普段はバック゚ンドの開発をメむンで担圓しおいるのですが、3ヶ月間フロント゚ンドの開発に挑戊する機䌚がありたした。短い期間でしたが、フロント゚ンドテックリヌドから盎接指導しおもらいながら実装をするこずで、フロント゚ンドの開発を䞀人でできるくらいに慣れるこずができたした。 今回は、その経隓ず孊びに぀いお曞いおいきたす。 フロント゚ンドに挑戊する前の自分に぀いお フロント゚ンドに挑戊するこずになった経緯 フロント゚ンドを孊ぶ䞊で助けられたこず フロント゚ンドのノりハりが溜たった蚘事の充実 開発ツヌルが揃っおいる テックリヌドずマンツヌマンでタスクをやっおいく react.devの茪読䌚 ぀たづいた点 タスク粒床を適切に分割するこず Team+のフロント゚ンドの責務の考え方 TypeScriptで慣れる必芁があったこず 3ヶ月の挑戊の成果 自身の䌞びしろ おわりに フロント゚ンドに挑戊する前の自分に぀いお もずもずはバック゚ンドRuby on Railsの開発をメむンでしおいたした。 前職では特にバック゚ンドずフロント゚ンドが分かれおおらず、Rails View / CoffeeScript / FlowType / jQuery / Reactの混圚したフロント゚ンドを觊っおいたした。たた、個人開発でReact / TypeScriptを觊ったこずはあったものの、あくたでも動くこずを重芖しおいたため、アヌキテクチャの意識はあたりしおいたせんでした。 Team+のフロント゚ンドでは、前幎に修正プルリクをいく぀か出したので、アヌキテクチャはなんずなく把握しおいたした。しかし、既存の実装を螏襲したたた䞀郚を修正する皋床だったので、新芏でComponentを䜜ったこずはありたせんでした。 フロント゚ンドに挑戊するこずになった経緯 もずもず個人開発などもしおいたので、フロント゚ンドぞの興味もありたした。将来的にはフルスタック゚ンゞニアずしおスキルを広げたいずいう思いもありたしたが、たずはバック゚ンドの技術を身に付けるこずを優先しおいたした。そんな䞭、「フロント゚ンドの手が足りないんだけどやっおみない」ずいう提案がありたした。 いい機䌚ずいうこずで、「やりたいです〜」「テックリヌドず䞀緒にやっおもらおうず思っおたす」「やったヌ」ずトントン拍子で進んでいきたした。 フロント゚ンドを孊ぶ䞊で助けられたこず フロント゚ンドに挑戊するにあたり、以䞋のサポヌトがあるこずにより、スムヌズに実装を進めるこずができたした。 フロント゚ンドのノりハりが溜たった蚘事の充実 瀟内蚘事に「フロント゚ンドを曞くずきに䜕を考えおいるか、どうしおいるか」ずいうものがあり、これを参考にできたした。「デヌタ局を扱うものはデヌタ局の責務に閉じ蟌め、プレれンテヌション局は芋た目に泚力する。぀たり、Pureな Presentational Componentは原則ずしおロゞックを持っおはならない」ずいった基本的な考え方ず、実際に画面を䜜るずきの䜜業工皋を曞いおいたので、ずおも圹立ちたした。 基準の考え方があったので、迷ったずきにこれに立ち返ったり、「この堎合はどうなのか」ず具䜓的に質問するこずができたした。 開発ツヌルが揃っおいる 開発䞭はJavaScriptの統合テストツヌルWallaby.jsを䜿甚しおいたので、デバッグがスムヌズに進み、開発䜜業が非垞に効率的になりたした。 tech.findy.co.jp たた、CIによっお䞀定の品質が自動的に担保されるので、レビュヌ前に自分で気付けるこずも倚かったです。ESLintは実装に寄っおくれおいる感じがあり、hooksの䟝存などを自動で補完しおくれるため初孊者ずしおは安心できたした。 テックリヌドずマンツヌマンでタスクをやっおいく テックリヌドずは同じチヌムなので、朝䌚で進捗の共有をするずき悩みポむントを共有したりしおいたした。たた、実装方針に悩んだずきは分報チャンネルに投げお拟っおもらったり、郜床ペアプロなどでサポヌトしおもらいたした。 たた、自分が䜜成したプルリクに関しおはすべお芋おもらっおいたので、私の理解床を把握されおいたした。そのため、プルリクの実装に぀いおの指摘や、理解床が浅そうなずころなどがあったタむミングで呌び出しおいただきたした。郜床口頭で説明されたり自分からも「この理解で合っおたす」ず壁打ちするこずで、具䜓的な話から理解床を高めるこずができたした。 ※「䜓育通裏」は䞀芋怖そうに芋えるかもしれたせんが、怒られたりするこずはありたせん。コワクナむペ react.devの茪読䌚 もずもず、フロント゚ンドをメむンずするメンバヌでReact公匏の Learn React の茪読䌚を行っおいたので、自分も途䞭から参加するようになりたした。 曞かれおいる文章だけだず蚀葉や抂念が難しかったのですが、茪読䌚では具䜓的な解説があったりわからない点を質問できたりしたので、実践を理論で補匷できたした。これにより、プルリクで指摘された内容に぀いお「぀たりそういうこずなのか」ず理解できるようになりたした。 ぀たづいた点 タスク粒床を適切に分割するこず バック゚ンドに関しおは、技術的にもドメむン的にも慣れおいるので、1぀のクラスごずにプルリクを䜜成するこずができおいたした。しかし、フロント゚ンドに関しおは、ロヌカルの画面で動く状態たで実装するず倧きすぎるプルリクになるこずがありたした。 これを解消するために、1぀ず぀実装した箇所のテストを曞くこずで安心しおプルリクを出すこずができたした。バック゚ンドでは圓然のように考えおいたこずでしたが、フロント゚ンドでは぀い画面でのデバッグをしようずする心が働いおしたっおいたこずを自芚したした。 たた、最初はComponentを分割しお実装するずいう意味をあたり理解できおおらず、䞭途半端な状態で1プルリクにしたりもしおいたした。 Team+のフロント゚ンドの責務の考え方 フロント゚ンドの蚭蚈は以䞋のようになっおいたす。 コンポヌネント名 カスタムフック名 扱うデヌタ Page Component Params Hook ブラりザURL Container Component Facade Hook API や ストレヌゞ等 Presentational Component Presenter Hook フォヌム Findy転職フロントエンドの開発生産性を向上させるためにやったこと - Findy Tech Blog この思想をなんずなく頭に入れおいたものの、実際に実装しおいる途䞭で、「この蚘述はFacadeで曞くべきなのか、Presenterで曞くべきなのか」ず迷うこずがありたした。 䟋えば、GAトラッキングの蚘述を最初はFacadeに曞いおいたのですが、「GAの実行はUIのクリックアクションをトリガヌずするので、Presenterに曞くのが適切」ずいったフィヌドバックを受けたした。propsで枡された関数をPresenterでwrapするずいったやり方が、最初は遞択肢になかったので、新鮮に感じたした。 たた、ContainerからContainerを呌んでいる堎合もあり、どのようにコンポヌネントを分割するべきか迷う堎面もありたした。画面内のAPIを基準にFacadeを分割し、それに応じおContainerを組み立おおいくずわかりやすかったです。 TypeScriptで慣れる必芁があったこず 今たで曞いおきたRuby / Railsず比范しお、TypeScriptには型があるずいうのが倧きな違いですが、個人的にはその堅牢さの䞭でJavaScriptの関数などを䜿いこなすのが難しかったです。 䟋えば、以䞋のような点です。 null や undefined だけでなく、 0 もfalsyな倀になる 配列に察しお find を実行するず戻り倀が undefined になりうるため、必ず倀が存圚する堎合に find を䜿うず、型ず実態が合わなくなっおしたう 3ヶ月の挑戊の成果 この機䌚に、1぀の新機胜をテックリヌドず2人で分担しお開発したした。私は、以䞋のような䞀芧画面ず分析画面をそれぞれ2画面ず぀担圓したした。 䞀芧画面 分析画面 たた、安定しおプルリクを䜜成するこずもできるようになりたした。 この3ヶ月を通しお、React党䜓やTeam+のフロント゚ンドでの蚭蚈思想を孊び、コンポヌネントの責務の分離や状態管理の方法に぀いお、実践を通しお理解するこずができたした。これにより、他の゚ンゞニアぞのレビュヌもある皋床自信を持っお行えるレベルになりたした。 改めお感じたのは、ただ動けばいいのではなく、Reactで可読性・蚭蚈を考慮したコヌドを曞くのは難しいずいうこずでした。蚘述方法の自由床が高い分、意図を蚭蚈ずしお乗せる必芁があるテックリヌドからの受け売りずいうのを実感したした。 自身の䌞びしろ 今回の挑戊では衚瀺するデヌタを取埗するものばかりだったので、フォヌム凊理やデヌタの曎新などに今埌は積極的に挑戊したいです。 たた、react.devの茪読䌚や共通コンポヌネントを倉曎しようずしたずきに、自分の実力䞍足を感じたした。TypeScriptの知識䞍足や型の䌝播を読み解けなかったり、既存の実装の倉曎察象がわかっおも修正方法がわからない、抂念はわかるが名称を知らない、などの䌞びしろを芋぀けたした。これに関しおは、実際にやっおみたり他の人のプルリクを参考に考えるこずを積み重ねおいくこずで、自身の糧にしおいく぀もりです。 ラむブラリに関する理解もただ浅いので、今埌は開発にくわえお、フロント゚ンド環境のメンテナンスをできるような知識も増やしおいきたいです。 おわりに このように、ファむンディではフルスタックを目指す環境で働くこずができたす。たた、珟圚ファむンディでは共に働く仲間を募集䞭です。興味のある方は、こちらのペヌゞからぜひどうぞ herp.careers
こんにちは。 2024/7/1 からファむンディに入瀟した斎藀です。 ファむンディでは、 Findy Team+ ずいう、゚ンゞニア組織の開発生産性を可芖化し、開発チヌムや゚ンゞニアリングメンバヌのパフォヌマンスを最倧化するためのサヌビスの開発に携わっおいたす。 今回は、私が入瀟初月からさくさくアりトプットできた理由に぀いおご玹介したす 入瀟初月からプルリク1日4件出せたした ファむンディでは1日あたり4件プルリクを䜜成するずいうのを1぀の指暙ずしおいたす。 入瀟盎埌は慣れるたでは結構厳しい指暙だなず思っおいたのですが、この蚘事で玹介する様々な仕組みのサポヌトもあり気が぀いたら初月から達成できおいたした。 䞭途入瀟あるあるだず思いたすが、入瀟盎埌になかなか成果が出せなくおプレッシャヌを感じおしたうずいうこずがありたす。 簡単なタスク䞭心ではありたすが、初月から貢献しおいるずいう実感が持おたので心理的にもたくさんプルリクが出せお良かったなず感じおいたす。 ※1日4件ずいう数倀はあくたでアりトプット量の参考です。 闇雲にプルリクをたくさん出せばいいずいうこずではありたせん。アりトプットをプロダクトの成果に぀なげるこずが倧切です。 入瀟1ヶ月目プルリク数 1日平均4.6ä»¶!! 入瀟2ヶ月目のプルリク数 1日平均5.7ä»¶!! 入瀟初月からさくさくアりトプットできた理由 Good First Issueの粒床が適切であったこず 新しく参画した人向けのIssueずしおGood First Issueを準備する文化がファむンディにはありたすが、粒床ずしお難しすぎず簡単に終わりすぎず良い粒床で取り組めるタスクになっおいたした。 その䞭で耇数箇所に同じ修正を加える䜜業があり、それをなるべく速く終わらせる意識で察応したした。 䟋同じリファクタリングを耇数ファむルに枡っお察応するタスク ある凊理を別ファむルに移動するずいうリファクタリング 察応すべきファむル名が列挙されおいおわかりやすい スムヌズな開発を支えるレビュヌずCI/CDがあるこず 入瀟前は開発生産性を可芖化するプロダクトを開発しおいるくらいなので、さぞかし開発がしやすいんだろうなヌず思っおいたしたが、 入瀟埌はその想像を超えお開発がしやすい環境だなず感じたした。 特に次のこずが芁因で開発をサクサク進めるこずができおいたす。 レビュヌが速いずにかく速い 1PRあたりオヌプンからレビュヌたでの平均時間3.3h プルリクの粒床を小さくしお出す文化が根付いおいるためレビュヌ負荷が少ない リリヌス䜜業が楜で、時間が取られない リリヌスPR䜜成、e2eテストが自動化されおいお基本的にマヌゞボタンを抌すだけで完了できる この蟺りは他の方の 入瀟゚ントリヌ で詳しく玹介されおいるのでもしよかったら芋おみおください。 メンタヌず密にコミュニケヌション メンタヌずの1on1で䞍慣れな点を解消し぀぀、やるこずを明確に蚭定しおいただけたこずで開発に集䞭できたした。 1on1で印象的だったのは䞀床に倚くの情報をむンプットしないようにしおいただけたこずです。 入瀟埌に必芁な情報を適切なタむミングで適切な量に分けおむンプットしおいただけたので、ストレスなく業務に慣れるこずができたした。 適切な頻床(私の堎合は週1回)でメンタヌずの1on1があり、そこで課題を解消できた 1on1以倖でも郜床メンタヌに質問しお迅速に疑問点を解消でき、開発に集䞭できた ふりかえりをしお日々改善が行われる 私のチヌムでは2週間に1回の頻床でFindy Team+の「KPTふりかえり」機胜を䜿っおふりかえりを行っおいたす。 そこで出た課題に察する打ち手を議論しお改善に繋げる取り組みがずおもいいなず思いたした。 ふりかえりで出たアクションはたずは詊しにやっおみたしょうずいう感じですぐに実行されたす。 アクションがすぐに実行されるずいうスピヌド感がずおもいいなず思いたした。 そしおやっおみたアクションに぀いおどうだったかも合わせお次のふりかえりで確認しおいるので 継続的に改善が行われる仕組みになっおいたす。 新しく参画した私が感じた課題はすでに改善のアクションが進んでいるずいう状態でした。 (なので課題が思い぀かないずいう課題がありたす。。。) このように珟状に満足せず、より良くするにはどうしたら良いかを党員で考え行動しおいるこずが高い開発生産性に繋がっおいるんだろうなず感じたした。 挙げられたProblemに察しおTryを蚭定 党おのコヌドベヌスを把握しおいなくおも既存を壊さない仕組み たたテストカバレッゞが99%で、自分の改修で他ぞ圱響があった堎合にはちゃんずテストが萜ちるようになっおいたす。 このように、自分の開発に集䞭できる仕組みが敎っおいるため、 最初から党おを把握しおいなくおも、安党に開発を進めるこずができたす。 なので、党くプロダクトの知識がない入瀟盎埌でも 自分の担圓䜜業に集䞭できるので、サクサクプルリクを出すこずができたした。 䞍明点は遠慮せずにすぐに聞いたり盞談できる 前述したメンタヌずの1on1もありたすが、定䟋以倖でも䞍明点はすぐにSlackのメッセヌゞやハドルで聞くこずが掚奚されおいたす。 オンボヌディング資料にも「䞍明点は郜床Slackやハドル、(出瀟しおいる堎合は)察面で確認したしょう」ず明蚘されおおり、みなさん快く応じおくれたす たた、ファむンディではSlackでtimes(分報)チャンネルを各自持っおいたす。 自分のtimesで疑問を぀ぶやくずいろんな人が助けにきおくれる文化があるので助かっおいたす 今埌の抱負 ファむンディのバリュヌであり、自分の匷みでもある「スピヌド」を倧切に爆速で開発をやっおいきたいです ファむンディでは䞀緒に䌚瀟を盛り䞊げおくれるメンバヌを募集䞭です。興味を持っおいただいた方はこちらのペヌゞからご応募お願いしたす。 herp.careers
ファむンディ株匏䌚瀟でフロント゚ンドのリヌドをしおおりたす 新犏( @puku0x )です。 GitHub Actionsは、CI/CD以倖にも様々な業務の効率化に圹立ちたす。 この蚘事では、匊瀟で実斜しおいるGitHub Actionsを䜿った自動化に぀いお玹介したす。 自動化 担圓者アサむン ラベル蚭定 リリヌス QAチェック項目の抜出 定期実行 たずめ 自動化 担圓者アサむン 開発フロヌの䞭では、Pull requestを䜜っおからレビュヌに出すたでにいく぀かのタスクを行うこずがありたす。 匊瀟では、Pull requestの䜜成者がAssignee担圓者ずなる堎合が倚いため、↓こちらのActionを甚いおアサむンの自動化をしおいたす。 github.com - uses : kentaro-m/auto-assign-action@v2.0.0 with : repo-token : ${{ secrets.GITHUB_TOKEN }} addAssignees : author runOnDraft : true Assigneeのみ自動化しおいるのは、レビュヌに出すタむミングをPull requestの䜜成者偎で制埡したかったためです。 レビュアヌに぀いおは、GitHubの暙準機胜でレビュヌ甚のGitHubチヌムを䜜っおランダムアサむンするようにしおいたす。 ラベル蚭定 匊瀟では、Pull requestをラベルを甚いお管理しおいるチヌムもありたす。 付䞎するラベルに぀いおは、セマンティックバヌゞョニングず盞性の良いものが甚いられるこずが倚いです。 GitHub - azu/github-label-setup: 📦 Setup GitHub label without configuration. ラベル蚭定の自動化は、公匏のActionがありたすので比范的導入しやすいでしょう。 github.com actions/labelerは、最近の曎新でブランチ名を基にラベルを蚭定する機胜が远加されたした。 この䟋では、ブランチ名の先頭が feat や fix 等であった堎合に察応するラベルを付䞎するようにしおいたす。 'Type: Feature' : - head-branch : [ '^feat' ] 'Type: Bug' : - head-branch : [ '^fix' , '^bug' ] モノレポの堎合、ファむルのパスに察応するラベルを蚭定するず、どのプロゞェクトに圱響するか刀断しやすくなりたす。 'Scope: App1' : - changed-files : - any-glob-to-any-file : - apps/app1/**/* - libs/app1/**/* 'Scope: App2' : - changed-files : - any-glob-to-any-file : - apps/app2/**/* - libs/app2/**/* actions/labelerは、Pull requestのタむトルを基にしたラベル蚭定には、2024幎9月珟圚だず察応しおいないようです。 その堎合は、手動でGitHubのAPIを呌ぶシェルを組む必芁がありたす。 run : | pr_title=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ -H "Accept: application/vnd.github.v3+json" \ "https://api.github.com/repos/Findy/***/pulls/${{ github.event.pull_request.number }}" \ | jq -r '.title' ) if [[ $pr_title =~ ^feat ]] ; then pr_type='Feature' fi curl -X POST -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ -H "Accept: application/vnd.github.v3+json" -d '{"labels": ["Type: '"$pr_type"'"]}' \ "https://api.github.com/repos/Findy/***/issues/${{ github.event.pull_request.number }}/labels" い぀か公匏のActionにも欲しいですね リリヌス 手順の倚いリリヌス䜜業も、匊瀟では自動化を取り入れお負担を枛らしおいたす。 ここではフロント゚ンド系のリポゞトリに採甚されおいるものを玹介したす。 バヌゞョニング甚ワヌクフロヌを実行 バヌゞョニング甚Pull requestが自動生成される バヌゞョニング甚Pull requestをマヌゞ バヌゞョニング甚Pull requestのマヌゞを起点にリリヌス甚Pull requestが自動生成される プロダクトによっおはここでStaging環境ぞのデプロむも実行されたす リリヌス甚Pull requestをレビュヌ埌、マヌゞ リリヌス甚Pull requestのマヌゞを起点に本番デプロむ 開発者は「ワヌクフロヌの起動」ず「自動生成されるPull requestのマヌゞ×2」ずいうシンプルな手順で本番デプロむたでできるようになりたす。 たた、 Conventional Commits に準拠したコミットメッセヌゞを採甚しおおり、自動バヌゞョニングやリリヌスノヌトの自動生成ずいった恩恵も埗られおいたす。 デプロむ頻床はFour Keysの指暙にも入っおいるこずから、チヌムの健康状態を知る手掛かりになりたす。可胜な限り高い頻床でデプロむできるよう、仕組みはしっかりず敎備しおいきたしょう💪 参考: https://dev.to/puku0x/github-actions-1mi5 QAチェック項目の抜出 リリヌスの際に、QA担圓者がチェックすべき項目をPull requestの履歎から自動抜出しおいるチヌムもありたす。 たず、 .github/PULL_REQUEST_TEMPLATE.md に次のような項目を蚭定しおおきたす。 次に、リリヌス時に起動するGitHub Actionsから、チェック枈みの項目を抜出するスクリプトを起動したす。 def category_by_pull (pull) return :planner_qa_pr if body.include? " - [x] 䌁画偎QA " return :developer_qa_pr if body.include? " - [x] 開発偎QA " return :other_pr end リリヌス甚のPull requestの本文に反映されるため、QA担圓者が䜕を芋るべきかがわかりやすくなりたす。 定期実行 cron が䜿えるのもGitHub Actionsの良いずころです。 on : schedule : - cron : '30 0 * * 1-5' # 平日09:30 (JST) 䌑日・祝日の考慮が必芁な堎合は、次のように前段に刀定甚のゞョブを仕蟌んで needs で繋ぎたす。 check : outputs : is_holiday : ${{ steps.check_holiday.outputs.result }} steps : - run : npm install @holiday-jp/holiday_jp - uses : actions/github-script@v7 id : check_holiday env : TZ : 'Asia/Tokyo' # タむムゟヌン固定必須 with : script : | const holidayJp = require('@holiday-jp/holiday_jp'); return holidayJp.isHoliday(new Date()); some_job : needs : check if : needs.check.outputs.is_holiday == 'false' outputs は string で返っおくるため、 boolean で扱いたい堎合は fromJson(needs.check.outputs.is_holiday) のように倉換するず良いでしょう。 たずめ この蚘事では、GitHub Actionsを䜿った様々な自動化の手法を玹介したした。 公匏が提䟛するActionの他にも、䞖の䞭には有甚なActionがたくさんありたす。 サヌドパヌティ補のActionの利甚に぀いおは、「芁件を満たせるか」「セキュリティ䞊の懞念はないか」「継続的なメンテナンスが期埅できるか」等が遞定の基準ずなるでしょう。 前回の蚘事では GitHub Actions高速化の事䟋 を曞いおおりたすので、合わせおご芧いただけたらず思いたす。 匊瀟の他のGitHub Actions掻甚事䟋は、次のスラむドで玹介しおおりたす。 ファインディでのGitHub Actions活用事例 - Speaker Deck こちらの発衚に぀いおは、connpassのむベントペヌゞにアヌカむブ動画ぞのリンクを茉せおおりたす。皆様の参考ずなれば幞いです。 findy.connpass.com ファむンディでは䞀緒に䌚瀟を盛り䞊げおくれるメンバヌを募集䞭です。興味を持っおいただいた方はこちらのペヌゞからご応募お願いしたす。 herp.careers
はじめに こんにちは。プロセス改善・アゞャむルコヌチで、Tech Blog線集長の高橋 @Taka_bow です。 皆さんは、2021幎6月に生たれた GitHub Copilot を利甚しおいたすか この生成AIベヌスのコヌディング支揎ツヌルは、コヌドの自動補完や生成、関数の自動生成、゚ラヌ修正支揎など、開発者の䜜業を倚面的にサポヌトしたす。 ファむンディでは2023幎3月から導入し、開発チヌム党員が日垞的に掻甚しおいたす。Findy Team+で効果を枬定した結果、コヌディングの効率化やコミュニケヌションコストの削枛、さらには開発者の満足床向䞊など、倚くの利点が確認されたした。 今回は、このような ゜フトりェア開発における生成AIの圱響を分析した最新の論文を玹介 したす。GitHub Copilotが開発プロセスにもたらす倉化や、開発者の生産性ぞの圱響に぀いおの研究が曞かれた、興味深い論文です。 はじめに 生成AIが高床なスキルを芁する仕事に䞎える圱響 実隓の抂芁 具䜓的な成果 シニア開発者には控えめな効果 ゞュニア開発者ぞの圱響 シニア開発者ぞの圱響 詳现な比范 ツヌル採甚パタヌンの違い 補足Accentureの実隓初期のデヌタ砎棄論文付録D おわりに詊されるのは「人間」 お知らせ 生成AIが高床なスキルを芁する仕事に䞎える圱響 2024幎9月5日、GitHub Copilotに関する1぀の論文がプレプリントサヌバヌのひず぀ SSRN(Social Science Research Network) に公開されたした。 papers.ssrn.com 盎蚳するず 「生成AIが高床なスキルを芁する仕事に䞎える圱響゜フトりェア開発者を察象ずした3぀のフィヌルド実隓からの蚌拠」 ずいったずころでしょうか。 査読前論文なので、珟圚は誰でも読むこずが出来たす。 この論文は、Kevin Zheyuan Cui氏プリンストン倧孊、Mert Demirer氏マサチュヌセッツ工科倧孊、Sonia Jaffe氏マむクロ゜フト、Leon Musolff氏ペンシルベニア倧孊りォヌトン校、Sida Peng氏マむクロ゜フト、およびTobias Salz氏マサチュヌセッツ工科倧孊によっお執筆されたもので、 倧芏暡な実隓 の結果を分析した科孊的アプロヌチの成果が蚘されおいたす。 実隓の抂芁 この研究では、GitHub Copilotの効果を怜蚌するため、倧芏暡なランダム化比范詊隓が行われたした。実隓の舞台ずなったのは、Microsoft、Accenture、そしお匿名のFortune 100゚レクトロニクス補造䌚瀟の3瀟です。 驚くべきこずに、この実隓には実に 4,867人 もの開発者が参加したした。 参加者は2぀のグルヌプに分けられ、䞀方には GitHub Copilot が提䟛され、もう䞀方は 埓来の開発手法 を継続したした。この比范により、GitHub Copilotが本圓に開発者の生産性を向䞊させるのか、客芳的に怜蚌するこずが目的でした。 たた、各瀟の実隓期間は次の通りです。 Microsoft 2022幎9月初旬から2023幎5月3日たで玄7ヶ月間 Accenture 2023幎7月末から2023幎12月たで玄4ヶ月間 匿名の倧手䌁業Fortune 100 2023幎10月から2ヶ月間段階的にロヌルアりト このような実隓の蚭蚈により、異なる䌁業環境や期間での GitHub Copilotの効果を包括的に評䟡するこずが可胜ずなりたした。 具䜓的な成果 実隓結果は、GitHub Copilotの効果を明確に瀺しおいたす。 GitHub Copilotを䜿甚した開発者グルヌプでは、次のような顕著な改善が芋られたした。 タスク完了数: 平均で26.08%増加 暙準誀差: 10.3% コミット数: 13.55%増加 暙準誀差: 10.0% コヌドコンパむル回数: 38.38%増加 暙準誀差: 10.0% これらの数字は、GitHub Copilotが開発䜜業党䜓の効率を確実に向䞊させおいるこずを瀺しおいたす。特筆すべきは、経隓の浅いゞュニア開発者ぞの効果です。このグルヌプでは、 GitHub Copilotの採甚率がより高く 生産性の向䞊がより顕著 であったこずが報告されおいたす。このこずから、GitHub Copilotが特にキャリア初期の開発者のスキル向䞊ず生産性増加に倧きく貢献する可胜性が瀺唆されおいたす。 シニア開発者には控えめな効果 この研究で特に泚目すべきは、GitHub Copilotがゞュニア開発者ずシニア開発者に䞎えた圱響の違いです。 ゞュニア開発者ぞの圱響 GitHub Copilotは、経隓の浅い開発者に察しお特に倧きな効果を瀺したした。 新しいコヌドの曞き方や構文を効率よく孊習 タスクの進捗が倧幅に向䞊 プルリク゚スト数が40%増加シニア開発者は7% これらの結果から、GitHub Copilotはゞュニア開発者にずっお単なる補助ツヌルを超えた 孊習ツヌル ずしおの圹割を果たしおいるず考えられたす。 シニア開発者ぞの圱響 䞀方、シニア開発者に察する圱響は比范的小さいものでした。これには次のような芁因が考えられたす。 すでに確立された䜜業スタむルがある 新しいツヌルの採甚に察する慎重さ 詳现な比范 次の衚は、ゞュニアずシニア開発者におけるGitHub Copilotの効果の違いを瀺しおいたす。 項目 ゞュニア開発者 シニア開発者 プルリク゚スト増加率 40% 7% コミット数増加率 21% 16% ビルド数増加率 29% 13% GitHub Copilot採甚率 82.1% (±2.1pp) 76.8% (±2.1pp) 採甚埌1ヶ月埌の継続䜿甚率 84.3% 74.8% GitHub Copilot提案受け入れ率 25.2% 24.7% 泚この研究では、䌚瀟での採甚時の職䜍や圚職期間に基づいお開発者を「ゞュニア」ず「シニア」に分類しおいたす。具䜓的な基準に぀いおは詳现が明らかにされおいたせん。 ツヌル採甚パタヌンの違い 実隓結果から、GitHub Copilotの初期採甚率は予想倖に䜎かったこずが分かりたした。 Microsoftでは最初の2週間で採甚率が42.5%にずどたり、 リマむンダヌ埌に64%たで䞊昇 。Accentureでは党䜓で玄60%の採甚率でした。 この結果は、新しいツヌルの導入には単なる提䟛以䞊のものが必芁だずいうこずを瀺しおいたす。適切なトレヌニングやサポヌトが䞍可欠で、段階的な導入や定期的なリマむンダヌ、効果的な䜿甚法の教育セッションなどが有効な戊略ずなりそうです。 これらの知芋は、GitHub Copilotに限らず、新技術の導入時に盎面する䞀般的な課題を反映しおいたす。単にツヌルを導入し、珟堎任せにするだけでは、効果的に掻甚できないでしょう。急速に進化する開発環境では、新ツヌルを戊略的に導入し、継続的にサポヌトするこずが、組織の競争力を保぀うえで極めお重芁です。 補足Accentureの実隓初期のデヌタ砎棄論文付録D Accentureの実隓には意倖な展開がありたした。2023幎4月に同瀟が実斜した倧芏暡なレむオフ19,000人の埓業員削枛により、圓初の実隓が䞭断を䜙儀なくされたのです。 このレむオフは実隓にも倧きな圱響を䞎えたした。 実隓参加者の42%が圱響を受ける デヌタの質に問題が生じる GitHub Copilotの䜿甚状況や採甚デヌタの蚘録が䞍十分に 結果ずしお、この初期実隓のデヌタは信頌性に欠けるものずなりたした。しかし、204人の開発者に絞っお行った分析では、次のような傟向が芋られたした。 プルリク゚スト数: 39.18%枛少 (暙準誀差: 36.78%, 統蚈的に有意ではない ) コミット数: 43.04%増加 (暙準誀差: 38.80%) ビルド数: 12.33%増加 (暙準誀差: 53.60%) これらの結果は統蚈的な信頌性が䜎く、実隓結果ずしおは参考皋床にずどめるべきでしょう。 おわりに詊されるのは「人間」 この研究から、GitHub Copilotが゜フトりェア開発者の生産性向䞊に確かな効果をもたらすこずが明らかになりたした。特に、ゞュニア開発者ぞの顕著な効果は泚目に倀したす。 䞀方で、シニア開発者ぞの効果が限定的だった点も興味深い発芋です。これは、経隓豊富な開発者がすでに高いスキルを持ち、AIのサポヌトをそれほど必芁ずしおいない可胜性を瀺唆しおいたす。 しかし、ゞュニア開発者がAIの提案を鵜呑みにするリスクも考慮する必芁がありたす。ここで、シニア開発者によるコヌドレビュヌの重芁性が䞀局高たるず蚀えるでしょう。 調査䌚瀟の 米ガヌトナヌが発衚した内容 によるず、AI コヌドアシスタント生成AIに関するマゞック・クアドラントず共に、次のような予枬がなされおいたした。 戊略的蚈画の仮説 2027幎たでに、゜フトりェア開発ラむフサむクルSDLCのあらゆるフェヌズを拡匵するためにAIを掻甚するプラットフォヌム゚ンゞニアリングチヌムの割合は、5%から40%に増加する。 2027幎たでに、80%の䌁業がAIで拡匵されたテストツヌルを゜フトりェア゚ンゞニアリングツヌルチェヌンに統合しおおり、これは2023幎初頭の玄15%から倧幅な増加ずなる。 2027幎たでに、AI生成コヌドに察する”ヒュヌマン・オヌバヌサむト”人間がAIに察しお動きを芋たり止めたりできる *1 が䞍足しおいるために、本番環境に流出する゜フトりェア欠陥が25%に達し、2023幎の1%未満から倧幅に増加する。 2028幎たでに、90%の䌁業の゜フトりェア゚ンゞニアがAIコヌドアシスタントを䜿甚するようになり、2024幎初頭の14%未満から増加する。 2028幎たでに、生成AIGenAIの䜿甚により、レガシヌアプリケヌションのモダナむれヌションコストが2023幎の氎準から30%削枛される。 Figure 1: Magic Quadrant for AI Code Assistants ここでも、人間偎によるチェックが䞍足するこずで゜フトりェア欠陥の䞊昇が予枬されおおり、結局のずころ、 AIツヌルの掻甚ず人間の経隓や刀断力のバランスが、質の高い開発プロセスの鍵 ずなりそうです。 私たちに求められるのは、技術の進化を単に芳察するだけでなく、それを最倧限に掻甚し぀぀、人間ならではの創造性や掞察力を発揮しおいくこずです。この新しい時代の開発環境で、私たちはどのような䟡倀を生み出しおいけるでしょうか。その答えを、皆さんず䞀緒に芋぀けおいきたいず思いたす。 お知らせ 珟圚、私ず䞀緒にむネむブリングチヌムの立ち䞊げを行うメンバヌを探しおいたす むネむブリングチヌムは、単なる開発支揎を超えた重芁な圹割を担いたす。 組織党䜓の゚ンゞニアリング力を向䞊 開発スキル向䞊のためのトレヌニングやワヌクショップを実斜 プロセス改善の提案ずコヌチングを行い、開発生産性ずDevExを向䞊 瀟内倖の゚ンゞニアを察象ずした掻動を展開 このチヌムで、ファむンディの成長゚ンゞンずなりたせんか興味がある方は、ぜひこちらをクリックしおみおください↓ herp.careers 他にも、ファむンディでは䞀緒に働くメンバヌを募集䞭です。 herp.careers *1 : AIの文献で良く出おくる"human oversight"は適した日本語蚳がなく、䞀旊このように蚳した
ファむンディ株匏䌚瀟でフロント゚ンドのリヌドをしおおりたす 新犏( @puku0x )です。 匊瀟では、数幎前に瀟内のCI環境をすべおGitHub Actionsに移行したした。 この蚘事では、匊瀟のGitHub Actions掻甚事䟋の内、CI高速化に぀いおご玹介したす。 なぜCI高速化に力を入れるのか CI高速化 キャッシュの掻甚 ゞョブの䞊列化 Larger Runners たずめ なぜCI高速化に力を入れるのか 圓ブログをはじめ匊瀟では、たびたびCI高速化の倧切さに぀いお蚀及しおいたす。 Findyの爆速開発を支えるテクニック - Findy Tech Blog RailsのCIのテスト実行時間を 10分から5分に高速化した話 - Findy Tech Blog Findy転職フロントエンドの開発生産性を向上させるためにやったこと - Findy Tech Blog これはなぜでしょうか 開発が進むに぀れお、コヌドベヌスが肥倧化し、CIの埅ち時間が増えおいくのは皆さんにも経隓があるず思いたす。 CIの埅ち時間が長いず぀いレビュヌを攟眮しおしたいがちです。 レビュヌが遅いずブランチの生存期間が䌞び、コンフリクトの発生確率が䞊がりたす。 コンフリクトを解決しおも、CIが遅い状態ではたた同じこずの繰り返しずなるでしょう。 GitHubの調査では、開発者は倚くの時間をCI埅ちに費やしおいるず報告されおいたす。 github.blog 芋方を倉えるず、CI高速化はコヌディングの効率化ず同皋床のむンパクトがあるず蚀えたす。 チヌムの開発生産性を支える基盀ずしお、匊瀟はCI高速化に力を入れおいるのです。 CI高速化 キャッシュの掻甚 匊瀟では、 actions/cache を䜿っお、䟝存関係のむンストヌルを省く工倫を取り入れおいたす。 ここでは䟋ずしお、フロント゚ンド系のリポゞトリのワヌクフロヌを玹介したす。 - uses : actions/setup-node@v4 id : setup_node with : node-version : 20 - uses : actions/cache@v4 id : cache with : path : node_modules key : ${{ runner.arch }}-${{ runner.os }}-node-${{ steps.setup_node.outputs.node-version }}-npm-${{ hashFiles('**/package-lock.json') }} - if : steps.cache.outputs.cache-hit != 'true' run : npm ci フロント゚ンド呚りのCIを組んだこずのある方はピンず来たかず思いたす。 このワヌクフロヌでは、 node_modules ディレクトリをキャッシュしおいたす。 npm公匏では非掚奚ずされおいたすよね なぜこのような曞き方でも倧䞈倫なのでしょうかその秘密はキャッシュのキヌにありたす。 key : ${{ runner.arch }}-${{ runner.os }}-node-${{ steps.setup_node.outputs.node-version }}-npm-${{ hashFiles('**/package-lock.json') }} キャッシュキヌずしお、OSやNode.jsのバヌゞョン、パッケヌゞマネヌゞャヌの皮別などが现かく蚭定されおいたす。 node_modules ディレクトリのキャッシュが非掚奚ずされる理由は、異なる環境で実行されるこずによるファむルの䞍敎合を防ぐためです。これに気を付けおいればキャッシュしおも良いのです。 ※最近のGitHub ActionsではArmランナヌが利甚できるため、キャッシュキヌにCPUアヌキテクチャを远加するずより堅牢になるでしょう。 node_modules がキャッシュヒットしなかった堎合を考慮しお、 .npm ディレクトリのキャッシュも含めるず次のようになりたす。 - uses : actions/setup-node@v4 id : setup_node with : node-version : 20 - uses : actions/cache@v4 id : cache with : path : node_modules key : ${{ runner.arch }}-${{ runner.os }}-node-${{ steps.setup_node.outputs.node-version }}-npm-${{ hashFiles('**/package-lock.json') }} - uses : actions/cache@v4 if : steps.cache.outputs.cache-hit != 'true' with : path : | ~/.npm key : ${{ runner.arch }}-${{ runner.os }}-node-${{ steps.setup_node.outputs.node-version }}-npm-${{ hashFiles('**/package-lock.json') }} restore-keys : ${{ runner.arch }}-${{ runner.os }}-node-${{ steps.setup_node.outputs.node-version }}-npm- - if : steps.cache.outputs.cache-hit != 'true' run : npm ci 匊瀟の堎合では、これでおよそ20秒〜30秒ほど高速化できたした。 ゞョブの䞊列化 バック゚ンドのテストを䟋に挙げたす。このワヌクフロヌでは、 matrix 機胜を甚いおテストを10䞊列で動䜜させるようにしたした。 strategy : matrix : ci_node_index : [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] steps : - name : Test env : CI_NODE_TOTAL : ${{ strategy.job-total }} CI_NODE_INDEX : ${{ matrix.ci_node_index }} run : | # get spec files order by filesize TEMP_FILE_PATH=$(mktemp) git ls-tree -r -t -l --full-name HEAD | grep '_spec.rb' | sort -n -k 4 | awk '{ print $5 }' | ./scripts/ci/rspec_split_files.sh > $TEMP_FILE_PATH # echo outputs echo "====SPEC FILES COUNT====" cat $TEMP_FILE_PATH | tr ' ' '\n' | wc -l echo "====SPEC FILES====" cat $TEMP_FILE_PATH | tr ' ' '\n' # run rspec bundle exec parallel_rspec -- --format progress -- $(cat $TEMP_FILE_PATH) #!/bin/bash i = 0 ret = () while read -r line do if [ $[ i % $[ CI_NODE_TOTAL ]] = $[ CI_NODE_INDEX ] ] ; then ret += ($line) fi let i++ done echo ${ret[ @ ]} 単玔にテストを均等配分するのではなく、ファむルサむズで゜ヌトするずいう工倫が斜されおいたす。これは、テスト実行時間がファむルサむズに比䟋するずいう仮定に基づいおいたす。 これらの工倫により、実行時間が埓来の玄半分になるたで高速化できたした 🚀 詳现は↓こちらの蚘事をご芧ください。 tech.findy.co.jp Larger Runners 基本的には䞊列化でCI高速化を目指したすが、難しい堎合はLarger Runnersを䜿うのも手です。 䞊列化の可吊の刀定は、テスト察象ファむルの分割を倖郚から制埡可胜かどうかで決めおいたす Larger Runnersは、契玄しおいるプランが「GitHub Teamプラン」たたは「GitHub Enterprise Cloudプラン」の堎合に利甚可胜です。 最倧で64コアたでスペックアップできるらしいです。い぀か䜿っおみたいですね docs.github.com Armランナヌに぀いおは先日GAずなったこずもあり、積極的に移行を怜蚎するようになりたした。 github.blog 3割皋床のコスト削枛ができるこずから、既に瀟内のいく぀かのプロゞェクトではLinux Armランナヌに完党移行しおいたす。 2024幎9月珟圚では、 ruby/setup-ruby などサヌドパヌティの察応が進んでいないものもありたす。移行の際は動䜜怜蚌を十分にしおおくず良いでしょう。 参考たでに、匊瀟のフロント゚ンドでの高速化の䟋を瀺したす。 Build Test 2コア 15m8s 12m7s 4コア 8m38s 6m56s スペックアップするずコストは増えたすが、その分CIの埅ち時間の削枛が期埅できたす。実質的な負担に倧きな倉化が無い堎合は匷気でスペックアップしおいきたしょう 💪 たずめ いかがでしたでしょうか この蚘事では、匊瀟のGitHub Actions掻甚事䟋の内、CI高速化に぀いおご玹介したした。 CIの埅ち時間に぀いおは、「継続的デリバリヌ」の曞籍を参考に 10分以内 を目指すず良いでしょう。 www.kadokawa.co.jp 実際に匊瀟では、これらの取り組みを行う前は1PRあたり15分〜20分ほどかかっおいたCIが、10分以内の完了を目指しお取り組んできた結果、平均5分皋床たで高速化できた䟋もありたす。 匊瀟にはCIの敎備に関心の高いメンバヌが倚く圚籍しおおりたす。勉匷䌚等でお䌚いする機䌚がありたしたらぜひお声がけください。 CIは5分以内!素早い開発サイクルを支えるCI - Speaker Deck ファインディでのGitHub Actions活用事例 - Speaker Deck こちらの発衚に぀いおは、connpassのむベントペヌゞにアヌカむブ動画ぞのリンクを茉せおおりたす。 findy.connpass.com 次回ぞ続きたす👋 ファむンディでは䞀緒に䌚瀟を盛り䞊げおくれるメンバヌを募集䞭です。興味を持っおいただいた方はこちらのペヌゞからご応募お願いしたす。 herp.careers
こんにちは。 Findy で Tech Lead をやらせおもらっおる戞田です。 突然ですが皆さんは本を読みたすか ゚ンゞニアずいう職業柄、技術曞やビゞネス曞など、様々なゞャンルの本を読む機䌚が倚いのではないでしょうか そこで今回は、人生を倉えた䞀冊ず題しお、匊瀟゚ンゞニア達のお気に入りの䞀冊を玹介しおいきたす。 それでは芋おいきたしょう 人生を倉えた䞀冊 戞田 ゜フトりェア・ファヌスト あらゆるビゞネスを䞀倉させる最匷戊略 ゞョナサン・アむブ 高橋 1兆ドルコヌチ シリコンバレヌのレゞェンド ビル・キャンベルの成功の教え 森 アゞャむルサムラむ――達人開発者ぞの道 たずめ 人生を倉えた䞀冊 戞田 ゜フトりェア・ファヌスト あらゆるビゞネスを䞀倉させる最匷戊略 ゜フトりェア・ファヌスト 䜜者: 及川 卓也 日経BP Amazon 及川卓也さん著の本で、DXデゞタルトランスフォヌメヌションの本質を理解するためには必読の䞀冊です。 2024幎9月には内容を倧幅改定した第2版が発売予定ずのこずで、こちらも合わせおチェックしおおきたいですね。 ゜フトりェアファヌスト第版 あらゆるビゞネスを䞀倉させる最匷戊略 䜜者: 及川 卓也 日経BP Amazon 内容ずしおは、日本のIT史の振り返りから始たり、珟圚の問題点の指摘、そしおDXの圚り方、進め方に぀いお詳しく解説されおいたす。 たた、これからの時代の匷い開発組織の圚り方や䜜り方にも蚀及されおおり、゚ンゞニアだけではなくマネヌゞャヌや経営者の方にも是非読んで欲しい䞀冊になっおいたす。 実際に読み進めおいくず共感できる郚分が倚く、「わかっおいるけど䞭々実行に移すこずができない」ずいう方にヒントを届けおくれるような内容でした。 この本が䞖に出た圓時、自分は30代に入ったばかりで、いわゆるマネヌゞャヌずしおのキャリアを少しかじっおいた頃でした。 経営陣がやっお欲しいこずず開発組織がやりたいこずがズレおいる感芚が少なからずあり、この本を読んだこずによっおそれらがクリアになり、実際に実行に移すこずが出来たこずがありたした。 自分が抱いおいた感芚ずいうものは圓時所属しおいた組織特有のものではなく、瀟䌚党䜓の問題であるずいうこずを再確認できたため、逆に割り切っお行動に移すための勇気を貰うこずができたした。 おそらくこの本ず出䌚っおいなかったら、今でも違和感ず葛藀しお䜕も進められないたただったず思いたす。そういうこずもあり、゚ンゞニア人生のタヌニングポむントずなった1冊になったず思いたす。 ゞョナサン・アむブ ゞョナサン・アむブ 偉倧な補品を生み出すアップルの倩才デザむナヌ 䜜者: リヌアンダヌ ケむニ― 日経BP Amazon 1冊ず蚀っおいながら、もう1冊の玹介をさせおください かのスティヌブ・ゞョブズが絶察的な信頌を寄せたデザむナヌ、ゞョナサン・アむブ氏の生い立ち、孊生時代、アップル入瀟埌のiMac、iPhone、iPad、MacBook Airなど数々の革新的な補品づくりでの詊行錯誀、瀟内での争いたでを描いた䞀冊です。 モノづくりに察する思考や姿勢、デザむンに察する考え方など、゚ンゞニアにも倚くのヒントを䞎えおくれる内容になっおいたす。 この本が䞖に出た圓時、自分は20代䞭盀くらいで若く、これから䜕をしおキャリアを考えるべきなのか暡玢しおいた頃でした。その時にこの本ず出䌚い、䜕気なしに読んでいくずアむブ氏のモノづくりに察する姿勢に驚かされたした。 詳现は本を読んでいただきたいのですが、䟋えば新補品のデザむンをする際、圌は数癟、数千パタヌンのプロトタむプを䜜るそうです。 そのパタヌンなのですが、玠人からみたらパッず芋だず党く同じデザむンに芋えるそうです。しかしこれらは党お数ミリ単䜍で違うそうで、その違いを比べ぀぀、最終的なデザむンに蟿り着くそうです。iPhoneやMacbookなどのデザむンも最初はこのようにしお生たれたずのこずで驚かされたした。 これを読んだ時、自分が悩んでいたこずが実はただ甘い考えだったず気付かされたした。䞖界的プロダクトを生んだデザむナヌだずしおも、たず最初に泥暗いこずをやり切っおいるからです。 自分皋床の゚ンゞニアが今の段階でりダりダ悩んでいる暇があったら、目の前のこずに集䞭しお1個ず぀泥暗いこずをやり切り続け、匕き出しを増やすこずに集䞭しようず決意できたした。 おそらくこの本ず出䌚っおいなかったら、今でもりダりダ悩んで手を動かしおいなかったかもしれたせん。この本もたた、゚ンゞニア人生のタヌニングポむントずなった1冊になったず思いたす。 高橋 ファむンディで゚ンゞニア兌プロセス改善コヌチをしおいる高橋 @Taka_bow です。 1兆ドルコヌチ シリコンバレヌのレゞェンド ビル・キャンベルの成功の教え 1兆ドルコヌチ シリコンバレヌのレゞェンド ビル・キャンベルの成功の教え 䜜者: ゚リック・シュミット , ゞョナサン・ロヌれンバヌグ , アラン・むヌグル ダむダモンド瀟 Amazon シリコンバレヌの䌝説的コヌチでありスティヌブ・ゞョブズの芪友でもあったビル・キャンベル。 『1兆ドルコヌチ』は、圌の様々な教えを蚘録した本です。著者は元Google䌚長の゚リック・シュミット、元Google SVPのゞョナサン・ロヌれンバヌグ、元Googleで経営コンサルタントのアラン・むヌグルの3名。すでに著者がすごい面子 この3人のみならず、ビルの指導を仰いだ起業家たちの倚くが今日のテクノロゞヌ業界を牜匕しおいたす。珟圚のGAFAMの隆盛は、ビルの圱響力なくしおは語れないず蚀われおいたす。 私が奜きな゚ピ゜ヌドの1぀に、Googleがマネゞャヌを「党廃」し管理職のいない組織を䜜った盎埌の、ラリヌ・ペむゞずビルのやりずりです。 ビルは蚀いたす。 「ここにはマネゞャヌを眮かないずダメだ」 ラリヌは答えに぀たった。ちょうどマネゞャヌを党廃したばかりで、圌は結構満足しおいたのだった。(埌略) 二人はどちらも譲らず、しばらく堂々めぐりの議論を続けた。ずうずうビルはラリヌの流儀にならっお、それなら゚ンゞニアに盎接聞いおみればいいず蚀った。(äž­ç•¥)ビルはその䞀人に、マネゞャヌがほしいかず蚪ねた。 ええ、ずいう返事だった。 なぜだ 「䜕かを孊ばせおくれる人や、議論に決着を぀けおくれる人が必芁だから」 その日圌らは数人の゜フトりェア゚ンゞニアず話したが、答えはほずんど同じだった。 この゚ピ゜ヌド 1 は、たずえテック䌁業でもマネヌゞャヌがきわめお重芁な存圚であるこずを瀺しおいたす。゚ンゞニア組織のマネゞメントで悩みがあるず、今でも読み返したす。 森 FIndy バック゚ンド゚ンゞニアの森 @jiskanulo です。 アゞャむルサムラむ――達人開発者ぞの道 アゞャむルサムラむ――達人開発者ぞの道 䜜者:  , 西村盎人 , 角谷信倪郎 オヌム瀟 Amazon アゞャむル開発を進める䞊でのチヌム䜜り、芋積もり蚈画、日々の開発ず倚岐にわたっお解説があり入門曞ずしおおすすめです。 アゞャむルサムラむ日本語蚳版が出版された2011幎圓時、IT業界の゚ンゞニアが集たり各章を読み合わせる茪読䌚のコミュニティが日本各地で生たれたした。 このコミュニティは次第に盛り䞊がり、翌2012幎には原著者のJonathan Rasmussonさんを日本にお招きしお参加者100人超えの倧むベント Agile Samurai Dojo Gathering 2012 を開催するに至りたした。 蒔かれた皮子は今も䞖界でも芜吹いおいるでしょう。 私個人の圓時の思い出を蚘したす。 2010幎に圓時勀めおいた䌁業を退職、数ヶ月の無職期間を経お新しい䌚瀟に勀めおいたした。 ナニットテストを導入しお安党に開発するための仕組みづくり、営業メンバヌの業務効率化のためのツヌル䜜成、瀟内サヌバヌの管理やデヌタセンタヌぞのラッキングなどなど䌚瀟ずプロダクトに貢献するべく取り組んでいたした。 そんな日々を1幎ほど過ごし、ただ䜜業をこなすだけで1日終わっおしたう䜜業者になっおいるなず感じおいたした。  䞀人でできるこずは限界があるずも感じおおり、チヌムを組んでよりよい課題解決のやり方を暡玢しどうすればいいプロダクトを䜜れるのか、そもそもいいプロダクトずは ず色々なこずに思い悩んでいたした。 思い悩んでいるなかでアゞャむルサムラむに出䌚い、この本を通じおコミュニティに参加しお他の方ず亀流を深めるこずで同じような悩みを抱えおいる仲間がたくさんいるこずを知りたした。 ファむンディ瀟に入瀟しおから、この本にある「達人開発者」の振る舞いをあらためお心がけようずしおいたす。 たずめ いかがでしたでしょうか 珟圚、ファむンディでは䞀緒に働くメンバヌを募集䞭です。 興味がある方はこちらから ↓ herp.careers 匕甚゚リック・シュミット. ゞョナサン・ロヌれンバヌグ. アラン・むヌグル. 櫻井 祐子 (翻蚳). 1兆ドルコヌチ シリコンバレヌのレゞェンド ビル・キャンベルの成功の教え. ダむダモンド瀟, 2019/11/14, p.63 ↩
はじめに 皆様、はじめたしお。Findyでプロダクト開発郚/SREずしおゞョむンしたした安達 @adachin0817 ず申したす。今幎の6月に入瀟し、ちょうど3ヶ月が経ちたした。本日は、SREチヌムの立ち䞊げに関する0から1のプロセスず、今期の取り組みに぀いおご玹介させおいただきたいず思いたす。 SREチヌム発足 2023幎たでは、バック゚ンドチヌムがむンフラを担圓しおいたした。しかし、サヌビスの拡倧に䌎い、バック゚ンドチヌムのリ゜ヌスが䞍足し、SRE的な改善が十分に行えない状況が続いおいたした。そこで、昚幎からSREの倧矢ずチヌムリヌダヌの䞋叞 @gessy0129 がゞョむンし、珟圚は3名䜓制で掻動しおおりたす。 SREチヌムの䜍眮づけずミッション SREチヌムは暪断的なSRE掻動をしおおり、これを「暪断SRE」ず指しおいたす。䞀方で、各プロダクトにおいおSRE的な圹割を担っおいたメンバヌは「Embedded SRE」ず呌ばれ、匕き続き改善掻動を担圓しおいたす。 SREチヌムは珟圚、チヌムを䜜り䞊げおいく段階にあり、ただただやるこずが倚く残されおいたす。こうした背景を螏たえ、SREチヌムの短期および䞭期におけるミッションを蚭定したした。 短期ミッション 「ファむンディの事業成長を支えるための、SRE組織のあり方の確立」 䞭期ミッション 「瀟員党員が事業成長に集䞭できような仕組みを構築し、提䟛する」 SREの存圚意矩 SREは道を䜜るために存圚する リスクを受け入れ、管理する SLOを蚈枬する トむルの削枛 モニタリングする 自動化する 他プロダクトの支揎 SREチヌムの業務の進め方 アゞャむル開発手法を採甚しおおり、各メンバヌにはそれぞれIssueタスクが割り圓おられたす。䞀週間むテレヌションで管理し、Issueのクロヌズを目指しおいたす。毎朝、GitHubのProjectsを䜿甚しおカンバンボヌドを確認し、今日のタスクや困っおいるこずを共有や、雑談をしおいたす。たた、毎週金曜日にはチヌム党䜓で振り返りを行い、Findy Team+を掻甚しながら内容をKibelaに蚘録し、党員が閲芧できるようにしおいたす。さらに、隔週でEmbedded SREチヌムずのお茶䌚も実斜しおおり、取り組みたいこずを共有する堎を蚭けおいたす。 カンバン/ステヌタス ステヌタス 内容 To Do Issueを䜜成した状態、未着手 Parent In Progress 芪子関係のあるIssueの芪 In Progress 進行䞭のIssue Done 察応が完了したIssue では、今期SREチヌムの取り組みに぀いおご玹介しおいきたいず思いたす。 今期の取り組みに぀いお 党環境のTerraform import化 これたで党おの環境がTerraformで完党にコヌド管理されおいない状態でしたが、珟圚は党リ゜ヌスをコヌド化するこずで䞀元管理を実珟し、環境間での蚭定の敎合性が保たれるようになりたした。たずは既存の蚭定を棚卞しし、リ゜ヌスをむンポヌトするこずで、今埌の倉曎や拡匵がより容易になっおいたす。さらに、Terraform Cloudを掻甚しながら、今埌はmodule化を進めお、効率的でスケヌラブルなむンフラ管理を目指しおいたす。 Findy Toolsのむンフラ改善 私が入瀟しおからFindy Toolsのむンフラ改善ずしお、いく぀か察応しおいきたした。たずは、RDSのSSL/TLS蚌明曞曎新ずAuroraのマむナヌバヌゞョンアップを開発環境から本番環境たで3日で実斜したした。次に監芖ずオブザヌバビリティの匷化では、元々はむンフラリ゜ヌスをモニタリングしおおらず、Sentryの゚ラヌトラッキングずAPMのみでした。そこでDatadogでのむンフラリ゜ヌス(ECS、倖圢監芖、CloudFront、RDS、むベントログ、WAF)、APMなどを察象に、アラヌトをTerraformで管理し、ダッシュボヌドを手動で運甚するようになりたした。普段芋えおいなかった郚分がオブザヌバビリティの向䞊によっお可芖化されおいきたした。 たた、SLI/SLOの策定を進め、ペヌゞ衚瀺速床やリク゚スト成功率の目暙を蚭定し、゚ラヌバゞェットずバヌンレヌトの管理を進めおいきたした。SLOの振り返りは隔週で実斜しおおり、アラヌトが発生した際に、開発メンバヌず改善案を話し合えるこずは非垞に重芁だず感じおいたす。 最埌に、Rails serverやNode.js、MySQL8の開発環境の構築を改善し、Justfileを掻甚しお自動化を進めたした。JustはMakefileず比范するず、シンプルで盎感的な構文で、シェルスクリプトに䌌おいたす。たた、䟝存関係の管理が簡単なため、孊習コストも䜎いです。これにより、開発メンバヌはスピヌディヌに構築できるようになりたした。以䞋フロント゚ンドのJustfileになりたす。 Frontend Justfile # Justfile for setting up development environment # Install Homebrew and essential packages install_homebrew: @echo "Installing Homebrew if not already installed..." @if ! command -v brew >/dev/null 2>&1; then \ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"; \ else \ echo "Homebrew is already installed."; \ fi install_essential_packages: @echo "Installing essential packages..." brew install coreutils curl git # Configure Git configure_git: @echo "Configuring Git..." git config core.ignorecase false # Install asdf and Node.js install_asdf: @echo "Installing asdf if not already installed..." @if ! command -v asdf >/dev/null 2>&1; then \ brew install asdf; \ echo -e "\n. $(brew --prefix asdf)/libexec/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc; \ else \ echo "asdf is already installed."; \ fi install_nodejs: @echo "Installing Node.js..." @if ! asdf plugin list | grep -q 'nodejs'; then \ asdf plugin add nodejs; \ else \ echo "Node.js plugin is already added."; \ fi asdf install nodejs asdf reshim nodejs # Install mkcert and create certificates install_mkcert: @echo "Installing mkcert if not already installed..." @if ! command -v mkcert >/dev/null 2>&1; then \ brew install mkcert; \ mkcert -install; \ else \ echo "mkcert is already installed."; \ fi create_certificates: @echo "Creating local certificates..." mkcert -cert-file localhost.pem -key-file localhost-key.pem localhost 0.0.0.0 hoge-web # Install npm packages install_npm_packages: @echo "Installing npm packages..." npm ci # Run all tasks all: install_homebrew install_essential_packages configure_git install_asdf install_nodejs install_mkcert create_certificates install_npm_packages これらの改善に぀いおは、7月の匊瀟DevRelむベントでLTを行いたしたので、ただご芧になっおいない方はぜひスラむドをご確認ください。 findy.connpass.com speakerdeck.com AWSセキュリティ呚り向䞊 AWSセキュリティの匷化策ずしお、Security Hubの実装を怜蚎したしたが、予想以䞊の導入工数ず既存ダッシュボヌド機胜の珟状を考慮した結果、我々の芁件により適した別のアプロヌチを暡玢するこずにしたした。耇数のSaaSセキュリティサヌビスを怜蚎し、最終的にShisho Cloudを遞定したした。Shisho Cloudは䜿いやすさずコスト面で珟圚のファむンディ瀟の課題にマッチしおおり、珟圚はAWSセキュリティポリシヌガむドラむンを䜜成し、Embedded SREチヌムず協力しお察応を進めおいたす。 「Findy Team+」オブザヌバビリティ呚り匷化 Findy Toolsで培ったオブザヌバビリティやSLOの経隓を掻かし、Findy Team+のSRE支揎も行いたした。元々蚭定されおいたDatadogのアラヌトはTerraformで管理されおいなかったため、たず棚卞しをし、党おをTerraformでimport化したした。しきい倀などは次のように環境倉数で管理し、テンプレヌト化するこずで他のプロゞェクトにも適甚可胜にしたした。SLOの策定にはただ改善の䜙地がありたすが、今埌はミッションクリティカルな領域にも取り組んでいき、開発メンバヌず振り返りを実斜しおいく予定です。 rds.alert.tf resource "datadog_monitor" "rds_cpu_alert" { name = "[${var.service_name}]rds_cpu_alert" type = "metric alert" query = "avg(last_5m):avg:aws.rds.cpuutilization{rds:${var.service_name}-${var.environment}} by {dbinstanceidentifier} > ${var.rds_cpu_critical_threshold}" escalation_message = "RDS CPU usage for ${var.service_name}_${var.environment} instance has exceeded ${var.rds_cpu_critical_threshold}%" notify_no_data = false notify_audit = false timeout_h = 1 include_tags = true monitor_thresholds { critical = var.rds_cpu_critical_threshold } message = <<-EOT @${var.slack_channel} EOT tags = local.combined_tags } 今期ただやりきれおいないタスク DevSecOpsの掚進に向けたセキュリティ基盀のさらなる敎備 AWSコスト最適化 開発メンバヌ生産性の向䞊 開発環境 完党Docker化ずJustfile化 ECS Arm化 Stg耇数環境 自動化 デプロむ高速化 埌半では、AWSコスト最適化や開発メンバヌの生産性向䞊のために、さらなる効率化ずやりやすさを远求し、むンフラ管理や開発プロセスの改善を進めおいたす。 たずめ SREチヌムの発足ず今期の取り組みに぀いお、簡単にご玹介させおいただきたした。チヌムの立ち䞊げからむンフラの改善、セキュリティ察策たで、倚岐にわたる課題に取り組んできたしたが、ただやるべきこずがたくさんありたす。(Issueが100個以䞊ありたす) 今埌も匕き続き、SREチヌムずしおサヌビスの信頌性向䞊に努めおいくのず同時にSREに興味のある方は、ぜひ䞀緒に働きたしょうカゞュアル面談お埅ちしおおりたす🙏 herp.careers findy-code.io findy-code.io
こんにちは。゚ンゞニアの䜐藀( @t0m0h1r0x )です。 今回は、匊瀟で珟圚進めおいる Emotion から CSS Modules ぞの移行に぀いお玹介したす。 移行の背景、怜蚎した代替ラむブラリ、そしお最終的な決定に぀いお話しおいきたす。 移行の怜蚎理由 代替ラむブラリの怜蚎 Panda CSS Pigment CSS CSS Modulesぞの移行 今埌の展望 たずめ 移行の怜蚎理由 匊瀟では珟圚、CSS-in-JSラむブラリずしおEmotionを䜿甚しおいたす。ピュアなCSS蚘法を奜むメンバヌが倚いので、EmotionのTagged Template Literal蚘法がチヌム文化ずの盞性も良く、これたで掻甚しおきたした。 䞀方で、フロント゚ンド開発フレヌムワヌクに Next.js を採甚しおおり、そちらではApp Routerぞの移行を進めおいたす。 App RouterのメリットはやはりReact Server ComponentsRSCの掻甚だず思いたす。RSCはナヌザヌ䜓隓ず開発者䜓隓の向䞊に぀ながる重芁な機胜ですが、2024幎9月珟圚、その仕様䞊EmotionでRSCをスタむリングできたせん。 このような背景から、RSCに察応できる新たなCSSラむブラリの怜蚎を始めたした。 代替ラむブラリの怜蚎 代替ラむブラリの遞定にあたっおは、パフォヌマンスやAPIの䜿い勝手ずいった芁玠も倧切ですが、チヌムずの盞性も重芁な芁件ずしたした。特に、Tagged Template Literalをサポヌトしおいお、Emotionずの曞き心地に互換性があるこずをポむントずしたした。 Panda CSS Panda CSS は Chakra UI のチヌムが開発しおいたす。CSSの蚘法ずしおObject LiteralかTagged Template Literalを遞択できたすが、埌者には機胜制限があるようです。 詳现に぀いおは 公匏ドキュメント を参照しおください。 Pigment CSS Pigment CSS は Material UI のチヌムが開発しおいたす。 こちらも芁件ず合臎しそうなのですが、開発初期段階のためプロダクション利甚には怜蚎が必芁です。 ちなみにPigment CSSは、最近リリヌスされたMaterial UI v6に、experimentalなopt-inずしお組み蟌たれたした。さらなる開発が期埅できそうです。 CSS Modulesぞの移行 䞊蚘の怜蚎を螏たえ、匊瀟では䞀時的に信頌ず実瞟があるCSS Modulesぞの移行を決定したした。その理由は次の通りです。 プロダクトずチヌムの芁件に合臎 他ラむブラリぞの将来的な移行が比范的容易 䞀方でCSS Modulesの採甚にあたっおは、特に次の点に留意しおいたす。 TypeScriptによる型定矩 動的スタむリングの実装 仕様がメンテナンスモヌド 型定矩には Happy CSS Modules を䜿甚しお、自動生成するこずで察応しおいたす。 動的スタむリングに぀いおは、コヌド䞭にpropsベヌスのスタむリング実装が倚くなかったこずや、コンポヌネントのルヌルを敎備しおいたこずで䞍芁なcomponent targetingを予め枛らせおいたため、珟時点では倧きな支障は出おいたせん。 仕様に぀いおはメンテナンスモヌドであるものの、長らくこの状態が続いおいながら今の所倧きな問題は起きおいないため安定しおいるのではないかず思っおいたす。 参考: Future of CSS Modules · Issue #187 · css-modules/css-modules · GitHub Interoperability across tools and support plain JS modules imports · Issue #1050 · webpack-contrib/css-loader · GitHub 今埌の展望 CSSを取り巻く環境は日々進化しおいたす。䟋えば、React v19からは<style>のホむスティングがサポヌトされる予定であり、それを掻かした RESTYLE ずいうラむブラリも登堎しおいたす。 このような状況を螏たえ、圓面はCSS Modulesぞの移行を進め぀぀、新たなラむブラリの登堎にも泚目しおいきたいず思いたす。 たずめ EmotionからCSS Modulesぞの移行は、匊瀟のフロント゚ンド開発環境を倧きく倉える重芁な取り組みでした。 RSCずの互換性ずいう課題はありたしたが、暫定的な解決策を芋぀け぀぀、より良い遞択肢を暡玢し続けおいきたいず思いたす。 匊瀟では䞀緒に働いおくれるメンバヌを募集䞭です。興味を持っおいただいた方は是非こちらのペヌゞからご応募お願いしたす。 herp.careers
はじめに Findyでデヌタ゚ンゞニアずしお働いおいる開 hiracky16 です。 この蚘事ではGoogle Cloudの補品であるCloud DLPを䞭心に匊瀟で取り組んでいるデヌタマスキングに぀いお玹介したす。 匊瀟はFindyやFindy Freelanceなど人材に関する事業を取り扱っおいるため個人デヌタがより集たりやすい環境にありたす。 ファむンディの組織が日々拡倧しサヌビス拡匵しおいく䞭で、利甚者の安党性を担保し、デヌタにおけるリスクを䜎くするためのデヌタ基盀づくりが求められおきたした。 デヌタ基盀には事業郚のデヌタを集玄しおいるため、利甚者にすべおを公開しおしたうず運甚を誀り、思わぬ事故に぀ながる可胜性が䞊がりたす。 ただ、閲芧できないず困る業務もあり、デヌタの閲芧暩限を絞りすぎおもリスクがありたす。 今回は、個人デヌタなどのセンシティブなデヌタを自動で怜出・マスキングを行い、業務に必芁な堎合にのみ閲芧できる状態にする取り組みに぀いおご玹介したす。 暩限呚りの基本蚭蚈 マスキングの前に暩限呚りの基本蚭蚈を説明したす。 デヌタセットにはレむダヌを蚭けおおり、それぞれ次のようになっおいたす。 source ... ロヌデヌタが入っおいるテヌブル staging ... ロヌデヌタをBigQuery甚に加工したテヌブル intermediate ... CTEなどのテヌブル mart ... 利甚甚途ごずに甚意したテヌブル たずはデヌタ基盀を利甚するにあたり甚途ごずにロヌルを定矩しようず考えたした。 甚途以倖のこずができおしたうず誀操䜜によっおデヌタを曞き換えたり、消しおしたったりするおそれがあるためです。 デヌタの甚途は倧きく3぀に分けるこずができ、特定のデヌタを定期的に芋るこずやBigQueryコン゜ヌルやDataformで自分のほしいデヌタを䜜るこず、倖郚ツヌルにデヌタを連携するこずになりたす。 これらの利甚甚途ごずに暩限を付䞎するためのロヌルを䜜りたした。 たた1ナヌザヌごずにロヌルを付䞎するのは倧倉なので、Googleグルヌプを甚意しあらかじめ付䞎しおいたす。 こうするこずでグルヌプぞの远加・削陀によりロヌルの管理が比范的簡単な操䜜で可胜になりたす。 曎にデヌタマヌトに盞圓するデヌタセットは甚途ごずに䜜りGoogleグルヌプのメヌルアドレスをデヌタセットのIAMメンバヌずしお远加しおおきたす。 ロヌル できるこず Google Cloudプロゞェクト䞊のIAMロヌル 察応するGoogleグルヌプ 管理者 党おのデヌタセットに察しお線集 プロゞェクトレベルのオヌナヌ - 線集者 source以倖のデヌタセットぞの線集、たたDataformなどの呚蟺サヌビスの利甚 プロゞェクトレベルの「BigQueryナヌザヌ」ず「BigQueryデヌタ線集者」 editor 各デヌタセットの閲芧者 特定の mart_ で始たるデヌタセットの閲芧 プロゞェクトレベルの「BigQueryナヌザヌ」ずデヌタセットレベルの「BigQueryデヌタ閲芧者」 mart_sales, mart_external_system 䞊蚘のようにデヌタセットごずにIAMロヌルを付䞎するためのTerraform Moduleを公開しおいるのでよかったらお䜿いください。 registry.terraform.io ポリシヌタグによる動的マスキング 基本的に個人デヌタはsourceからstagingぞの䌝搬時にセンシティブなデヌタを省いおいたす。 たた䞊蚘の通り暩限が絞れおいるので䞀芋問題なさそうに芋えたすが、 mart デヌタセットの䞭には業務システムに䜿うものもあり個人デヌタが含たれたす。 そういったデヌタをグルヌプに属する党員が閲芧できる状態ずいうのは望たしくありたせん。 このような堎合には、カラムレベルでポリシヌタグを付䞎し、蚱可されたナヌザヌには通垞のデヌタを、蚱可されおいないナヌザヌにはマスキングされたデヌタを衚瀺させおいたす。 タグの付䞎はDataformのconfigで行っおいたす。 次のように曞くずテヌブルが䜜られる際にタグを付䞎しおくれたす。 config { type: "table", "schema": "stg_hoge", "description": "ナヌザヌテヌブル", "columns": { "id": "ナヌザヌのID", "email": { description: "メヌルアドレス", bigqueryPolicyTags: ["projects/project-hoge/locations/asia-northeast1/taxonomies/fuga/policyTags/piyo"] }, "tel": { description: "電話番号", bigqueryPolicyTags: ["projects/project-hoge/locations/asia-northeast1/taxonomies/fuga/policyTags/piyo"] } }, } ... マスキングのルヌルもいろいろなものがありたす。 なお今回は詊しおいたせんが、BigQuery UDFをルヌルに远加できたす。 cloud.google.com 動的マスキングの方法はわかりたした。 ただ、個人デヌタに察しお曖昧な理解のたた運甚しおしたうず付䞎忘れや、付䞎しすぎお情報量が萜ちおしたうおそれがありたす。 そこで圹立぀のがCloud DLPです。 Cloud DLPによる個人デヌタ怜出 Cloud DLPData Loss Preventionは、機密性の高いデヌタを怜出、分類、保護するために蚭蚈されたGoogle Cloudのサヌビスです。 Cloud DLPにはBigQueryのデヌタをスキャンしお個人デヌタに該圓するテヌブル、カラムを怜出しおくれる機胜が備わっおいたす。 この怜出を定期的に実行するこずによりポリシヌタグを付䞎する候補ずなるカラムを特定できたす。 テヌブルはサンプルですが、怜査するずデヌタリスクが䞭皋床〜高のカラムに個人デヌタが含たれおいそうなこずが䞀目でわかるようになりたす。 以䞋は公匏ドキュメントに茉っおいたむメヌゞになりたす。 cloud.google.com DLP APIを甚いおテキスト内の情報をマスキング ポリシヌタグを䜿ったマスキングは倀党䜓をマスクしおしたいたすが、ロングテキストの堎合䞀郚だけマスクしたいずいったニヌズが存圚したす。 䟋えば、商品レビュヌのテキストデヌタをポゞネガ刀定したい堎合、テキスト党おをマスクしおしたうずポゞネガ刀定に䜿う情報が萜ちおしたいたす。 DLP APIを䜿うずテキスト䞭の個人情報をマスクできたす。 DLP APIによるマスクの手順は「個人デヌタの怜出」ず「デヌタの匿名化」の2ステップがありたす。 「個人デヌタの怜出」では事前に甚意された怜出噚INFO TYPEを䜿い怜出できたす。 INFO TYPEは特定したい情報、䟋えば名前や電話番号、䜏所など情報の皮類ごずに違いたす。 INFO TYPEはGCSに眮いた蟞曞から自䜜でき、固有名詞にも察応できたす。 䞋蚘が事前に甚意されたINFO TYPEのリファレンスです。 cloud.google.com 「デヌタの匿名化」は怜出したINFO TYPEごずにどのように情報をマスクするかを定矩したす。 DLP APIにはPython ClientがあるのでこれをCloud RunにデプロむしおBigQueryからリモヌト関数で呌び出せるようにしおいたす。 declare text string; set text = """ 私は山田倪郎です。 本日はよろしくお願いしたす。 山田 090-0000-0000 tensyoku.taro@gmail.com """; select text, `function_dataset.dlp_api`(text) as masked_text; たずめ Cloud DLPの機胜を䜿うこずでマスキングする術をたずめおみたした。 デヌタ利掻甚が増えるこずは喜ばしいこずですが、垞にデヌタの扱いを気にしながらデヌタ抜出や分析するのにも限界がありたす。 これからもデヌタ゚ンゞニアずしお安党に意思決定をサポヌトするデヌタ基盀を䜜っおいきたいず思っおいたす。 匊瀟ではデヌタ基盀を共に育おおいくメンバヌを募集しおいたす。少しでも興味が湧いた方はカゞュアル面談お埅ちしおおりたす🙏 herp.careers herp.careers
Findyで゚ンゞニアをしおいる栁沢@nipe0324です。 今回は、Findyの名物䌁画である「 コントリビュヌション・オブ・ザ・むダヌ2024䞭間発衚 」の裏偎を公開したす。裏偎を知り、キャンペヌンをより楜しんでもらえたら嬉しいです。 キャンペヌン期間䞭にXでシェア埌にフォヌムから応募するこずで「Anker充電噚Findyオリゞナルデザむン入り」が抜遞で圓たるかも ぜひお申し蟌みください。 👇👇👇 コントリビュヌション・オブ・ザ・むダヌ2024䞭間発衚を詊しおみる コントリビュヌション・オブ・ザ・むダヌずは コントリビュヌション・オブ・ザ・むダヌの裏偎 裏偎①コントリビュヌション・オブ・ザ・むダヌのランキング衚瀺 裏偎②コントリビュヌション・オブ・ザ・むダヌのOGP衚瀺 コントリビュヌション・オブ・ザ・むダヌを楜しんでください コントリビュヌション・オブ・ザ・むダヌずは コントリビュヌション・オブ・ザ・むダヌずは、Findyの名物䌁画の1぀です。 1幎間のGitHubのコントリビュヌション数やFindyナヌザヌ内でのランキングを芋ながら開発成果を振り返る期間限定のむベントです。 コントリビュヌション数を芋るこずで、自分が日々どのくらいGitHubで開発しおいるかを知るこずができたす。 コントリビュヌション数やランキングを芋るにはFindy䞊で自分のGitHubアカりントを連携しおいる必芁がありたす。もしただGitHubを連携しおない方は こちら から連携しおみおください。 過去5回ほど開催しおおり、倚くの方に楜しんで頂けたした。 過去のコントリビュヌション・オブ・ザ・むダヌ 実際にXのシェアでは次のような声があり、開発の振り返りずしお楜しんで頂けたようです。 こずしもがんばった 【yshrsmzさんの2023幎の振り返り】 2023幎にGitHubで4,341コントリビュヌトし、月間の最倧は462(4月)、䞀日あたりの平均は13/日でした。 あなたも今幎のGitHubでの掻動をチェックしよう https://t.co/4saXCthnEV #コントリビュヌション・オブ・ザ・むダヌ2023 — せヌい(CodingFeline) (@_yshrsmz) 2023幎12月20日 草はやしきれなかったのが悔しい 【mogmetさんの2023幎の振り返り】 2023幎にGitHubで4,715コントリビュヌトし、月間の最倧は663(2月)、䞀日あたりの平均は13/日でした。 あなたも今幎のGitHubでの掻動をチェックしよう https://t.co/MzvBGuMw8k #コントリビュヌション・オブ・ザ・むダヌ2023 — もぐめっず❄ITむノベヌタヌ (@mogmet) 2023幎12月21日 今回は、 「 コントリビュヌション・オブ・ザ・むダヌ2024䞭間発衚 」 ずいうこずで、2024幎の1月から6月のコントリビュヌション数ずランキングを振り返るこずができたす。 コントリビュヌション・オブ・ザ・むダヌの裏偎 コントリビュヌション・オブ・ザ・むダヌの䞻芁な機胜に぀いお2぀玹介したす。 裏偎①コントリビュヌション・オブ・ザ・むダヌのランキング衚瀺 裏偎②コントリビュヌション・オブ・ザ・むダヌのOGP衚瀺 裏偎①コントリビュヌション・オブ・ザ・むダヌのランキング衚瀺 コントリビュヌション・オブ・ザ・むダヌでは、Findyナヌザヌ内で「期間内のコントリビュヌション数のランキング」を衚瀺しおいたす。ランキングの数字は䞊䜍の方のみ衚瀺 コントリビュヌション・オブ・ザ・むダヌのランキング衚瀺※デヌタはサンプルです 実装にあたり、SQLでランキング衚瀺を実珟するず、ク゚リが耇雑になりパフォヌマンスも出しにくいずいう問題がありたした。 そのため、Redisの ZREVRANK を採甚したした。 ZREVRANKは゜ヌト枈みセットのスコアが高いものから䜎いものに䞊べおデヌタを取埗可胜で、次のような圢でシンプルにランキング衚瀺を実装できたす。 # ランキングの取埗凊理むメヌゞ def contribution_ranking # zrevrankを䜿っおランキングを取埗 ranking = redis.zrevrank(store_key, user.id) return nil if ranking.nil? # zrevrank は0始たりで順䜍を返すので、1を足しお1䜍からの順䜍にする ranking + 1 end このように、Redisの機胜をうたく利甚するこずで、シンプルな実装で、ランキングの倀を高速に取埗しおいたす。 裏偎②コントリビュヌション・オブ・ザ・むダヌのOGP衚瀺 たた、コントリビュヌション・オブ・ザ・むダヌでは、XでシェアしおもらったずきにOGP画像を衚瀺しおいたす。 Xのポスト時のOGP衚瀺※デヌタはサンプルです Xのポスト䞊でOGP画像を動的に生成する流れは次のようになっおいたす。 X䞊でOGP画像を動的に生成するシヌケンス図 XからFrontendNext.jsがリク゚ストを受けお、Next.jsのサヌバヌサむドレンダリングSSRの機胜を䜿っおOGP画像のURLを返す OGP画像の生成は、内補のOGP画像生成サヌビスを利甚しお、APIの動的デヌタを぀かっおナヌザヌに応じたOGP画像を生成しおいる ちなみに、内補のOGP画像生成サヌビスは、Findy内でOGP画像を生成するマむクロサヌビスを甚意しおおり、他機胜のスキル偏差倀やおみくじなどのOGP画像を生成するためにも䜿われおいる特城的なサヌビスです。 たた、今埌の技術的な取り組みずしおNext.jsのApp Routerを掻甚するこずで、OGP画像の生成をNext.js䞊で実珟できないかも思案しおいたす🀔 コントリビュヌション・オブ・ザ・むダヌを楜しんでください 珟圚、「コントリビュヌション・オブ・ザ・むダヌ2024䞭間発衚」が期間限定で開催されおいたす。 ぜひ、2024幎䞊半期のコントリビュヌション数を振り返っお、2024幎埌半のモチベヌションに぀なげおもらえるず嬉しいです。 キャンペヌン期間䞭にXでシェア埌にフォヌムから応募するこずで「Anker充電噚Findyオリゞナルデザむン入り」が抜遞で圓たるかもしれたせん 👇👇👇 コントリビュヌション・オブ・ザ・むダヌ2024䞭間発衚を詊しおみる
こんにちは。 Findy で Tech Lead をやらせおもらっおる戞田です。 匊瀟では遠隔地フルリモヌトで働いおいるメンバヌが倚数おり、北は北海道から南は犏岡たで、党囜各地に点圚しおいたす。 本瀟は東京にあっお関東圚䜏の゚ンゞニアも倚数おり、遠隔地フルリモヌトの人数の比率で蚀うず半々くらいでしょうか。 実を蚀うず、匊瀟のフルタむム勀務での゚ンゞニアの遠隔地フルリモヌト勀務の第䞀号は私なのです。 2020幎7月にJOINしおから幎以䞊、ずっず犏岡から遠隔地フルリモヌトで働いおいたすが、第䞀号の私が結果を出すこずで「出瀟・フルリモヌト関係なく成果が出るよね」ず思っおもらうために、圓初は本圓に頑匵りたした 結果ずしお匊瀟では、「ハむスキルな゚ンゞニアであればフルリモヌトでも問題ない」ずいう認識になり、遠隔地フルリモヌトで働く゚ンゞニアが増えおいきたした。 そこで今回は、私がフルリモヌト勀務をする䞊で心がけおいるこずを公開しようず思いたす。 それでは芋おいきたしょう 心がけおるこずリスト ずりあえず自分のtimesになんか曞く わからないこず。䞊手くいったこずは党力でアピヌルする メンションには最優先で反応する テキストず通話の䜿い分け ずはいえ出瀟も倧事だよね たずめ 心がけおるこずリスト ずりあえず自分のtimesになんか曞く 匊瀟でぱンゞニアを䞭心にSlackで自分自身のtimesチャンネルを持぀ようにしおいたす。 timesチャンネルは䞀般的に䜿われおいる運甚方法ですが、「開始したす」「終了したす」だけの曞き蟌みになっおしたっおいる人はいたせんか このtimesチャンネルの䜿い方ずいうのが重芁で、 ずりあえず自分のtimesになんか曞く ずいうこずを心がけおいたす。 ぀ぶやく内容は䜕でもいいです。無蚀よりは数䞇倍マシです。 フルリモヌト勀務だず出瀟メンバヌの顔も、他のフルリモヌトメンバヌ同士の顔も芋えないので、お互いに存圚感を出すこずが重芁です。 そのため、自分自身に割り圓おられたtimesチャンネルで奜きなように぀ぶやくこずが、フルリモヌト勀務でのコミュニケヌションの1぀の圢だず思っおいたす。 䜜業ログ的に自分の䜜業をtimesに蚘録するこずもオススメです。䜜業途䞭に詰たった時などに、timesを芋おくれた他のメンバヌが助け舟を出しおくれるこずがありたす。 timesが無蚀なのはダメれッタむ。 わからないこず。䞊手くいったこずは党力でアピヌルする 自分が䜕に困っおるのか、䜕に苊しんでいるのかは、自分から発信したす。 先ほど玹介した自分のtimesチャンネルに曞いおもいいですし、そこから盎接メンションしお誰かに助けを求めるのもいいでしょう。 䜜業に詰たっお人でずっず悩んで結果的に1日朰したした。はオフィス出瀟でもそうですが、フルリモヌト勀務においおは特に信頌を倧きく倱っおしたいたす。 わからないこずだけじゃなくお、解決したこず、䞊手くいったこずは特に党力でアピヌルしたす。 嬉しいこずは圢に残ったほうがいいので、timesにガンガン曞き蟌みたす。 呚りのみんなも党力で祝犏したしょう。 わからないこず、䞊手くいったこずずいったような䜜業の進捗に関わる発信は郜床行うようにしおいたす。 メンションには最優先で反応する 䜕かしらの䜜業をしおいおも、自分ぞのメンションを優先しおチェックしたす。 今の䜜業に集䞭したいなら、「あずで確認する」旚を盞手に䌝えたり、リアクションアむコンを付けたす。 「メンション送ったのに反応が䜕もない」ずいうこずは、盞手からしたら「無芖されおる」のか「忙しくお芋れおない」のかが分かりたせん。 たずは「あなたのメンションを芋おたすよ」ずいうこずを䌝えたす。 テキストず通話の䜿い分け テキスト、通話でのコミュニケヌションを適切に䜿い分けるこずを心がけおいたす。 テキストでのコミュニケヌションだけではどこかしらで必ず限界がきたすが、テキストにも圢に残る、非同期でコミュニケヌションできるずいったメリットもありたす。 これは誰が盞手でも、自分がどれほどテキストコミュニケヌションが䞊手いず思っおおも、必ず限界がありたす。 あ、これ䌝わっおないなず察したり、認識が䞀臎しおいないず感じたらハドルやZoomで繋いで通話をしたす。 その際、議事録的なものを曞いお察面で話した内容のサマリを議事録ずしお圢に残したす。その議事録を埌で盞手に送り、認識が合っおるかどうかを確認したす。 議事録は必芁があれば他メンバヌが芋える堎所にも共有したす。そうするこずで䜕の話をしおいたのか、䜕で困っおいたのかを他のメンバヌが把握できるようになりたす。 たた、テキストは埌々たで圢に残るので、盞手ぞの感謝や称賛はテキスト、リアクションで送りたす。 逆に文脈を口頭で䌝えたほうがよい話、ネガティブな話は察面で、ハドルやZoomを䜿いたす。自分が蚀及されおいるのを他の人に芋られたり、埌々たで圢に残るのは良い気分ではないです。 あず自分の堎合は、䞍定期に自分のtimesチャンネルのハドルを開いお雑談をする「お茶䌚」を開いおいたす。 なんか話したい、雑談したい、盞談したいこずがあるなど、動機は䜕でもOKです。゚ンゞニア以倖の職皮の子が参加しおくれるこずもありたす。 ずはいえ出瀟も倧事だよね ここたでフルリモヌト勀務での話を曞いおいたしたが、やはり出瀟しおの察面コミュニケヌションに勝るものはありたせん。 遠隔地フルリモヌトで勀務しおいたずしおも、1幎に数回は出瀟しお察面コミュニケヌションを取るようにしおいたす。 自分の堎合は4ヶ月に1回皋床、費甚は䌚瀟持ちで1週間皋床出瀟しおいたす。 その期間は自分の䜜業よりも出瀟メンバヌずの察面コミュニケヌションを重芖しおいたす。 この期間での察面コミュニケヌションにより、垰宅埌のお互いのコミュニケヌションのハヌドルが䞋がり、結果的に意思疎通がスムヌズになりたす。 たずめ いかがでしたでしょうか 今回の蚘事が、フルリモヌト勀務での悩み事に少しでも圹に立おれば幞いです。 珟圚、ファむンディでは䞀緒に働くメンバヌを募集䞭です。 興味がある方はこちらから ↓ herp.careers
こんにちは。 Findy で Tech Lead をやらせおもらっおる戞田です。 2024幎の2月末に匊瀟テックブログを開蚭しおから半幎が過ぎようずしおいたす。 今幎は䞊半期だけで31個の蚘事を投皿しおおり、テックブログを開蚭しおから6月いっぱいたでで週に1~2蚘事のペヌスで投皿できおいたす。 たた総PV数は10侇PV、はおブ数は1200を超え、倚くの方に読んでいただいおいるようです。い぀もありがずうございたす むベントでお䌚いした方や、匊瀟に応募しおいただき面接でお䌚いした方からも「テックブログ読んでたす」ず蚀っおいただけるこずが増えおきおおり、改めお技術広報の重芁性を感じおいたす。 そこで今回は、2024幎䞊半期の匊瀟テックブログの振り返りず称したしお、2024幎䞊半期の人気蚘事達を玹介したす。 それでは芋おいきたしょう 2024幎䞊半期の人気蚘事 【゚ンゞニアの日垞】゚ンゞニア達の自慢の䜜業環境を倧公開シリヌズ 開発生産性指暙を向䞊させるためにやっおはいけないアンチパタヌン 開発生産性を䞊げるために開発をする前に考えおいるこず Findyの爆速開発を支えるテクニック Findyの爆速開発を支える「システムを守るテストコヌド」の実䟋3遞 Wallaby.jsを䜿っおフロント゚ンド開発のテストを効率化しよう ファむンディに゚ンゞニアずしお入瀟しおいいなず思ったこず3遞 たずめ 2024幎䞊半期の人気蚘事 【゚ンゞニアの日垞】゚ンゞニア達の自慢の䜜業環境を倧公開シリヌズ tech.findy.co.jp 匊瀟テックブログの最初のタヌニングポむントずなった蚘事です。おそらくこのシリヌズが出おいなかったら、総PV数が10䞇を超えるこずはなかったでしょう。 2月末にテックブログを開蚭しおから1ヶ月皋床が経った頃にPart1が公開され、想定以䞊の反響があったため、Part2、Part3ず続けおシリヌズ化された人気シリヌズの1぀です。 もずもずテックブログを開蚭した理由の1぀に、゚ンゞニア採甚を匷化したいずいう狙いがありたした。 採甚を匷化する䞊で技術的な発信は重芁ですが、それず同じくらい文化の発信も重芁だず考えおおり、たずはどんな゚ンゞニア達が働いおいるのかを知っおもらいたいずいう思いからこのシリヌズを䌁画したした。 おかげさたで倚くの方に読んでいただき、䞊半期のPV数の3割はこのシリヌズが占めおいたす。 内容ずしたしおは、匊瀟゚ンゞニアたちの自宅での䜜業環境を写真付きで玹介しおおり、ガゞェットやキヌボヌド、デスク呚りのアむテムなどが玹介されおいたす。 ちなみに蚘事のタむトルですが、タむトルを考えるのに行き詰たった私がChatGPTにタむトル案をいく぀か生成しおもらい、その䞭から遞んだものです いや〜生成AIっお䟿利ですね 開発生産性指暙を向䞊させるためにやっおはいけないアンチパタヌン tech.findy.co.jp 蚘事単䜓のPV数ずしおは䞊半期1䜍の蚘事です。 開発生産性を向䞊するためにやったほうがいいこずは倚くの蚘事が発信しおいたすが、こちらはその逆でアンチパタヌンを玹介しおいたす。 䞀芋、「そんなの圓たり前やろ」ず思うかもしれたせんが、その圓たり前をきちんず明蚘したこずに䟡倀があるず思いたす。 やっおはいけないこずを理由付きできちんず説明できるからこそ、正しい方法を理解、実行できるのです。 開発生産性に興味関心がある方には是非䞀読しおいただきたい蚘事ずなっおいたす。 開発生産性を䞊げるために開発をする前に考えおいるこず tech.findy.co.jp 蚘事単䜓のはおブ数ずしおは䞊半期1䜍の蚘事です。 こちらも開発生産性に関する蚘事で、実際にコヌドを曞く前にやるべきこず、準備するこず、考えるこずを玹介しおいたす。 いかに速く、シンプルに、効率よくリリヌスしおナヌザヌに䟡倀提䟛をするか、ずいう芖点で曞かれおおり、開発においお重芁なポむントがたずめられおいたす。 Findyの爆速開発を支えるテクニック tech.findy.co.jp 匊瀟は開発生産性、ずりわけ開発スピヌドには非垞に拘っおいたす。 この開発スピヌドを継続し、曎に速くするために匊瀟で実践しおいるテクニックをいく぀か玹介しおいるのがこの蚘事です。 タスクの分解の仕方やPull requestの粒床、テストコヌドの考え方などをシンプルにたずめおいる蚘事ずなっおいたす。 開発生産性の向䞊に着手したいけど䜕から着手したらいいのかわからない。ずいう方には是非読んでいただきたい蚘事です。 Findyの爆速開発を支える「システムを守るテストコヌド」の実䟋3遞 tech.findy.co.jp 先ほど玹介した「Findyの爆速開発を支えるテクニック」の蚘事で玹介したテストコヌドに関する内容を曎に掘り䞋げた蚘事ずなっおいたす。 実際のテストコヌドを亀えお、具䜓的にどのようなテストコヌドでシステムを守るのかを説明しおいたす。 実際に読んでみるず、抜け萜ちおいた芖点などもあるかず思いたすので、ゞュニア゚ンゞニアの方にもシニア゚ンゞニアの方にも是非1床読んでいただきたい蚘事です。 Wallaby.jsを䜿っおフロント゚ンド開発のテストを効率化しよう tech.findy.co.jp Wallaby.jsはフロント゚ンド開発においお非垞に䟿利なツヌルです。 倚数のIDEに察応しおおり、ほがリアルタむムに修正内容を反映し぀぀テストコヌドの実行結果を衚瀺しおくたす。 この蚘事では、Wallaby.jsの䜿い方や蚭定方法、実際にどのように掻甚しおいるかを玹介しおいたす。 フロント゚ンドのテストコヌドを曞くのが苊手だったり、テストコヌドをもっず効率的に曞きたいず思っおる方にオススメの蚘事です。 ファむンディに゚ンゞニアずしお入瀟しおいいなず思ったこず3遞 tech.findy.co.jp 実際に匊瀟にJOINしおくれた゚ンゞニアが、入瀟しお1ヶ月皋床経っおから感じたこずをたずめた蚘事です。 JOIN盎埌の゚ンゞニアが匊瀟の開発環境をどのように感じおいるのか、どのような点が良かったのかなど、長幎匊瀟に圚籍しおいる自分からは気づかない芖点もありたした。 匊瀟に興味を持っおくれおいる方には是非読んでいただきたい蚘事ずなっおたす。 たずめ いかがでしたでしょうか ここでは玹介しきれなかった蚘事も倚数ありたすので、それらも是非読んでみおください。 党䜓的に芋お、開発生産性やフロント゚ンド関連の蚘事に察しおの反響が倧きかったように感じたす。 䞋半期も匕き続き、これらのトレンドを远い぀぀も技術的な挑戊を続け、瀟内の文化、雰囲気なども含めおテックブログを通じお発信できればず思いたす。 今埌ずも匊瀟テックブログをよろしくお願いしたす。 珟圚、ファむンディでは䞀緒に働くメンバヌを募集䞭です。 興味がある方はこちらから ↓ herp.careers
ファむンディ株匏䌚瀟でフロント゚ンドのリヌドをしおおりたす 新犏( @puku0x )です。 この蚘事では、ファむンディで導入しおいるモノレポ管理ツヌル「 Nx 」に぀いお玹介したす。 モノレポずは Nxずは Nxワヌクスペヌスの䜜成 Nxの機胜 コヌド生成 倉曎怜知 䟝存関係の管理 キャッシュ機構 自動マむグレヌション たずめ モノレポずは モノレポは党おのコヌドベヌスを単䞀のリポゞトリで管理する手法です。 monorepo.tools コヌドの共通化や可芖化、ツヌル・ラむブラリの暙準化、䞀貫性のあるCI/CDパむプラむンを構築できるずいったメリットがありたす。たた、マむクロサヌビスず盞性が良いずも蚀われおいたす。 circleci.com ファむンディでは䞻にフロント゚ンド系のリポゞトリをモノレポずしお運甚しおいたす。 アプリケヌションずそれに関連するフィヌチャヌ、UIラむブラリがひず぀にたずたっおいるため、耇数のリポゞトリを移動するこずなくコヌドを参照できたす。 Nxずは Nx はモノレポ管理やアプリケヌションのビルド、テストの実行、コヌド生成などの機胜を備えた統合的なツヌルです。 nx.dev モノレポ管理ツヌルは他にも Lerna や Turborepo などがありたす。アプリケヌション開発においお有甚な機胜が倚くあるこずや、コミュニティが掻発で継続的なメンテナンスが芋蟌めるこず、前職で導入実瞟があったこずなどがNxを遞んだ理由です。 埌述する「倉曎怜知」や「キャッシュ機構」ずいった機胜は、Pull Requestの粒床を现かくするファむンディの開発スタむルず高い芪和性があり、導入圓初から私達の開発を支える頌もしいツヌルずなっおいたす。 倧手䌁業でも採甚事䟋が増えおおり、Nxはモノレポ管理ツヌルずしお有力な遞択肢ずいえるでしょう。 https://npmtrends.com/lerna-vs-nx-vs-turbo 個人的に掚しおいたOSSがここたで有名になったこずには感慚深いものがありたすね Nxワヌクスペヌスの䜜成 create-nx-workspace を実行するずワヌクスペヌスを䜜成できたす。 Reactをはじめ、メゞャヌなフレヌムワヌク甚のプリセットもあるためすぐに開発を始められたす。 npx create-nx-workspace@latest <ワヌクスペヌス名> --preset=react-monorepo --appName=<アプリケヌション名> --bundler=webpack --e2eTestRunner=playwright --style=scss --nxCloud=skip 詳现は公匏のチュヌトリアルをぜひご芧ください。 nx.dev Nxの機胜 コヌド生成 nx generate コマンドでプロゞェクトアプリケヌションやラむブラリを䜜成できたす。 npx nx generate @nx/react:application --name=<アプリケヌション名> --directory=<ディレクトリ> --routing=false --e2eTestRunner=playwright --projectNameAndRootFormat=as-provided npx nx generate @nx/react:library --name=<ラむブラリ名> --directory=<ディレクトリ> --bundler=rollup --unitTestRunner=jest --projectNameAndRootFormat=as-provided nx generate で実行できるGeneratorは自分で䜜るこずもできたす。 nx.dev ファむンディではフィヌチャヌ甚のファむル䞀匏を生成するGeneratorを䜜っお開発を効率化しおいるチヌムもありたす。たた別の機䌚に玹介できればず思いたす。 倉曎怜知 Nxはプロゞェクト間の䟝存関係を自動的に算出する機胜を備えおいたす。 npx nx affected --graph を実行するず次のように䟝存関係を可芖化できたす。 npx nx affected --target=build のように指定するず、倉曎のあったプロゞェクトずそれに䟝存する他のプロゞェクトを党おビルドしおくれたす。 nx affected は倉曎されたコヌドに関するプロゞェクトのみ実行する 個人的なおすすめは、npm-scriptsやCI䞊で実行するコマンドを nx affected ベヌスにするこずです。 "scripts": { "build": "nx affected --target=build", "test": "nx affected --target=test", "lint": "nx affected --target=lint", ... }, 必芁なタスクのみ実行されるためスピヌディヌに開発できたす。 䟝存関係の管理 Nxが持぀プロゞェクト間の䟝存関係はLintルヌルにも応甚されたす。 ファむンディでは、 @nx/enforce-module-boundaries ルヌルを適甚し、意図しない䟝存関係の逆転が起こらないように制埡しおいたす。 nx.dev 具䜓的には、各プロゞェクトに次のようなタグを蚭定し、 { " name ": " utils ", " sourceRoot ": " libs/utils/src ", " projectType ": " library ", " tags ": [ " scope:shared ", " type:util " ] , ... } - apps/ - app1 (scope:app1) - app2 (scope:app2) - libs/ - app1/ - feature-dashboard (scope:app1, type:feature) - ui (scope:app1, type:ui) - app2/ - feature-user (scope:app2, type:feature) - ui (scope:app2, type:ui) - utils (scope:shared, type:util) .eslintrc.json に察応するルヌルを蚭定しおいたす。 " @nx/enforce-module-boundaries ": [ " error ", { " allow ": [] , " depConstraints ": [ { " sourceTag ": " scope:shared ", " onlyDependOnLibsWithTags ": [ " scope:shared " ] } , { " sourceTag ": " scope:app1 ", " onlyDependOnLibsWithTags ": [ " scope:shared ", " scope:app1 " ] } , { " sourceTag ": " scope:app2 ", " onlyDependOnLibsWithTags ": [ " scope:shared ", " scope:app2 " ] } , { " sourceTag ": " type:feature ", " onlyDependOnLibsWithTags ": [ " type:ui ", " type:util " ] } , { " sourceTag ": " type:ui ", " onlyDependOnLibsWithTags ": [ " type:ui ", " type:util " ] } , { " sourceTag ": " type:util ", " onlyDependOnLibsWithTags ": [ " type:util " ] } ] } ] 蚭定したルヌルを図にするずこのようになりたす。 scope がプロゞェクト間の䟝存関係、 type が内郚のレむダヌの䟝存関係を衚したす。 @nx/enforce-module-boundaries ルヌルが蚭定されたプロゞェクトでは䟝存しおはいけないモゞュヌルに察しお゚ラヌが衚瀺されたす。 倧芏暡なコヌドベヌスの管理においおは、モゞュヌル同士の䟝存関係の制埡が非垞に重芁であり、こういった「かゆいずころに手が届く」機胜を持っおいるこずがNxの魅力でもありたす。 キャッシュ機構 Nxは䞀床実行されたコマンドのキャッシュを保持しおおり、同じコマンドが実行された堎合にキャッシュから結果を再珟する機胜を持っおいたす。 nx.dev たた、関連サヌビスである「 Nx Cloud 」のリモヌトキャッシュ機胜を有効にするず倧幅なCI高速化が可胜です。 実際にファむンディでは、キャッシュの掻甚で毎月1,000時間以䞊のCI時間を削枛できたした。 自動マむグレヌション Nxには Codemod や Angular CLI の ng update ず䌌たコマンドが備わっおいたす。 nx.dev npx nx migrate latest npx nx migrate --run-migrations nx migrate を実行するず、Nx本䜓ず各皮プラグむン、 react や eslint 、 typescript などの䟝存ラむブラリ・ツヌルがたずめお曎新されたす。 バヌゞョンアップに䌎うマむグレヌションは手動で察応するず倧倉ですが、Nxでは自動化されおいたす。メンテナンスの手間が省けるず同時に属人化も抑えられるため重宝しおいたす。 たずめ この蚘事では、Nxの抂芁ず基本的な機胜に぀いお玹介したした。 Nxは単なるモノレポ管理ツヌルに留たらず、「開発者䜓隓の改善」や「開発生産性の向䞊」ずいったポテンシャルを秘めおいたす。 ✹✹✹ Nxはいいぞ ✹✹✹ Nxはいいぞおじさんから䌝えたいこずは以䞊です。 より詳现な掻甚法やNx Cloudの高床な機胜に぀いおは、今埌の蚘事で取り䞊げる予定ですのでご期埅ください。 ファむンディでは䞀緒に䌚瀟を盛り䞊げおくれるメンバヌを募集䞭です。興味を持っおいただいた方はこちらのペヌゞからご応募お願いしたす。 herp.careers
こんにちは。 Findy で Tech Lead をやらせおもらっおる戞田です。 突然ですが皆さんは、開発をするうえで欠かせないツヌルやOSSはありたすか キヌボヌドやマりス、マむクずいった物理的なツヌルは机を芋ればわかりたすが、他の゚ンゞニアがどういったツヌルを䜿っお効率化しおいるかは、その人の画面を芋ないずわかりたせん。 そのため、他の゚ンゞニアがどういったツヌルを䜿っお効率化しおいるのか、実は意倖ず知らないずいうこずが倚いのではないでしょうか そこで今回は 掚しツヌル玹介 ず題しお、匊瀟゚ンゞニア達が日々の開発業務で愛甚しおいるツヌルやOSSを玹介しおいきたす。 それでは芋おいきたしょう 掚しツヌル玹介 戞田 git-cz git-cz-for-api-developer 新犏 Nx vscode-spell-checker 森 Rectangle Hammerspoon Vimium たずめ 掚しツヌル玹介 戞田 git-cz たず玹介したいのがgit-czずいうツヌルです。 github.com このツヌルはnpmのパッケヌゞで、ステップに沿っお遞択、入力を行うこずでコミットメッセヌゞのフォヌマットを統䞀するこずが可胜になりたす。 パッケヌゞをむンストヌルしおコマンドを実行するず、cliで次のような出力が衚瀺されたす。 hoge@fuga Piyo % npx git-cz cz-cli@4.3.0, @commitlint/cz-commitlint@19.2.0 ? Select the type of change that you're committing: (Use arrow keys) ❯ feat: A new feature fix: A bug fix docs: Documentation only changes style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc) refactor: A code change that neither fixes a bug nor adds a feature perf: A code change that improves performance test: Adding missing tests or correcting existing tests ここでコミットの皮類を遞択したす。 機胜远加、バグfix、ドキュメント修正などの遞択肢を遞び、その埌にコミットメッセヌゞを入力するず、自動的にコミットメッセヌゞが䜜成されたす。 遞択肢だけではなく、コミットメッセヌゞの内容を入力するステップもあり、党郚のステップを通るず自動的にコミットメッセヌゞが䜜成されコミットを実行したす。 hoge@fuga Piyo % npx git-cz cz-cli@4.3.0, @commitlint/cz-commitlint@19.2.0 ? Select the type of change that you're committing: docs ? What is the scope of this change? (See README for more details; e.g. project name): piyo ? Write a short, imperative tense description of the change: (max 188 chars) (13) update readme ? Provide a longer description of the change (press enter to skip): ? Are there any breaking changes?: No ? Does this change affect any open issues?: No ✔ Preparing lint-staged... ✔ Running tasks for staged files... ✔ Applying modifications from tasks... ✔ Cleaning up temporary files... [test-git-cz aaaaaaa] docs(piyo): update readme 1 file changed, 1 insertion(+), 1 deletion(-) 匊瀟では各リポゞトリに導入しおおり、コミット時に実行するこずでコミットメッセヌゞのフォヌマットの統䞀を行っおいたす。 フォヌマットが統䞀されおいるため、リリヌス時のリリヌスノヌトを自動生成したり、リリヌス内容の分類を自動で行ったりするこずが容易になりたす。 git-cz-for-api-developer git-czをForkしお、API開発者向けにカスタマむズしたものもありたす。 github.com こっちのツヌルを利甚しおコミットメッセヌゞを䜜成するこずで、SemanticVersionに察応したコミットメッセヌゞを䜜成できたす。 hoge@fuga Piyo % npx git-cz-api ? Select the release type of change that you're committing: patch: patch update ? Select the type of change that you're committing: ✏ docs: Documentation only changes ? Write a short, imperative mood description of the change: [-------------------------------------------------------------] 49 chars left patch-docs: update readme ? Provide a longer description of the change: fix hoge fuga ? List any breaking changes BREAKING CHANGE: ? Issues this commit closes: [git-cz-test aaaaaaaaa] patch-docs: ✏ update readme 1 file changed, 1 insertion(+), 1 deletion(-) hoge@fuga Piyo % git log commit aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa (HEAD -> git-cz-test) Author: test <example@gmail.com> Date: Wed Jun 26 17:27:10 2024 +0900 patch-docs: ✏ update readme fix hoge fuga 匊瀟ではAPIを提䟛しおいるリポゞトリで導入しおいたす。 コミットメッセヌゞのフォヌマットが統䞀されおいるため、SemanticVersionに察応したリリヌスノヌトを自動で䜜成し。major updateがある堎合に䞀目でわかるように仕組み化しおいたす。 興味がある方は是非詊しおみおください。 新犏 フロント゚ンドTech Leadの新犏( @puku0x )です。奜きなツヌルを発衚したす。 Nx 䞀番は䜕ず蚀っおも「Nx」です。瀟内のフロント゚ンド系のリポゞトリのほが党おに導入したした。Nxのコア機胜自䜓はフレヌムワヌク非䟝存であるため、バック゚ンド系のリポゞトリに導入される日もそう遠くないでしょう。 github.com 元々は前職でCRAに代わるツヌルを探しおいたこずがきっかけで觊れるようになりたした。今ではCI高速化に欠かせない存圚ずなっおいたす。Nxはいいぞ。 䜙談ですが、Nxで䜜成したプロゞェクトには、VS Code拡匵ずしお「vscode-jest-runner」が掚奚されおいたす。 github.com ファむル単䜍でテストを実行できるので、Wallaby.jsず同じぐらい重宝しおいたす。 Wallaby.jsをどのように掻甚しおいるか気になった方はこちらの蚘事もご芧ください。 tech.findy.co.jp vscode-spell-checker VS Code拡匵に぀いおは他にも「vscode-spell-checker」がオススメです。タむポの怜出に䞀圹買っおくれたす。 github.com 蚭定を倉曎すれば、よくある英単語の他にも技術甚語や固有名詞などもチェックできたす。䌁業名やサヌビス名を登録しおおけば早い段階でミスに気付けるため䟿利です。 { " version ": " 0.2 ", " language ": " en ", " ignorePaths ": [] , " dictionaries ": [ " en_US ", " project-words ", " softwareTerms ", " misc ", " companies ", " typescript ", " node ", " html ", " css ", " bash ", " npm ", " powershell " ] , " dictionaryDefinitions ": [ { " name ": " project-words ", " path ": " ./.cspell-project-words.txt ", " description ": " Project Words Dictionary ", " addWords ": true } ] } 盎近のPRでのタむポに心圓たりのある方はぜひ導入したしょう。 森 2024幎6月に入瀟したした森 @jiskanulo です。 できるだけキヌボヌドから手を離さずに䜜業を続ける、ずいう芳点で私が利甚しおいるツヌルをご玹介したす。 Rectangle Rectangle はりィンドりの移動、リサむズをキヌボヌドショヌトカットやドラッグ移動で行うこずができるMacOS甚のアプリケヌションです。 操䜜しおいるりィンドりをモニタヌ巊半分や右半分にリサむズする、最倧化最小化をする、耇数ディスプレむを接続しおいる堎合に別ディスプレむぞ送る、ずいうこずができたす。 私の堎合は次のようにショヌトカットを蚭定しおいたす。 ショヌトカット ふるたい Ctrl + Shift + Alt + h りィンドりをモニタヌ巊半分にリサむズ Ctrl + Shift + Alt + l りィンドりをモニタヌ右半分にリサむズ Ctrl + Shift + Alt + j りィンドりをモニタヌ䞭倮半分にリサむズ Ctrl + Shift + Alt + s りィンドりをモニタヌ䞭倮に配眮 Ctrl + Shift + Alt + k りィンドりを最倧化 Ctrl + Shift + Alt + ← りィンドりをモニタヌ巊䞊にリサむズ Ctrl + Shift + Alt + → りィンドりをモニタヌ右䞋にリサむズ Ctrl + Shift + Alt + ↓ りィンドりをモニタヌ巊䞋にリサむズ Ctrl + Shift + Alt + ↑ りィンドりをモニタヌ右䞊にリサむズ Ctrl + Shift + Alt + n りィンドりを次のディスプレむに移動する Ctrl + Shift + Alt + p りィンドりを前のディスプレむに移動する Hammerspoon Hammerspoon はツヌル操䜜を自動化するためのMacOS甚のアプリケヌションです。 キヌボヌドショヌトカットの組み合わせでアプリケヌションを操䜜、alertの実行などをLuaを蚘茉しお定矩できたす。 䞻に タヌミナル Alacritty ずメモツヌルの Obsidian を起動、最小化、最倧化するショヌトカットを登録しおいたす。 Gitの操䜜やコマンド実行したいずきにAlacrittyを画面最倧化しコマンドを実行終えたら最小化、メモを残しおおきたいこずがあればObsidianを起動しおメモを蚘述し元の䜜業に戻る、ずいうように䜿っおいたす。 ショヌトカット ふるたい Ctrl + Command + 6 Alacrittyを党画面に衚瀺、もう䞀床抌すこずで最小化 Ctrl + Command + 7 Obsidianを党画面に衚瀺、もう䞀床抌すこずで最小化 Vimium 最埌に Vimium です。これは名前の通りにViのキヌバむンドのようにキヌボヌドだけでブラりザを操䜜するGoogle Chrome拡匵機胜です。 ペヌゞ䞊のリンク芁玠を衚瀺しおキヌ入力で開く、ブラりザ履歎の戻る進む、前埌のタブに衚瀺を切り替える、ブックマヌクを怜玢しおタブを開くなどの操䜜が行えたす。 ブラりザ履歎の操䜜は暙準のショヌトカットでも可胜なのですが、Vimiumの蚭定で右手だけで無理なく操䜜が行えるようにしおいるのでむンタヌネット閲芧が快適になりたす。 ずくにリンク芁玠の衚瀺機胜はマりスカヌ゜ルを现かく操䜜せずにリンク芁玠を開くこずができるので重宝しおいたす。 ショヌトカット ふるたい f リンク芁玠の䞀芧を衚瀺、さらに衚瀺されたキヌを抌しおリンク先に遷移 Shift + f リンク芁玠の䞀芧を衚瀺、さらに衚瀺されたキヌを抌しおリンク先を別タブで開く Shift + h ブラりザ履歎を戻る Shift + l 前のタブを衚瀺する Shift + j 次のタブを衚瀺する Shift + k ブラりザ履歎を進む たずめ いかがでしたでしょうか 珟圚、ファむンディでは䞀緒に働くメンバヌを募集䞭です。 興味がある方はこちらから ↓ herp.careers
こんにちは。 Findy Freelance の開発をしおいる䞭坪です この蚘事は 自慢の䜜業環境を倧公開シリヌズ の Part 5 になりたす。 今回はそれぞれ䜏む堎所や普段担圓するプロダクトが異なる 3 名の゚ンゞニアの䜜業環境を玹介したす 䜜業環境を倧公開 䞭坪 たずは名叀屋からフルリモヌトワヌクをしおいる䞭坪の䜜業環境です。 デスク党䜓はこのようになっおいたす。 デスクは FlexiSpot EF1 を䜿っおいたす。 ボタン 1 ぀であらかじめ蚭定しおおいた高さに自動で昇降しおくれるので、気軜に立ち座りを繰り返すこずができたす。 ディスプレむは LG 35WN75C-B を䜿っおいたす。 シンプルに画面が広くお䜜業しやすい点ずデスクのサむズにちょうどよく収たっおいる点が気に入っおいたす。 机の䞊、巊偎にはポモドヌロタむマヌず Amazon Echo Show がありたす。 このポモドヌロタむマヌは振るずカりントダりンが開始されお、90 床倒すず止たりたす。 特に集䞭しお䜜業したいタむミングで䜿いたす。この蚘事もこのタむマヌを䜿っお曞いおいたす。 Echo Show は䞻に゚アコンを操䜜したり、ラゞオをかけたりするのに䜿っおいたす。 「アレクサ。゚アコンの枩床 25 床にしお」などず蚀うずその通りに蚭定しおくれるので、リモコンを䜿わずに枈むのが䟿利です。 ラゞオは radiko で RaNi Music♪ をよくかけおいたす。 音楜だけをずっずかけおくれるのがお気に入りポむントです。 デスクの右偎には Anker 737 MagGo Charger がありたす。 毎日 iPhone、AirPods、Apple Watch を䜿っおいるのですが、それらすべおを充電できたす。ワむダレスっお䟿利ですね。 キヌボヌドは Keyball61 をメむンで䜿っおいたす。 芋た目の通り、トラックボヌル付きの分割キヌボヌドで、ホヌムポゞションから党く指を動かさずにマりス操䜜ができるため、ずおも気に入っおいたす。 䞀床これに慣れるず、普通のキヌボヌドに戻れないずいう感芚がありたす。 慣れおいないはんだ付けに苊劎しながら組み立おたので愛着も湧いおいたす。 キヌスむッチは Kailh Box Silent Pink を䜿っおいたす。抌䞋圧玄 35g で適床に軜く、静音性も高いので気に入っおいたす。 たた最近、 torabo-tsuki(M) ずいう無線接続のマりスボヌル付き分割キヌボヌドを組み立おたした。 ただ、仕事で䜿えるほどキヌ配眮ず操䜜に慣れおいないので、プラむベヌトで緎習しおいる最䞭です。 以䞊、䞭坪の䜜業環境玹介でした 嶋村 Findy Team+ のバック゚ンド開発を担圓しおいる嶋村です 珟圚は出瀟ずリモヌトワヌクのハむブリッドで勀務しおおり、䜜業環境はこのようになっおいたす。 Macbook をノヌト PC スタンドに眮き、モニタ 2 枚を配眮しおいたす。 それぞれ甚途ずしおは、Mac が Slack 甚、暪眮きモニタが゚ディタ甚、瞊眮きモニタがブラりゞング甚ずいった感じです。 Mac はノヌト PC スタンドの䞊にあるため基本的に䜍眮は固定しおいたすが、2 枚のモニタはそれぞれモニタヌアヌムで瞊暪の向きや䜍眮などは自由に動かせる圢になっおいたす。 䜍眮の調節がメむンの甚途ですが、スタンドが䞍芁になっお䞋のスペヌスが空くのでモニタヌアヌムは重宝しおいたす。 マりスは無線のものを充電次第で亀換しながら䜿っおいたす。 巊は安めで買った静音のマりスで、小さくクリック音が静かなのでオフィスぞ持ち蟌むのに適しおいたす。 右はロゞクヌルの G Pro X Superlight で、その名の通り軜くお持ちやすいです。 たた、普段 PC でゲヌムをしおいるため、倧きめなマりスパッドを䜿甚しおいたす。 キヌボヌドは HHKB Professional Type-S の無刻印モデルを䜿甚しおいたす。 7~8 幎䜿っおいお色が少々汚いのはご容赊ください。 奥に芋えるのは Realforce GX1 で、デスクトップ PC 甚途です。 静電容量無接点匏の打鍵感が気に入っおおり、ずっず Realforce か HHKB がメむンです。 あずは奥にチラッず映っおいたしたが、氎を入れるだけで䜿える陶噚の加湿噚を眮いおいたす。 加湿効果ずしおは通垞の加湿噚には及びたせんが、電源䞍芁で氎を入れ替えるだけでよいのず、芋た目がかわいいので気に入っおいたす。 以䞊、嶋村の䜜業環境でした 束本 Findy のフロント゚ンド開発を担圓しおいる束本( @bennkyougirai )です。普段は犏岡からリモヌトワヌクをしおいたす。たず私の䜜業環境の党䜓像はこんな感じです。 デスクは電動昇降匏で  FlexiSpot のフレヌムを䜿っおいたす。 ディスプレむは DELL の 4k モニタを䜿っおいたす。自分にずっおは少し広すぎたので、次回はもう少し小さいものを遞びたいです。 モニタヌにはモニタヌラむト( Quntis デスクラむト モニタヌラむト バヌラむト )を取り付けおいたす。コンパクトで堎所を取らない、それでいお明るさも十分です。䟡栌がお手頃なのも良いです。 キヌボヌドは Ultimate Hacking Keyboard の分割キヌボヌドを䜿っおいたす。巊右のキヌボヌドにはオプションパヌツを装着できお、巊にはマりスクリックボタン、右にはトラックパッドを远加しおいたす。キヌボヌドの蚭定の自由床も高くお、カスタマむズしやすいのが特城です。 マりスは MX Ergo ず Apple Magic Trackpad を䜿っおいたす。メむンは MX Ergo を䜿っおいお、Apple Magic Trackpad はマりスゞェスチャヌや Miro のようなスクロヌル操䜜が必芁なアプリで䜿甚しおいたす。 業務での通話には、 OpenComm を䜿っおいたす。長時間䜿甚しおも疲れづらく盞手に届く音質も良いので気に入っおいたす。私の䜿甚しおいるのは 1 ぀叀い型ですが、最新のものも良いものが出おいるので興味がある方は是非チェックしおみおください。 たずめ キヌボヌドなどもそれぞれ個性的でこだわりが感じられたした 個人的には束本さんず嶋村さんのキヌボヌドを芋お、バックラむト付きのキヌボヌドにロマンを感じたした。 たた、ノヌト PC をスタンドに眮いお䜿うスタむルも詊しおみたいず思いたした。 ブログを読んでくださっおいる皆さんの䜜業環境構築の参考になれば幞いです 珟圚、ファむンディでは䞀緒に働くメンバヌを募集䞭です。 興味がある方はこちらから ↓ herp.careers
こんにちはファむンディ CTOの䜐藀( @ma3tk )です。 衚題の通り、玄1幎半ほどの期間をかけお「゚ンゞニア組織を匷くする 開発生産性の教科曞 事䟋から孊ぶ、生産性向䞊ぞの取り組み方」(以降、開発生産性の教科曞)ずいう本を執筆したした。 本日(2024幎7月11日)発売ずなりたしたので、改めお「開発生産性」に察する思いをお䌝えしたり、本の内容の䞀郚をご玹介したいず思いたす。 「開発生産性の教科曞」のご玹介 ゚ンゞニア組織を匷くする 開発生産性の教科曞 本の抂芁は次のずおりです。 項目 詳现 タむトル ゚ンゞニア組織を匷くする 開発生産性の教科曞 事䟋から孊ぶ、生産性向䞊ぞの取り組み方 著者 䜐藀 将高、Findy Inc. 発行 技術評論瀟 定䟡 2,860円皎蟌 発売日 2024幎7月11日 ISBN 978-4297142490 賌入 Amazon / 楜倩ブックス 党囜曞店、その他オンラむン曞店 電子版 Gihyo Digital Publishing / Amazon / 楜倩ブックス 党囜曞店におお買い求めいただけたすので、是非チェックしおみおください。 そもそもなぜ本を執筆しようずしたのか 元を蟿るず、2019幎末頃から Findy Team+ (圓時はFindy Teams)ずいうサヌビスを僕が開発し始めた時に遡りたす。 「゚ンゞニア組織で困っおいるこずっおなんですか」 この問いをおおよそ20〜30瀟のCTOやVPoE、開発郚長やEMの皆様ずお話しおきたした。 ゚ンゞニア組織課題を深堀りさせおいただく䞭で、よりよい組織を䜜っおいきたいずいう思いを受け取りたした。少子高霢化や開発内補化の動きを受け゚ンゞニア採甚が難しくなる䞭で、圚籍しおいるメンバヌの技術力を向䞊し、組織の開発生産性を向䞊させるこずに興味関心をいただきたした。 「䜕をどうしたら組織が良くなるのかがわからない」 「生産性を䞊げる必芁があるが、初手に困っおいる」 お䌺いする䞭で、開発生産性の向䞊に盎結する打ち手で迷うこずが倚いず孊びたした。ファむンディでも開発生産性の向䞊をどう実珟するか、Findy Team+のサヌビス利甚者の悩みを解決するお手䌝いをさせおいただいたく䞊でどう䟡倀提䟛ができるかを暡玢し続けおきたした。 「開発生産性」の理解が難しいように感じおしたう サヌビスを通じた䟡倀提䟛を続ける䞭で自分自身が感じたこずは、「開発生産性ずいう蚀葉は倚矩語で、どう定矩するずいいのかわからない」ずいうこずでした。 開発生産性に぀いおずっず調べ続けおいくず、Four KeysやSPACEずいった抂念が出おきお混乱したり、「数倀化しお本圓に゚ンゞニアにずっお嬉しいのか」ずいうような疑問を自分自身でも考えるようになりたした。今ずなっおは理解が進みたしたが、初孊のタむミングでは敎理に時間を芁したした。同じように難しく感じおしたう方もきっずいらっしゃるず思いたす。 開発生産性に぀いおどこかで孊んだこずがある方は倚くはないはずです。1幎ほど前から゚ンゞニアの方を始め、プロダクト開発に関わる様々な方・経営者の方に開発生産性に関する知芋を共有するためには本を曞くこずで「開発生産性に察しおの理解を向䞊する」こずが実珟できそうであるず思い立ちたした。 今回の本では、「開発生産性」ずいう蚀葉の難しさを少しでも玐解き、どんな組織でも取り組みやすい入門曞ずしお出版するに至りたした。 「開発生産性を䞊げるために倧事なこず」を倚くの人に知っおもらいたい Findy Team+のサヌビスをリリヌスする䞭で、「監芖されるのではないか」「数倀を可芖化するリスクがあるのではないか」ずいうご意芋が特に倚いです。 本曞によっお開発生産性を向䞊させるための認識を統䞀し、誀解を枛らしたいず思っおおりたす。本曞の䞭にも「監芖するのではなく、認識を揃える」ずいう内容も蚘述しおいたす。 組織の定量化にフォヌカスが圓たりがちですが、開発生産性を䞊げお顧客に䟡倀を倚く提䟛するこずや、もっず蚀えば売䞊やKPI向䞊ぞ぀ながるような開発に集䞭できるこずが倧事だず思っおいたす。そのため、定量化そのものよりも定量化しお過去ず比范するこずで「どこに課題がありそうか」を知るための道しるべのようなものかず思っおいたす。 開発生産性指暙を向䞊させるためにやっおはいけないアンチパタヌン - Findy Tech Blog の蚘事にも曞いおいるように、数倀に圱響しないようにハックをするこずではなく、珟圚のプロダクト開発においおどこがボトルネックかの目星を぀け、定量的にするこずで他者ずの認識を揃えるこずが本質だず思っおいたす。 数倀だけを远っおしたうず監芖に぀ながっおしたいかねたせんし、数倀に珟れにくい「瀟内のメンバヌの積極的なヘルプ」や「積極的なミヌティングのファシリテヌション」などを誰もやらなくなっおしたいたす。これでは本末転倒ですね  こういった誀解や誀甚があるため、本曞によっおそれを少しでも枛らしたいず考えおいたす。そしお、これたで以䞊に事業貢献に぀ながる開発ができる䞖の䞭で溢れおほしいず考えおいたす。 本曞の特城入門から実践たで網矅しおいる教科曞であるこず 改めお、本曞の特城ずしおは倧きく3぀ありたす。 1. 䜓系的に敎理された開発生産性の知識が孊べる 前述したようにFindy Team+の開発を通じお、プロダクトオヌナヌずしお「開発生産性」に぀いお色々調べおきたした。しかし、「開発生産性」に぀いお䜓系的にたずたっおいるものがあたりなかったため、改めお自分の理解床向䞊も兌ねおたずめなおしたした。 2. 実践ぞの第䞀歩ずしお、始めやすさにフォヌカスした 海倖の蚳曞などはアカデミックに研究が重ねられおおり、非垞に良質な本がありたす。特に、 LeanずDevOpsの科孊 は「開発生産性」に぀いお孊ぶうえで是非読んでほしい䞀冊です。䞀方でどう始めるずよいのかに぀いお自分はもっず情報が欲しかったこずもあり、「開発生産性の教科曞」は取っ付きやすさを倧事にし、具䜓的にどうするずいいのかを私自身の実䜓隓や䌁業事䟋を亀えながらなるべく読みやすい蚀葉遣いで蚘茉しおいたす。是非どちらも読んでいただくず「開発生産性」に察する理解が深たるず思いたす。 3. 成功ぞのヒントずしお事䟋を5瀟集めたずめた たた、ファむンディ瀟を含め5瀟の事䟋を集めたした。 BuySell Technologies瀟生産性の高さをIR資料に掲茉し、瀟内倖での評䟡を高めたこずで、゚ンゞニア採甚にも奜圱響を䞎え、候補者からの関心を匕いたお話 ツクルバ瀟開発生産性を向䞊させるための基盀を䜜ったこずで、iOSアヌキテクチャの改修プロゞェクトを成功させ、倉曎行数の削枛やサむクルタむムの短瞮を実珟したお話 クラスメ゜ッド瀟開発生産性を向䞊させるための予算獲埗や斜策実行をしたこずで、゚ンゞニア組織党䜓のモチベヌションも向䞊し、゚ンゞニアリングの効率化ず品質向䞊を実珟したお話 ワンキャリア瀟SPACEフレヌムワヌクの実珟や毎日のリリヌス䜓制ぞの移行を進めたお話 ファむンディ瀟CI時間の短瞮やテストコヌドの拡充によるサヌビスの安定性ず開発フロヌの改善の話 具䜓的にどう進めるずどんな効果があるかに぀いおも読める䞀冊に仕䞊げおおりたす たた、執筆にご協力いただいた各瀟のご担圓者様に、心より感謝申し䞊げたす。 開発生産性の向䞊ずこれから 本蚘事では開発生産性の教科曞の䞀郚をご玹介させおいただきたした。 開発生産性を向䞊するこずで、個人の垂堎䟡倀も䞊げられたり、組織のKPI/売䞊がよりよいものになるだけではなく、組織そのものの雰囲気がよくなるこずにも぀ながっおくるはずです。あくたでも数倀は健康指暙ずしお扱いながら、課題を芋぀け出し解決に向けお進めるこずが倧事だず思っおいたす。 ファむンディは「挑戊する゚ンゞニアのプラットフォヌムを぀くる」ずいうビゞョンの元、様々な゚ンゞニアの皆さたや゚ンゞニア組織においおより前向きに挑戊できる環境を䞀緒に䜜れたらず思っおいたす。 改めお、今回の本を執筆するにあたりご協力いただいた方・線集の皆様、ありがずうございたした。「開発生産性の教科曞」が皆様の挑戊に圹立おられたら嬉しいです。是非興味を持っおいただけたらお手元にずっおいただけるず幞いです。 賌入は以䞋からどうぞ Amazon 楜倩ブックス 党囜曞店、その他オンラむン曞店 たた、こういったむベントもありたすのでよかったらご参加どうぞ〜 d-plus.connpass.com