コード生成をAIに任せて1週間足らずでアプリ開発した話
近年、AI技術の進化によりアプリ開発のプロセスが大きく変わりつつあります。
Flutterという言語を数年前趣味で触っていたのですが、記憶は曖昧。
今回AIにプログラミングを任せてみましたところ、わずか1週間足らずで開発完了。
ここでは、AIを使った開発の利点や課題を振り返り、総評をまとめます。
開発したアプリ
今回開発したのは、買いたいものをメモしておくメモ兼チェックリストなiphoneアプリです。
できること
自分だけでなく他の人(グループ)ともそのリストを共有できるので
気づいた人が気づいたときに足りないものを補給するというものです。
いざ買い物に行ったがトイレットペーパーを買い忘れまた薬局に行くハメに…
とか
もう洗剤がないのをすっかり忘れていた…
とか
悲しい事態を防ぐことがコンセプトです。
2024/11/24 現在 apple storeの審査中。
言語はFlutter/Dart
クロスプラットフォームであることが理由です。
厄介なことに、アンドロイドとiphoneのアプリは基本的に別言語で作成しなければいけません。
webアプリではブラウザによる挙動や見た目が若干違うことはありますが、
作ってしまえば誰でも利用することができるので、個人的にはなんとめんどくさいのだろうと思いました。
クロースプラットフォームとは、アンドロイドにも対応しているし
iphoneにも対応しているし、といった意味になります。
もともと自分はアンドロイドユーザだった一方で周りはiphoneだったので
自分だけアプリを使えて他の人が使えない、その逆、
いずれにしても面白くないのでそういう理由になります。
アプリ開発をAIに任せて
AIは、コード生成ツールやエラーハンドリングの提案、さらにはUI/UX設計の補助まで行えるため、開発全体を効率化できます。特に以下の場面でAIが役立ちました:
- コードの骨組み作成:基本的な機能の実装がスムーズ。
- 繰り返し作業の自動化:パターン化された処理を高速に生成。
- 問題解決の補助:エラーやバグの原因を的確に分析。
これにより、短期間でアプリのプロトタイプを完成させることができました。
AIが開発して良かったこと
1. 作業時間の短縮
AIの提案機能により、コードを書く時間が大幅に短縮されました。
AIが9割コードを書いたと思います。
自分は見た目が気に食わない部分を修正したり
思わぬ動きをしたところのバグを修正したりしていました。
数年前は
- ライブラリの使い方を調べる
- 自プロジェクトにコピペ
- 動作確認
- 微修正
この繰り返しで完成を目指していましたが
AIが概ね正解を出力してくれるため、手間が省けたのは非常に助かりました。
2. 自分は開発以外のことを考えられる
いわばAIという他人がプログラムを組んでくれるので
自分がプログラム自体を考えることにあまり意味がなく
画面構成や操作感等に強く意識を寄せることができました。
これは存外に大きい発見です。
開発あるある
実際これは会社の業務でもあるあるなのですが
開発中は操作に慣れてしまって、使いやすさ、わかりやすさに
目が届かないといったことが多くあります。
そうなってしまう理由の一つに
ずっとプログラミングをしているから、が挙げられるでしょう。
その証拠に、他者に操作をしてもらったりすると
開発者には思いもよらぬ操作や指摘がはびこります。
開発者はプログラミングのことで容量がいっぱいいっぱいになりますが
開発者以外の人はそのような、ある種余計な情報がなく
すっきりした状態でアプリを操作しますから、脳の容量的に余裕があります。
したがって、さもありなん。
3. 初心者でも取り組みやすい
開発経験が浅い人でも、AIの補助を受けながらアプリを形にすることができます。
特にエラーの修正や最適化の提案が初心者にとって心強いサポートとなりました。
人間も実力が伴わないと修正不可になってしまう
後述しますが、AIの生成したプログラムをレビューできる程度に
プログラミングがわかっていないと、修正ができません。
AIも常に100点を叩き出すわけではないので
間違ったプログラムを出力することもあります。
確かに初学者には心強い味方ですが想定外の事象が発生した際、
どこで想定外が起きたかをAIを頼るのはもちろん、
ネットで自力で答えを見つけられるよう調査の力も養う必要があるでしょう。
AIが開発したことの弊害
1. コードの品質や画面にばらつきがある
AIが生成するコードは基本的に正しいものの、
文脈を誤解して非効率なコードを提案することもありました。
特に大規模なシステムでは、人間の監修が不可欠です。
画面の見た目=ボタンの位置などもばらつきがあったりして
やはり人間のレビューは必要です。
2. 想定外をなかなか解決してくれない
前述のようにAIは常に正しいわけではないので
間違ったプログラムを出力することもあります。
そこで指摘をしてプログラムの修正を求めはするのですが、
最出力してもらっても正しくないプログラムだった、ということは少なくないです。
この際ライブラリのバージョンの問題だったりすると最悪で、
ネットで検索した方が早く解決するでしょう。
また人間のインプットの仕方が悪ければ
AIのアウトプットも悪くなりえますから
人間側が正しく問題の切り分けをし、正しい指示を出しているかも大事になります。
最後に見極めるのは人間
どれだけAIが進化しても、最終的な判断や仕上げは人間の手で行う必要があります。
これは会社の上司の話ですが、
AIがプログラムを組んでくれるようになった、というが
上流側の人間からするとプログラムが組むのが人間であれ機械であれ
最終判断するのはやはり人間なので、その意味では今も昔も変わっていない。
プログラムを組まずに設計といった上流工程にしか携わらない人間からすると
このような考え方になるのはすごくわかります。
この意味では完全なる初心者がアプリ開発を仕上げ、
リリースまで完了するのはかなり厳しいと体感しました。
環境構築やリリースはやはりAIより人間の情報
AIが開発をサポートしてくれるとはいえ、アプリ作成はプログラミングだけではありません。
開発環境の構築
場合によっては大沼です。
自分のPCに開発用の環境を構築します。
エディタでプログラミングしつつ、実際の動作を確認、テストするのに開発環境が必要です。
入門用の書籍など購入すれば、
多くの場合環境構築のことも記載されていますから、
AIと格闘するよりは確実で迅速です。
エラーなど発生する場合は、ネットも頼るべきでしょう。
テスト
アプリ開発が完了した後は動作確認をして、
想定外のエラーや不具合を修正しなければなりません。
こればっかりはAIも知らぬ存ぜぬなので、人間による検証が必要です。
場合によってはプログラム修正の時間も発生するでしょう。
アプリストアのガイドライン理解〜リリースまで
スマホアプリはプラットフォームに対してリリースをするので
ガイドラインを理解して、リリースの準備をする必要があります。
自分は今ここで足踏みをしています。
思ったより準備することが多い…。
プラットフォームは設定画面のUI(見た目)が変わることもまちまちで
ネットの情報でさえ、多少のずれが発生することがあります。
場合によっては利用規約など
法律の理解も必要でやることが多いです。
ネット検索の方がピンポイントで情報収集できる
AIは包括的なアドバイスを提供してくれますが、特定の問題を解決するにはネット検索の方が効率的な場合があります。
エラーメッセージの意味を調べる
エラーメッセージは英語ですので翻訳を求める程度なら
ネットでもAIでも調べる手間は変わらないと思います。
ただし、ネットでは個人の経験によるブログの掲載が多いため
自分の状況とバチっと合致すれば一気に解決します。
多くの場合どのようなエラーか、
どうしたら解決するかも一緒に書かれているため勉強にもなります。
特定のライブラリの詳細な使い方を確認する
このような場面では、検索エンジンのほうが迅速に正確な情報を得られることが多いです。
本業での業務に活かせるか
生かせると思った点
- タスクの効率化:繰り返し作業やテンプレート生成のスピードアップに役立つ。
- 学習の加速:AIがサポートすることで、新しい技術や知識を短時間で学べる。
一覧画面、編集画面なんかは指示をすれば5秒くらいで作ってくれました。
もう人間に指示してやってもらうより明らかに早いですよね。
生かせないと思った点
- 創造的な発想:全く新しいアイデアを生み出す能力は、まだ人間に劣る。
- 業務に特化した知識:専門性の高い分野では、AIが間違った提案をすることもあるため、完全な信頼は難しい。
会社では独自のルールもあるでしょうし完全スクラッチならともかく
AI君にもそのルールを覚えてもらわないと、
出力されたプログラムのメンテの方に手間がかかってしまうので
そこもうまく付き合う必要があると思いました。
総評
AIを活用したアプリ開発は、効率性や作業のスピードアップという点で非常に魅力的です。
しかし、最終的な品質保証や人間の感覚が必要な部分では、まだAIに頼りきれない面もあります。
プログラミングのような機械的な作業はAIに任せつつ、
人間は設計といった上流の仕事をこなしたりユニークなアイデアを生み出せるようになれば
シナジー効果で効率的な仕事ができるようになると思います。
本記事は個人開発の振り返りでして
プログラミングはAIに任せてしまいユニークなアプリを開発することで
個人の収入も増やせる可能性も垣間見えたような気もしています。
コメント