はじめに
みなさん、こんにちは!
ポーラ・オルビスホールディングスのITプロダクト開発チームで内製開発エンジニアをしている中村です。
私たちのITプロダクト開発チームは内製開発を行っています。チームの成長を加速させるために、これまでの開発を通じて得た各々の気づきを共有して情報交換をする会、題して「わいがや会」を実施しています。今回の開催は2回目で、技術的なトピックを議題とすることにしました。本記事ではその取り組みについてご紹介します。 なお、第1回のわいがや会の記事は以下をご参照ください。
わいがや会の概要
目的
- 開発を通じて得られた気づきや課題を共有して、チームの方向性を合わせる。
- 各々のナレッジ・ノウハウを共有することで、チームの開発力を向上させる。
進め方
- ITプロダクト開発チームのメンバー12人全員が参加する。
- 発表者の持ち時間は10分。5~8分程度で発表を行い、残り時間はチームで意見交換する。
- 全体として2時間で実施し、深掘りしたい議題があれば別途時間を設ける。
参加者の事前準備(チームメンバーに以下の依頼をしました。)
- 現行の開発を技術的な面でより良くさせるための案を考えて、10分程度で発表する資料(パワポ等)を準備してください。
備考
- オフラインで実施する。お菓子を食べながらわいわい楽しみながら議論しましょう!
- 夜は懇親会を行います!
メンバーの発表と意見交換
当日の発表ではたくさんの興味深い発表が行われましたが、3テーマを抜粋してご紹介します。テーマの一覧は下記「事後アンケートと今後の取り組み」の表に記載しています。
1テーマ目
API (AWS Lambda)のレスポンスが遅い問題を解決したい!
※ 我々のチームではサーバレスアプリケーションの開発をしていてAPIはAPI Gateway + Lambdaの構成を取っています。
現状の課題
- Lambdaのコールドスタート問題があり、APIレスポンスの遅延が発生する。
- Lambdaを定期的に呼び出したり、Provisioned Concurrencyを導入したりして対策している。
- ただし、Sessionを張る際に時間がかかる根本的な問題がある。
- 今後、性能要件が厳しいシステムを開発する場合にネックとなる可能性がある。
AWS Fargateで解決したい
- コールドスタート問題とセッション管理の改善
- コンテナが常時起動しているため、初回リクエストでも即座にレスポンス可能
- セッション情報やDB接続をメモリ上で維持でき、ウォームアップ処理が不要
- 認証トークンや一時的な情報を適切に管理できる
- 性能の安定性
- CPUとメモリリソースが固定されており、レスポンス時間が安定
- 負荷に応じたオートスケーリングも可能
- メリット・デメリット
- メリット:レスポンス時間の大幅改善、インフラ管理不要、開発・運用環境の構築が容易
- デメリット:Lambdaより高コスト、移行工数が必要、常時課金される
発表後の意見交換
- コールドスタートの根本解決になるのは大きなメリットだと感じた
- 既存のLambda関数をコンテナ化する工数がどの程度かかるか気になる
- App Runnerも同様の課題を解決できるのでは?
→ 確かにApp Runnerも選択肢として検討する価値がある
2テーマ目
Github Copilotを新人エンジニアから昇進させよう
※我々のチームはGitHub CopilotをVS Codeに導入して開発しています。
現状の課題
- Copilotの基本的な機能(AgentやAskなど)は利用しているが、それ以外の機能を活用しきれていない
- チーム固有の設計思想やルールをCopilotに伝える仕組みがない
.github/copilot-instructions.mdでCopilotを賢くしたい
- 基本的な仕組み
- .github/copilot-instructions.mdにプロンプトを記述することで、事前にそれを読んだ上で回答してくれる
- 活用例
- フォルダ構成の説明を記載
- 全てのコードを読むことを明示
- プロジェクトの設計思想やルールを伝達
- Next.js、SQLAlchemyなど利用技術の最新ドキュメントを参照するよう指示
- その他のノウハウ
- @、/、#記号の活用
- これらの記号を使うことで、特定のファイルやコンテキストを効率的に読み込める
- 参考:https://docs.github.com/ja/copilot/using-github-copilot/copilot-chat/github-copilot-chat-cheat-sheet
発表後の意見交換
- .github/copilot-instructions.mdの存在を知らなかったので、まずは試してみたい
- まだまだ知らない機能があると思うので、自分でも調べてみたい
3テーマ目
AIエディタCursorを開発に導入するのはどうか?
※我々のチームはGitHub CopilotをVS Codeに導入して開発しています。(再掲)
現状の課題
- 昨今、多種多様なAIエディタが普及しているが、我々のチームに合ったAIエディタを選定して開発効率を向上させたい。
- Github Colilot以外のAIツールを利用したチーム開発実績がないため、他のAIツールの有効性を知りたい。
Cursorについて
- Cursorとは?
- VS CodeをベースにAIを搭載して作られたコードエディタ(開発会社:Anysphere社)
- Cursor自体にLLM機能を持つわけではなく、外部のLLMを選択して利用する
- コードが外部サーバーに保存・AI学習に利用されない「プライバシーモード」を利用可能
- Cursorのバイブコーディングがすごい!
- バイブコーディング(Vibe Coding)とはAIに自然言語で指示を与えることで自動的にコードを生成し、アプリケーションを構築する新しいプログラミング手法
- バイブコーディングで1からTODOアプリを開発するデモを当日は行いました。
- Cursorの懸念点
- システム品質が要求される業務アプリの開発においてバイブコーディングはどこまで実用的か
- 人間がレビューする工数が増えてしまうのではないか
- 既存のプログラムを破壊せずにコーディングできるか
発表後の意見交換
- プロトタイプの作成には特に向いてそう。プロダクトオーナーがUIを作成するのにも便利かも
- 試験的導入予定があるとのことで、まずは使い心地を試したい。
事後アンケートとまとめ
わいがや会実施後に「実際の開発に取り入れるために、深掘りしたいテーマを教えてください。」というアンケートを取りました。結果は以下の通りです。
アンケートの結果、AIエディタやAPIの性能改善に関心が高いことが分かりました。AIエディタについては現在CursorとClineを我々のチームの開発に試験的に導入して、効果を測定しています。我々のチームに効果的なエディタを選定し、開発効率を向上させていきたいと考えています。
今回は技術的なトピックに絞ったわいがや会としました。直近の開発に結びつく技術や、今後何かの役に立ちそうな技術など幅広く学ぶことができ非常に有意義な会だったと思います。わいがや会は定期的に実施してチームの方向性を合わせ、開発力の向上に努めて行きたいです。