2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

小規模チームでのAI活用メモ:フロントエンド開発を効率化した実践記録

Last updated at Posted at 2024-12-02

こんにちは。

今回は、小規模チームでAIを活用してフロントエンド開発を効率化した実践記録を備忘録としてまとめてみました。特に、小規模チームでの開発やUXエンジニアリングに苦手意識があるデザイナー向けに、実際に取り組んで感じたことを共有します。

フロントエンドとプロジェクトマネジメントを兼務しながら、中規模サイトのリニューアルを進める中で、「どうすれば限られた時間で成果を最大化できるのか?」という課題に向き合ってきました。その解決策の一つが、AIをアシスタントとして取り入れることでした。

結果的に、AIを活用することでかなりの効率化を実現できたため、取り組んだ具体例や注意点を以下に記録しておきます。

背景

中規模サイトのリニューアル(Smarty → Astro移行)プロジェクトに参加しました。
Smartyは従来のPHPテンプレートエンジン、Astroは最新の静的サイト生成フレームワークです。

フロントエンドの開発者は私1人で、さらにプロジェクトマネジメントも兼務していました。限られたリソースで効率よく成果を出す必要があり、AIの活用を決断しました。

課題

  • 他の通常タスクやキャンペーン施策と並行する必要があり、リソース不足している
  • 他チームからの支援は見込めず、限られたリソースで効率的に進める必要があった

これらの状況を受け、AIをアシスタントとして活用することで効率化を図ることにしました。

活用したツール

  1. Cursor
    AIを活用したコードエディタで、自然言語からコードを生成。
    • 汎用的なUIの作成や既存コードベースのルールに基づく生成が得意
    • チャット機能を使い、外部ドキュメントを参照しながら効率的にコーディング可能
  2. V0
    Vercelが提供するAI駆動型のUI生成ツール。
    • 自然言語プロンプトからReactコンポーネントを生成
    • 開発環境を用意せずとも、ブラウザ上でコードの動作確認が可能

AIをどのように活用したのか

1. コード生成の効率化:UIコンポーネントの迅速な実装

UIコンポーネントの実装は、多くの時間と労力を必要とする部分です。Cursorを活用することで、パンくずリストやナビゲーションメニューといった汎用的なUIコンポーネントを高精度に生成することができました。特に、自社サイトの既存マークアップを事前に提供したことで、プロジェクトのルールに即したコードが生成され、手動で修正する手間を大幅に削減できました。

また、動きのあるUIやアニメーションの試作にはV0が非常に役立ちました。V0では、ブラウザ上で素早く動作確認ができるため、複数の試作品を効率よく作成し、その中から最適なものを選び、さらにブラッシュアップしていくプロセスを実現しました。

AIコンポーネント生成の大きな利点

  • 汎用的なUIコンポーネントは、事前学習なしでも高精度なコードを生成可能
  • 自社の既存マークアップを活用することで、独自デザインやプロジェクト特有のルールにも柔軟に対応
  • 約7割完成したコードを瞬時に生成でき、ゼロからコーディングする時間を大幅に短縮
  • AIの生成したコードを通じて、新しいコーディングパターンや実装手法を学習することができた

2. Astroから他テンプレートへの横展開

Astroで作成したコンポーネントをSmartyやWordPressに移行する作業は、手作業では時間がかかり、ミスも発生しやすい部分です。ここでもAIを活用することで、単調な変換作業を効率化しました。

AIがテンプレート間の構造や仕様を理解して変換してくれるため、精度の高い移行が可能になり、結果的に作業時間を短縮できました。

横展開における効果

  • 単調で繰り返しの多い作業をAIに任せることで、作業効率を向上
  • 手作業で発生しがちなミスを削減し、変換精度を向上
  • 移行プロセス全体がスムーズになり、プロジェクト全体の進行を後押し

3. JavaScriptの効率的な実装

私はJavaScriptにまだ不慣れな部分があり、効率的に進めるためにAIを積極的に活用しました。Cursorのチャット機能では、外部ドキュメントを参照しながら新しいライブラリを導入する際のサポートが非常に便利でした。また、V0を活用することで、ReactベースのUIやアニメーションの試作をスムーズに進めることができました。

AIが生成したコードについては、自分でも内容を確認し、プロジェクトに取り入れても問題がないか勉強を重ねました。さらに、最終的にはエンジニアレビューを通して精度を担保。このプロセスを繰り返すことで、作業効率を上げつつ、学びを得る良い循環を作ることができました。

AIを活用したJavaScriptの実装で意識したポイント

  • コード実装前の方針を迅速に検討:AIと相談することで、設計やロジックを明確化
  • 生成コードのパフォーマンスを継続的に最適化:改善を繰り返し、高品質なコードを目指す
  • 簡潔なコメントから実装を生成:コメントを基にAIが新しいロジックを提案し、学びにつながった

ツールの使い分け

  • Copilot / Cursor:高度なコード生成とレビュー
  • V0:ブラウザ上での素早い動作検証

4. コードレビューの革新的な効率化

従来の手作業によるコードレビューのプロセスを、AIの力で大きく改善しました。

レビュー効率化の具体的な成果

  • AIによる事前レビューで、コードの品質を事前に向上
  • レビュープロセスを整理され、時間を大幅に短縮
  • 自分のコード:AIによる事前チェックでアウトプットの質を改善
  • 他者のコード:AIによる変更点の分析と概要提示で、レビューを効率化

AIを活用した結果

  • コンポーネントとテンプレート開発の工数を約50%削減した(2ヶ月→1ヶ月)
  • プロジェクト全体のスケジュールを守ることができた
  • AIが生成したコードを参考にすることで、新しい技術やコーディング手法を学び、スキルアップにもつながった

注意点と学んだこと

AIを活用して効率化を図る際、いくつかの気をつけるべきポイントと、実践を通じて得た学びがありました。

1. AIの限界を理解する

AIが提案するコードは必ずしも完璧ではありません。必ず人の目で精査することが重要です。特に、アクセシビリティ対応やプロジェクト特有のルールがある場合は、レビュー制度を活用し、チーム全体で補完する姿勢が大切だと実感しました。

AIの限界の具体例

  • セマンティックHTMLの誤用
  • 最新のアクセシビリティガイドラインへの不完全な対応
  • 古いコーディングパターンの提案
  • WAI-ARIAルールの解釈を誤っている

2. 事前準備が結果を左右する

AIの出力精度は、与える入力情報に大きく依存します。自社の既存マークアップや方針を明確にAIに提示することで、より精度の高いコードを得ることができました。

3. ツールの使い分けが鍵

AIツールにはそれぞれ得意分野があります。
用途に応じてツールを適切に使い分けることで、無駄な時間を減らし、効率的に進められることを実感しました。

  • Copilot / Cursor:コード生成やレビュー
  • V0:ブラウザ上で動作確認が簡単にできる

4. チームでのレビューが重要

AIで生成されたコードをチームメンバーと共有し、レビューを行うことで、以下のようなメリットがありました。

  • 見落としやエラーを防げる
  • コードの一貫性を保てる

AIはあくまでアシスタント。チームでのコミュニケーションやレビューを通じて補完し合うことが、最終的な成果物のクオリティ向上につながると感じました。

まとめ

「AIは使いこなせば便利だけど、過信しすぎないこと」。
これが今回の取り組みでの一番の学びです。適切な準備やレビュー、ツールの使い分けを意識することで、AIを最大限に活用できると実感しました。

この記事が、小規模チームでの開発やAI活用を考えている方の参考になれば幸いです。試行錯誤を重ねながら、私自身も引き続き挑戦を続けていきます。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?