開発日記
AIに指示を出すのも仕事だった。業務効率化で見落としがちなこと
ぴーす君
AIを使えば、プログラムの作成を効率化できる。
コードを書いてもらったり、エラーの原因を調べてもらったり。これまで人間が行っていた作業を、AIに任せられる場面は増えています。
では、AIに仕事を任せれば、それだけで業務効率化につながるのでしょうか。
今回は、Excel VBAの短期開発でAIを活用しようとした際に感じたことを、開発日記として紹介します。
実際に取り組んだのは、約100項目のUserFormを持つツールの開発です。
今回の開発では、項目ごとの仕様をAIに伝えるだけでなく、作りながら業務上の判断条件を検討する必要もありました。
その経験から気づいたのは、AIに仕事を任せることと、開発作業そのものが減ることは、必ずしも同じではないということです。
AIに仕様を伝えるのも、簡単な仕事ではない
今回の開発では、UserFormに約100個の項目がありました。
画面に項目を配置するだけなら、比較的単純な作業かもしれません。しかし、実際の業務で使う入力画面では、それぞれの項目に入力ルールや処理条件があります。
同じ「数値」でも、必要な処理は異なる
例えば、数値を入力する項目を考えてみます。
一見すると、どれも同じ数値入力欄です。しかし、業務で使う項目には、それぞれ異なる条件があります。
これは金額なので、金額として扱いたい
これは小数点以下の入力を許可したい
これはマイナスの値も入力できるようにしたい
これは上限値を設けたい
入力後に、表示する書式を整えてほしい
郵便番号は、入力された値を所定の形式に補正したい
電話番号も、入力された値に応じて書式を補正したい
このように、同じ数値や文字列を扱う項目でも、必要な処理は異なります。
さらに、入力中に制限するのか、入力が終わった時点で確認するのか、入力後に書式を整えるのかといった違いもあります。
これらの条件を整理し、項目ごとに適切な処理を実装するだけでも大変な作業です。
約100項目の仕様をAIに伝える
では、この作業をAIに任せたらどうでしょうか。
AIにコードを作成してもらうには、どの項目に、どのような処理が必要なのかを伝えなければなりません。
「数値の入力欄を作ってください」と指示しただけでは、金額なのか、小数点を許可するのか、マイナスを許可するのか、上限値があるのかまでは伝わりません。
もちろん、共通する処理をまとめ、複数の項目に適用する方法もあります。しかし、そのためには、どの項目が同じルールで、どの項目に個別の対応が必要なのかを整理する必要があります。
項目数が増えるほど、仕様を把握して指示を出す作業も増えていきます。
人間が開発する場合でも大変な作業です。それをAIに依頼すれば、指示を出すための作業がなくなるわけではありません。
AIにプログラムを書いてもらうためには、何を書いてもらうのかを伝える仕事が必要なのです。
作りながら考える仕様は、AIに任せにくい
もう一つ、今回の開発で難しかったことがあります。
それは、最初からすべての仕様が決まっていたわけではなく、実際に作りながら業務上の判断条件を検討していたことです。
画面の遷移元だけでは、処理が決まらない
今回のツールには、画面の遷移元によって処理を分ける仕組みがありました。
例えば、次のような条件です。
A画面から遷移した場合は、新規作成
B画面から遷移した場合は、更新
C画面から遷移した場合は、改定
ここまでなら、画面の遷移元に応じて処理を分岐させればよさそうに見えます。
しかし、実際にはそれだけでは完結しません。
B画面やC画面から遷移した場合、最初は更新と改定を区別していても、最終的には人が内容を補正した結果を踏まえ、データを更新するのか、改定するのかを判断する必要がありました。
つまり、最初に画面を開いたときの条件だけで、最終的な処理を決めることはできません。
途中の処理や人による補正を踏まえたうえで、最終的な判断につなげる必要があります。
短期のVBA開発では、作りながら判断条件を詰めることもある
今回のような短期のVBA開発では、最初からすべての仕様を確定させるのではなく、実際に作りながら処理や判断条件を具体化していくことがあります。
もちろん、最初に仕様書を作成し、十分に検討してから開発する方法もあります。
一方で、実際に処理を組み立ててみることで、初めて明確になる判断条件もあります。
今回も、単に決められた仕様をコードに置き換えるだけではなく、どの段階で判断するのか、何を基準に分岐させるのかを考えながら作っていました。
このような進め方では、AIに依頼するために、まずすべての判断条件を整理し、指示できる形にする必要があります。
しかし、それを行うのであれば、作りながら検討するという開発の進め方そのものを変えることになります。
AIに依頼するための準備が、開発そのものとは別の仕事になってしまう。
これが、今回の開発で感じた難しさの一つでした。
AIが作ったものを確認する仕事もある
AIにコードを作成してもらったとしても、それで完成とは限りません。
生成されたコードが期待どおりに動くかを確認し、問題があれば修正する必要があります。
AIとのやり取りが、かえって増えることもある
実際にAIを使っていると、思ったように動かず、別の方法を試すことがあります。
追加の指示を出して修正できることもありますが、やり取りを重ねれば必ず解決するわけではありません。以前に試した方法を再度確認したり、別の方法に切り替えたりすることもあります。
こうなると、コードを作成してもらう時間だけでなく、次のような時間も必要になります。
仕様を説明する時間
生成されたコードを確認する時間
動作を検証する時間
問題があった場合に修正する時間
修正によって別の問題が発生していないか確認する時間
AIによって短縮できる作業がある一方、AIを使うために必要となる作業もあるのです。
生成された結果が正しいか、判断できる必要がある
さらに重要なのは、生成された結果が正しいかどうかを判断することです。
コードが動いたとしても、業務上のルールに合っているとは限りません。
例えば、更新と改定の判定が正しく実装されているか。入力値の制限や書式補正が、想定した条件を満たしているか。
こうした点を確認するには、プログラムの動作だけでなく、業務の目的やルールを理解していなければなりません。
AIがコードを作成できることと、そのコードが業務に適していることは別の話です。
AIを使うことと、業務を効率化することは別
今回の開発を通じて感じたのは、AIに仕事を任せること自体にも、相応の準備や判断が必要になるということです。
項目ごとの仕様を整理し、AIに指示を出す。生成されたコードを確認する。実際に動かして、問題があれば修正する。そして、業務全体を踏まえて、何を実現すべきか判断する。
これらは、AIを導入しただけですべてなくなる作業ではありません。
特に、作りながら仕様や判断条件を具体化していく開発では、その過程自体が重要な仕事になります。
AIに任せるために必要な情報を最初からすべて整理できるとは限らず、検討の途中で判断が変わることもあります。その場合は、変更した内容を反映し、結果を確認する作業も必要です。
AIに任せることで効率化できる作業もあれば、人間が考えた方が早い作業もあります。
大切なのは、AIを使うこと自体を目的にしないことです。
AIを導入することが、業務効率化のゴールではありません。実際にかかる手間や時間まで考え、本当に効率化できているかを判断することが大切なのだと思います。