プログラムレベルと圏論の用語の対応がよくわからなかったのでチャッピーに教えてもらったので備忘録
Hask は「型と関数」からなる圏。
Maybe は Hask から Hask への自己関手。
Just は、恒等関手 Id から Maybe 関手への自然変換。
bind は、Maybe モナドの合成操作で、join という自然変換を使って作られる。

プログラムレベルと圏論の用語の対応がよくわからなかったのでチャッピーに教えてもらったので備忘録
Hask は「型と関数」からなる圏。
Maybe は Hask から Hask への自己関手。
Just は、恒等関手 Id から Maybe 関手への自然変換。
bind は、Maybe モナドの合成操作で、join という自然変換を使って作られる。

このメソッドは、企業向け業務アプリケーション開発をAgent前提で再設計するためのものである。対象は、受発注・在庫・会計・人事のように、明確なビジネスルールに従って動くシステムである。
前提は次の通り。
このメソッドが重視するのは、認知ギャップの管理である。認知ギャップとは、人間が意図した内容とAgentが解釈・実装した内容のズレを指す。これをなくすことは難しいが、起きやすい場所を絞り、検知できる形にすることはできる。
開発はイテレーション型で進める。各イテレーションで次の4つを回す。
最初のイテレーションでは、アーキテクチャの骨格と生成AI活用の仕組み(プロンプト・評価セット・生成ガイドライン)を確立する。典型ユースケース1本でサイクルを通し、量産前に整備する。
人間がユースケース、ドメインモデル、アプリケーションサービス、ビジネスルールを定義する。ここで業務意図が曖昧なままだと、後続の設計やコード生成も不安定になる。
確認ポイントは次の通り。
レイヤー構造・モジュール境界・インターフェースを設計し、非機能要件への対応方針を定める。選択肢の列挙・トレードオフ分析・ドラフト生成はAIに担わせ、人間は判断と決定を行う。
Agent前提の開発では、このアーキテクチャ設計がさらに「どこで問題が起きやすいか・どこで人間が確認すべきか」を規定する意味も持つ。
アーキタイプごとにAI適用レベルと確認戦略を定める。
| アーキタイプ | リスク | 確認戦略 |
|---|---|---|
| ドメインモデル | 最高 | データ構造・ビジネスルールの記載が業務意図に合っているかを人間が確認する(意味確認)。実装の妥当性は主にコンポーネント単位の機能テストで確認する |
| アプリケーションサービス | 高 | 通常時はE2Eテストの実行結果で確認。高リスク機能ではE2Eテストに加えてサービス単位の機能テスト結果でも確認し、サービス仕様の内容を人間が理解する |
| インフラ・リポジトリ | 中 | 人間確認は基本省略。機械的検証で担保。問題時はサービス仕様を起点に確認 |
| UI・プレゼンテーション | 低 | 自動テスト+視覚確認。実装詳細の人間レビューは不要 |
アーキテクチャ制約は、ガイドラインではなくCIで強制する。
AIが業務モデルからサービス仕様を含む設計モデル・コード・テストを生成する。
確認の区分は次の通り。
E2Eテストは業務受入確認の主要手段として位置づける。人間は「業務シナリオとして正しいか」を確認し、AIはテストコード生成や静的解析を担う。
通常時の主検証はE2Eテストの実行結果である。高リスク機能ではE2Eテストに加えて、サービス単位の機能テスト結果でも確認する。
| 検証層 | 適用場面 | 位置づけ |
|---|---|---|
| E2Eテスト(業務シナリオ・成功条件・禁止条件・副作用・イベント発行・監査ログ) | 常時 | 主検証(業務受入の主要手段) |
| サービス単位の機能テスト | 高リスク機能(追加) | 追加検証 |
| 単体テスト(複雑なドメインモデルのロジックを重点的に) | — | 補助 |
| 品質・安全性のサンプリング確認 | — | 補助 |
テストシナリオはユースケース・ドメインモデルからAIが生成する。人間はシナリオの網羅性と実行結果を確認する。
成果物は4層で設計する。すべてを同じ密度でレビューしない。
| 層 | 内容 | 確認の扱い |
|---|---|---|
| 定義層 | 業務モデル・アーキテクチャ設計書・検証シナリオ | 常時・人間が確認(ドメインモデル・業務モデルの記述は意味確認) |
| 実行結果層(通常時の主検証) | E2Eテスト結果(業務シナリオ・成功条件・禁止条件・副作用・イベント発行・監査ログ) | 自動実行し・人間が結果を判断(合否判定の主手段) |
| 実行結果層(高リスク機能の追加検証) | サービス単位の機能テスト結果 | E2Eテストに加えて確認。サービス仕様の内容も人間が理解する |
| 補助資料層 | 設計モデル・サービス仕様 | 通常時は補助資料。高リスク機能では内容を人間が理解することを推奨 |
| 実装層 | ソースコード・単体テスト | 原則自動検証 |
改善ループは、イテレーションをまたいで次の2つを見直す活動である。
新規要件や機能追加は改善ループでは扱わず、通常のイテレーション計画で扱う。
このメソッドの要点は3つである。
システム開発における生成AI活用と認知ギャップについて整理し、活用度が上がるほど拡大する「認知ギャップ」とその対策を解説する。
生成AIの活用を「なんとなく使う」から「意図して制御する」状態に引き上げるための考え方をまとめた。
この記事は4つのテーマで構成する。
生成AIの活用は「単なる情報検索」から「業務・組織の再設計」まで、5段階のレベルで整理できる。上位レベルになるほど自律性・業務影響度・リスクが増大し、より高度なガバナンスが求められる。
| レベル | 名称 | AIの役割 | 人の役割 |
|---|---|---|---|
| ① | QA(情報提供) | 情報を返す | 判断する |
| ② | Task(作業実行) | 作業を終わらせる | 結果を確認する |
| ③ | Workflow(手順実行) | 作業の流れを回す | 要所でレビューする |
| ④ | Agent(自律実行) | 状況に応じて進め方を変える | 目的・境界を設定する |
| ⑤ | Operating Model(業務再設計) | 仕事のやり方自体を変える | 判断・責任・例外対応 |
①のQAは検索エンジンの延長として馴染みやすいが、④のAgentになると人間が把握しきれない判断をAIが自律的に行う。⑤のOperating Modelはこの認知ギャップを前提として組織・業務設計に織り込んだ到達点であり、①〜④とは視点が異なる。
AIの活用レベルが上がるほど、処理量・判断量・スピードが増大する。その結果、人間が全体を追い切れない状態が生まれる。
認知ギャップ = AIがやっていることを、人が正しく理解できていない状態
典型的な症状として以下が挙げられる。
| レベル | ギャップの大きさ | 主な見えにくさ |
|---|---|---|
| ① QA | ほぼなし | 回答根拠の深さ |
| ② Task | 小 | 根拠・途中経過は確認しないことが多い |
| ③ Workflow | 中 | ステップ間の中間状態が見えにくい |
| ④ Agent | 大 | 判断の経緯・ツール選択が追えない |
活用レベルが上がるほど、間違いに気づきにくくなる危険度が上がる
特にAgentレベルになると、AIが複数のツールを組み合わせて自律的に動くため、何をどの順番でどう判断したかを人間がリアルタイムで把握することは現実的に難しい。「動いているから大丈夫」という感覚こそが、認知ギャップの落とし穴である。
システムの性質によって、どのレベルまでAIを適用できるかが異なる。リスクが高いシステムほど、AI適用レベルを低く抑え、認知ギャップを意図的に縮小する必要がある。
| リスク帯 | 典型システム | AI適用レベル | 人の役割 | 認知ギャップ | 主なリスク | 運用のポイント |
|---|---|---|---|---|---|---|
| 低 | 社内ツール・検証環境 | Agent | 結果確認中心 | 大 | 中身を理解せず使う | スピード優先、問題が出たら直す |
| 低〜中 | 業務支援ツール | Workflow〜Agent | 要所確認 | 中〜大 | ミスの見逃し・誤動作 | 信頼度で人に戻す |
| 中 | 顧客向けサービス(非金融) | Workflow | 判断+レビュー | 中 | 誤動作・品質低下 | 人レビュー必須・段階リリース |
| 中〜高 | 基幹システム | Task〜Workflow | 詳細確認+責任 | 小〜中 | ロジックミス・影響拡大 | テスト重視・制約設計 |
| 高 | 銀行・決済システム | Task(AI補助) | 設計・承認・責任 | 小(抑制) | 金銭事故・監査NG | 人主導・完全トレーサビリティ |
社内ツールや検証環境はミスが許容されやすいためAgentレベルも選択肢に入るが、銀行・決済システムのような高リスク領域ではAIはあくまで補助にとどめ、人間が設計・承認・責任を担う構造が求められる。
リスクが高いほど、以下の3軸で対応する。
この3軸は独立しているように見えるが、実際には連動している。AI活用レベルを下げれば自然と認知ギャップは縮まり、人の関与が増える。重要なのは「なんとなくAgentを使わない」のではなく、リスクに応じて意図的にレベルを選択することである。
上記3軸に基づく具体的な対策は以下のとおり。
| 対策カテゴリ | 具体的アプローチ |
|---|---|
| 可視化 | 処理ログの記録・トレース機能を実装し、AIの動きを可視化して認知ギャップを縮小する |
| 人の関与点設計 | Workflow中に人間のレビューポイントを明示的に設け、人の関与を増やす |
| スモールスタート | 低リスク領域でAI活用レベルを抑えて試し、パターンを学習してから段階的に適用拡大する |
| 境界設定 | Agentの権限・ツールアクセス・実行範囲を最小化(最小権限原則)し、AI活用レベルを実質的に下げる |
| タスク分割 | AI任せにする処理単位を細かく区切り、一度に自律実行させる範囲を狭めることでAI活用レベルを下げる |
| 説明責任設計 | 「なぜその判断か」を人が確認できる仕組みを作り、認知ギャップを縮小する |
| エスカレーション設計 | AIが判断に迷う・信頼度が低いケースを自動検知して人間に委ねる仕組みを作り、人の関与を増やす |
生成AIの活用は、自律性とリスクのトレードオフを常に意識することが出発点となる。
生成AIは「使いこなす」ものではなく、「正しく制御する」ものである。
1年に1回だけの記事ですが今年もふりかえりをします。
・自転車と水泳はずっと続いている。今年は念願の北海道に輪行ツーリングしてきた。留萌から羽幌・稚内、利尻島、旭川、富良野と周ってきた。楽しかった。来年も北海道には行きたい。
・週休3.5。仕事量を減らしてもらった。1,2週間程度の休みも何度か取れらしてもらっていい感じで働くことができた。来年も続けることができるかはわからないが、可能であればこのペースは気に入ってるので続けたい
・ChatGPTの利用。去年のふりかえりにGPT-3をあげているけどLLMの進化の早さに驚いている。プログラミングやデータ分析などで使っているけど素晴らしい。AGIを予感させるというか個人的には今のレベルで汎用性が高くAGIと言ってもいいように感じる
・FX。去年と逆でサヤ取りが封鎖されたので。ただ新しい方法を現在探索しているので復活はあるかも
・スピード。色々な意味でゆっくりと。急がない。焦らない。頑張らない。
・食べ過ぎ。常時食事を減らすというよりは、もったいないから食べるとかで不必要に食べてしまう行為をやめる。もったいない貧乏性?
・サウナ直後の水風呂。高血圧もちで血管イベントを避けるため。サウナはやめれないけどね。
・ポタリングで今までに行ったことがないところ。東北とか。
・債券。債券利回りが高くなったのと保守的なアロケーションに変えていくため。
・去年に引き続きスキー。冬の楽しみを増やしたい。あと冬キャンプも興味ある
・ITはやはりAGI系の新しい技術が出てきたらそれは追いかけていく
1年に1回だけの記事ですが今年のふりかえりをします。毎年KPTですが今年は Starfishでします。
・自転車と水泳はずっと続いていてこれは今後も続けたい
・今年はPower Platform(dataverse)での案件をやった。Power Platform自体はノンコード開発だけどその設定をするためのプログラムを作成した。ExcelからDB定義、画面生成、ページ、セキュリティなど90%以上は自動生成している。これってノンコード?。今後エンタプライズで成長がありそうな数少ないエリアなので最低限ですが気にしておく
・50代後半でFIREって言っていいかはあるけど、徐々に仕事量は減らしている。来年はさらに減らす予定
・個別株。別のうまくいく方法があるのでそちらにシフト。大型テックや優待銘柄の一部を残して年末売却した。
・ポタリングは今年は念願の四国下半分に行けたのでよかった。来年は北海道か東北を回ってみたい。
・FX。現在の金利差でのさやとりのパフォーマスは満足いくもの。REIT・インフラファンドを売って全てFXで運用する。
・スキー。学生の時にやっていて楽しかった思い出と、冬自転車にあまり乗れないのでその代替に
・ITで面白そうな技術としてはGPT-3かな。実際に応用できるレベルの知識はインプットしていこうと思っている
今年はいろいろなことがあって第3の人生について考えることが多かった年かな。
技術的には興味を持って取り組んだものはなくエンジニアとしての学びは少なかったのは残念。生活面のお金・健康・生きがいは安定していたと思うのでこれをキープ・発展させたい。
KEEP
PROBLEM
TRY
今年はコロナで在宅ワークが中心でした。
来年も在宅ワークは続きそうですが、コロナ後はどのような世界になるんでしょうかね。今年はStarfish(Stop, Less, Keep, More, Start)で振り返り。