ココナラを訪れ、初めて取り組んだのが売上管理システム。
【設問】
売上日の入力後に売上番号(11桁の番号)を自動表示(編集不可)させなさい
売上番号の付番ルール:
日々の売上データを001から昇順3桁にて売上日 yyyymmdd に付加
例)
売上日 2017年5月13日 当日1件目の売上 の場合 20170513001
売上日 2017年5月13日 当日3件目の売上 の場合 20170513003
売上日 2017年5月15日 当日1件目の売上 の場合 20170515001
開発で忙しそうな出品者の手を煩わせたくなくて、生成AIに助けを求めるようになった。
主に企業相手の商売だからか、Access関連サービスは価格設定が強気。比較的安価なサービスでも分厚めの参考書と同等のお値段°˖☆◝(⁰▿⁰)◜☆˖°
ともあれ、生成AIが考案したコードはきちんと動くし、スッキリまとまっていて、何も問題なしと思われた。
そんな中、ほかのココナラ出品者によって開発されたコードの品質が生成AIのコーディングとは異なることに気づいたので、記録しておきたいと考えた。
※動画内コードは出品者から得た知識にて自分なりに練習を重ね実装した内容
生成AIおよび人間による開発の違い
実装結果を比較しながら、自分なりに検証してみた
1. 実用向けか否か
生成AI:Like演算子を使い、文字列としての売上番号から日付を逆算するため、入力された文字列が日付か否かに関係なく形成実行
出品者:WHERE 売上日 = #日付# と、正規の日付項目で入力候補を絞り込み、日付型に該当しない入力をブロック
2. 長期利用に耐えうるか
生成AI:売上番号のデータ型に依存し、将来的なルール変更を想定しない
出品者:日付と番号を別物として扱い、運用の変更にも最小限の改修で済む
3. 売上年月日テキストがカレンダー(日付(S))書式でなくても機能するか
生成AI:文字列比較によるあいまい検索を採用しているため、桁ズレや想定外のデータに対応できない
出品者:日付の完全一致によるデータ検出を採用しているため、書式設定を問わず安定する
4. データが増えた場合のパフォーマンス
生成AI:レコードを1件ずつチェックして回る運用であり、売上データが増えると時間がかかる
出品者:SQLによるインデックス分類を頼りに該当データへ直接飛べるため、重さを感じず高速に動く
5. コーディングの可読性と保守性
生成AI:簡潔でスマートだが、データベースの知識がなければ意図を充分に汲めない
出品者:SQL構成により文意が明確で、設計の意図を解釈しやすい工夫がある
6. 想定外の操作に対する防御性
生成AI:カレンダー(日付(S))環境の入力枠を前提とした効率重視の設計
出品者: If Not IsDate(Me.Txt_売上年月日) Then...の働きにより、書式変更によるデータ崩壊を防御
7. 設計時の優先項目について
生成AI:設問の条件内において動くコードを最短で提示
出品者:外部ユーザー・内部メンテナンス双方において壊れにくい設計を提示
~生成AIに関する講習の覚え書き~
生成AIは(いずれのAIも)学習した過去のパターンをもとに回答を作る
膨大なデータから整合性の高い項目を探し、知識の空白を補完しながら「それっぽい答え」を作る
「正しいこと」ではなく「最もそれらしいこと」を返すのが役目だから、正解が見つからなくても「分からない」と正直に応える義務はなく、その場しのぎの返答を形成できる
ユーザーからの入力情報を受け取る
↓
単語の意味から会話の方向性を読む
↓
文脈を理解
↓
次に来る単語の候補を確率で出す
↓
一番適切なものを選ぶ
↓
文章が整うまで上記工程を高速で繰り返す
↓
完成した文章をユーザーに提示する
ユーザーの要求を理解して返答するわけではなく、大量のパターンの統計から最適な返答を形成する
だからAIの優先基準として、時として自然さが正しさより勝る事象も生じる
順位1:対話として自然
順位2:文脈として整合
順位3:内容の正しさ(やっとか)
CM活動に惑わされないようにしよう
AI自ら親切に検索してくれるわけではない
中身を理解し寄り添ってくれることもない
実態は確率に見合う文章の組み立て作業かつ出たとこ勝負の結果
じゃあなぜ、プログラミング分野では効果を発揮する(ように見える)のか
理由1:
Accessで用いられるコードは規則性が強い
VBAやSQLの多くが定型句で形成され「次に来るもの」が予測しやすい
理由2:
確率の問題をクリアしやすい
言語の多くは繰り返しで構成され、過去の正解パターンを使いまわしやすい
理由3:
曖昧さが少ない
人間が発する自然言語と異なり、プログラミング言語は明確な文法で成立
場当たり的な「それっぽさ」でも「ほぼ正解」に近い形であてはめられる
だから技術精度が高く見えるけれど、設計上の課題や例外処理や実務条件について、エンジニアのように考察することはない
情報はいくらでも提供するけど、意味を理解しているわけではないのだから
新規開発には強くても「以前に受け取った回答の一部を修正して」といった、記録や記憶の連鎖を必要とする要求には弱い
YouTube上のオンラインスクールでも無料Q&Aサイトなどでもなく
ココナラで相応の対価を支払い、スキルを得ようとがんばるからこそ
生成AIに頼らなくても解決策を導き出せる実力をちゃんと目指そう
人間がこつこつ積み重ねてきた努力や経験則に基づく日々は、生成AIの登場によってそう簡単に色あせるものではないと私は信じたい