カテゴリー: Uncategorized

  • (8月20日通信)「動くから安心」は大間違い。あなたのシステムは“二人乗りの原付き”で高速道路を走っていないか?

    【DXの罠】入門教材で作れたシステムを、そのまま会社で使ってはいけない

    「Webアプリの作り方を一通り勉強した」

    「生成AIに聞きながらCRUDもログインも実装できた」

    「実際にブラウザから動いている」

    ここまで来ると、

    「これなら自社の業務システムも作れるのではないか」

    と思いたくなります。

    しかし、ここに生成AI時代の大きな落とし穴があります。

    入門教材で作るシステムと、企業が本番運用する業務システムは、そもそも設計目的が違います。

    入門教材の目的は、

    フレームワークの仕組みを理解すること

    です。

    企業の業務システムの目的は、

    異なる立場・権限・所属を持つ多数の人間が、重要な企業データを安全に扱い続けること

    です。

    この二つを同じ設計で作ってはいけません。


    1.実際の「入門教材」を7つ見てみよう

    ここで、実際に公開されているフレームワーク学習教材を見てみます。

    重要なのは、これらの教材を批判することではありません。

    むしろ、どれも入門教材としては非常によくできています。

    問題は、

    「教材で完成したサンプルアプリの構造=業務システムの正しい構造」

    だと思い込むことです。


    ① MDN ― Express「地域図書館」チュートリアル

    MozillaのMDNには、Node.js+Expressを使って「地域図書館」のWebサイトを作る非常に分かりやすいチュートリアルがあります。

    MDN:Express チュートリアル「地域図書館のウェブサイト」

    内容は、

    • Expressアプリケーションの作成
    • データベース
    • ルーティング
    • ビュー
    • フォーム
    • デプロイ

    などです。

    MDN自身が、このシリーズを終えると**「簡単なExpressアプリケーションを自分で開発するのに十分な知識」**が身につくと説明しています。

    さらに興味深いことに、Express学習モジュールのページでは、今後追加できるテーマとして、

    • セッション
    • ユーザー認証
    • ユーザーの認可と権限
    • Webセキュリティ

    などが別途挙げられています。

    つまり教材自身が、

    「まず簡単なWebアプリを作る」

    ところに学習範囲を絞っているわけです。

    それは入門教材として正しい判断です。

    しかし、その構造をそのまま社員数百人の業務システムへ持っていくのは別問題です。


    ② paiza ― Flask入門

    Pythonの軽量WebフレームワークFlaskにも、非常に分かりやすい日本語入門教材があります。

    paizaラーニング:Webアプリ開発入門 Flask編

    最初のFlask入門では、

    • Webアプリの初歩
    • Hello World
    • ルーティング
    • テンプレート
    • 共通部分の分割
    • ユーザー操作による表示変更

    などを順番に学びます。

    これはまさに、

    「Webフレームワークとは何なのか」

    を体験するための教材です。

    ここで重要なのは、

    この教材で習った作り方が間違っているわけではない

    ことです。

    ただし、

    「本社」

    「支店」

    「店舗」

    「部長」

    「一般社員」

    「取引先」

    「顧客」

    という複雑な関係を持つ業務システムは、最初から別の設計問題として考える必要があります。


    ③ FastAPI ― 公式チュートリアル

    FastAPIには、日本語化された非常に充実した公式チュートリアルがあります。

    FastAPI公式:チュートリアル・ユーザーガイド

    最初は非常にシンプルです。

    FastAPI()を作り、

    パスを定義し、

    リクエストを受け、

    JSONを返す。

    そこから、

    • パスパラメータ
    • クエリパラメータ
    • リクエストボディ
    • バリデーション
    • レスポンスモデル
    • エラー処理

    などを段階的に学びます。

    もちろんFastAPIにはSecurity Toolsもあり、認証・認可を実装できます。

    つまり、

    FastAPIが業務システムに使えないという話ではありません。

    むしろ逆です。

    自由度が高いからこそ、

    「会社・組織・ユーザー・権限・データ境界をどうモデル化するか」

    は、フレームワークの入門教材とは別に設計者が考えなければならないのです。


    ④ Next.js ― App Router入門

    現在のNext.jsにはApp Routerを中心とした学習導線があります。

    日本語で基本構造を確認できるドキュメントはこちらです。

    Next.js 16 日本語ドキュメント:App Router

    ここでは、

    • インストール
    • プロジェクト構造
    • レイアウト
    • ページ
    • ナビゲーション
    • Server Components
    • Client Components

    などを順番に学習できます。

    公式のNext.js Learnには、さらに興味深い題材があります。

    請求書を登録・編集・削除できるダッシュボード

    を作ります。

    ログインページもあり、認証で保護されたページもあります。

    これは非常に良い教材です。

    しかし、ここで経営者が注意すべきなのは、

    「ログイン+請求書CRUDができた」ことと、「企業の会計・販売管理システムとして設計できた」ことは同じではない

    という点です。

    本番の企業では、

    営業担当者はどこまで見えるのか。

    営業部長は何を承認できるのか。

    経理担当者はどこまで変更できるのか。

    支店Aから支店Bの請求情報が見えてよいのか。

    退職者の権限をどこで停止するのか。

    といった、教材とは別の問題が大量に発生します。


    ⑤ paiza ― Laravel入門

    Laravelの入門教材も非常に分かりやすい例です。

    paizaラーニング:Webアプリ開発入門 Laravel編

    ここでは、

    • ルーティング
    • MVC
    • Blade
    • フォーム
    • Eloquent ORM
    • CRUD
    • ログイン
    • アクセス制御

    まで順番に学ぶことができます。

    しかもpaiza自身が、この講座について、

    理解しやすくするため基本的な内容に留め、サンプルや演習課題も小規模にしている

    と説明しています。

    ここは非常に重要です。

    教材が悪いのではありません。

    教材側が「小規模な学習用です」と明示しているのです。

    実際、後半ではログイン・ログアウト・サインアップを追加し、

    自分の投稿だけ編集できるようにする

    ところまで学習します。

    これは認可を学ぶ最初の教材として優れています。

    しかし企業システムでは、

    「自分か他人か」

    だけでは済みません。

    会社、部署、役職、プロジェクト、店舗、担当顧客、承認経路などによって権限が変化します。


    ⑥ Railsチュートリアル ― Railsの教科書

    Ruby on Railsにも、日本語で非常に分かりやすい初心者向け教材があります。

    Railsチュートリアル:Railsの教科書

    教材自身が目的を非常に明確に説明しています。

    題材は、

    写真や文章を投稿できるミニブログアプリ

    です。

    そして、

    「できるだけ簡単なサンプルアプリ」

    を使ってRailsとWebアプリの基礎を説明するとされています。

    内容も、

    • 小さなRailsアプリ
    • CRUD
    • モデル
    • Gem
    • 画像アップロード

    という、非常に分かりやすい構成です。

    これを読んでRailsを学ぶのは正しい。

    しかし、

    ミニブログの設計を、そのまま会社の販売・購買・会計・人事システムへ拡大するのは正しくありません。


    ⑦ Spring Boot ― 入門ガイド

    最後は、企業システムでも広く利用されるSpring Bootです。

    日本語で読めるSpringの入門ガイドがあります。

    Spring:Spring Boot アプリケーションの構築

    このガイド自身が、

    Spring Bootを簡単に体験するためのもの

    と説明しており、約15分で簡単なWebアプリケーションを構築します。

    別のSpring MVC入門でも、

    Webコントローラーを作り、ブラウザにページを表示させるところまでを段階的に学習します。

    もちろんSpringには、その先に非常に強力なSecurityや企業向けの仕組みがあります。

    しかし、

    「15分でSpring Bootアプリが動いた」

    ことと、

    「企業の権限体系を設計できる」

    ことは当然ながら別です。


    2.7つを並べると、共通点が見えてくる

    技術は全部違います。

    JavaScript。

    Python。

    PHP。

    Ruby。

    Java。

    しかし、入門教材には共通した構造があります。

    まず、

    画面を出す。

    次に、

    URLと処理を結びつける。

    そして、

    データベースへ保存する。

    CRUDを作る。

    さらに進んだ教材では、

    ログインを付ける。

    ここまで来ると、非常に「システムらしく」見えます。

    だから危険なのです。


    3.入門教材は「どう動かすか」を教える。業務設計は「誰に何を許すか」から始まる

    初心者向け教材では、

    「このボタンを押したらこの関数を呼ぶ」

    「このURLならこのControllerを動かす」

    「このフォームの値をデータベースへ保存する」

    という順番で学ぶことが多くなります。

    当然です。

    動かなければ学習にならないからです。

    しかし企業の業務システムでは、実装より前に、

    誰が使うのか

    を考えなければなりません。

    例えば、

    • 経営者
    • 本部管理者
    • 部長
    • 店長
    • 一般社員
    • 経理担当者
    • 外部税理士
    • フランチャイズ加盟店
    • 取引先
    • 顧客

    が同じシステムへアクセスするとします。

    ここで最初に考えるべきなのは、

    「画面をどう作るか」ではありません。

    まず、

    誰が、何を、どこまでできるのか

    です。


    4.「ログインを付けた」だけではマルチユーザー設計ではない

    これは特に経営者に知っておいてほしい点です。

    ログインとは基本的に、

    「あなたは誰ですか?」

    を確認する仕組みです。

    しかし企業が必要としているのは、その次です。

    「あなたは何をしてよいですか?」

    さらに、

    「どの会社・部署・店舗・顧客のデータを扱ってよいですか?」

    まで決める必要があります。

    したがって企業システムでは、

    認証

    認可

    組織境界

    レコード境界

    業務上の承認関係

    まで設計する必要があります。

    ログイン画面は、その入口にすぎません。


    5.生成AIが、この勘違いをさらに危険にした

    以前なら、初心者が入門教材から大規模なシステムを作ろうとしても、途中でプログラムが動かなくなりました。

    そこで、

    「何か設計がおかしい」

    と気づく機会がありました。

    ところが生成AIは違います。

    「この人だけ編集可能にして」

    と言えばif文を書いてくれます。

    「部長も編集可能にして」

    と言えば、さらに条件を追加します。

    「管理者も」

    「この店舗だけ例外」

    「このユーザーだけ特別」

    と要求すると、

    AIはかなりのところまで動くコードを作ってしまいます。

    結果、

    一つの業務ルールが、

    画面Aのif。

    画面Bのif。

    APIのif。

    バッチ処理のif。

    帳票処理のif。

    と分散していく。

    それでも当面は動きます。

    ここがAI時代の怖さです。


    6.入門教材のコードを捨てる必要はない。「設計図」にしてはいけない

    ここで誤解してほしくありません。

    入門教材のコードを使うな、という話ではありません。

    ルーティングの書き方。

    ORMの使い方。

    フォーム処理。

    テンプレート。

    API。

    バリデーション。

    これらはそのまま役立ちます。

    しかし、

    入門教材から学ぶべきなのは「部品の使い方」であって、「会社全体の設計図」ではありません。

    ここを間違えると、

    小さなTODOアプリを少しずつ継ぎ足して、

    最後には基幹システムにしてしまうようなことが起きます。

    それは、

    二人乗りの原付きに荷台を足し、座席を足し、タイヤを太くし、最後には大型バスとして高速道路を走らせようとするようなものです。

    途中からどれだけ部品を追加しても、

    最初から多人数を乗せることを考えて作られた車両とは設計思想が違います。


    7.経営者がSEに聞くべき質問は一つ

    プログラムを読めなくても構いません。

    担当者に、こう聞いてみてください。

    「このシステムでは、誰が・どの組織に所属し・どのデータに・どんな操作をしてよいかを、どこで定義していますか?」

    この質問に、

    「この画面ではif文で……」

    「このControllerでは……」

    「ここだけ例外で……」

    という説明が延々と続くのであれば注意が必要です。

    逆に、

    User。

    Group。

    Role。

    Permission。

    Policy。

    Organization。

    Tenant。

    ACL。

    名称は何でも構いません。

    会社の権限体系と業務体系が、

    一つの構造として説明できる

    のであれば、少なくとも設計について考えられています。


    結論――入門教材は正しい。だからこそ、その先が必要になる

    今回紹介した7つの教材は、どれも悪い教材ではありません。

    むしろ、

    初心者にWebフレームワークを理解させるために、意図的に問題を小さくしている教材

    です。

    だからこそ重要なのです。

    入門教材を最後まで終えたとき、

    「業務システムが作れるようになった」

    と考えるのではなく、

    「業務システムを作るための道具を、一通り触れるようになった」

    と考える。

    ここには大きな違いがあります。

    生成AIによって、この「道具を使う能力」は急速にコモディティ化しています。

    その一方で、

    誰が使うのか。

    何を許すのか。

    何を分離するのか。

    どこを共通化するのか。

    変更されたとき、どこまで影響するのか。

    という設計の重要性はむしろ高くなっています。

    入門教材を否定する必要はありません。

    ただ一つ、

    入門教材で作ったサンプルアプリを、そのまま会社の業務システムの設計図にしてはいけない。

    これだけは、生成AI時代のDXにおいて経営者が知っておくべきことではないでしょうか。

  • (8月14日通信)SIerは現代の書記官なのか、それとも宰相なのか

    企業がシステム開発をSIerへ依頼することは、珍しいことではありません。

    むしろ大企業ほど、

    • 会計
    • 人事
    • 在庫
    • 営業
    • 製造
    • 購買
    • 顧客管理

    といった重要な業務システムを、外部の専門企業と一緒に作っています。

    これは合理的です。

    高度な専門知識が必要なものを専門家へ依頼する。

    建物を建てるときに建設会社へ依頼するのと同じです。

    しかし基幹システムの場合、一つ注意しなければならないことがあります。

    SIerが作っているのは、単なる「道具」なのでしょうか。

    それとも、会社がどう動くかを決める「統治構造」なのでしょうか。

    昔の書記官の仕事

    昔の国家には書記官がいました。

    王が、

    「この土地にはこの税を課す」

    と決める。

    書記官が文書にする。

    官僚が配布する。

    現場で実行される。

    この場合、書記官は重要な専門職ですが、あくまで王の決定を文書にする役割です。

    王
    ↓
    意思決定
    ↓
    書記官
    ↓
    文書
    ↓
    行政
    

    書記官は命令を正確に記録する。

    しかし、原則として命令の内容そのものを決めるわけではありません。

    では、現在のSIerはどうでしょうか。

    経営者の一言だけでは、システムは作れない

    例えば経営者が、

    「営業部長には値引き権限を与えたい」

    と言ったとします。

    これだけではプログラムにはできません。

    システムを作るためには、

    • 何円までか
    • 何%までか
    • 自部署だけか
    • 他営業所も対象か
    • 担当顧客だけか
    • 承認後に変更できるか
    • 代理承認を認めるか
    • 退職・異動時はどうするか
    • 履歴を誰が見られるか

    まで決めなければなりません。

    つまりSIerは、単純に「経営者の指示を書き写す」ことができません。

    必ず、

    経営判断をコンピュータが扱える規則へ翻訳する作業

    が必要になります。

    ここでSIerの役割は、書記官より一段大きくなります。

    書記官から宰相へ

    宰相とは、王の命令を書き写すだけの人物ではありません。

    王へ助言する。

    政策の選択肢を作る。

    行政機構を整える。

    各部門を調整する。

    時には、

    「その政策は実行できません」

    「こちらの方が現実的です」

    と王へ進言する。

    基幹システムを長期間担当するSIerも、これに近い立場になることがあります。

    例えば経営者が、

    「承認制度を変えたい」

    と言ったとします。

    SIerから、

    「現在のERPでは難しいです」

    「この変更をすると会計システムへ影響します」

    「標準機能に合わせた方が安全です」

    「次の更改まで待った方がよいです」

    と説明される。

    もちろん、その助言が技術的に正しいことも多いでしょう。

    しかし結果として、経営者は、

    SIerが提示した実現可能な選択肢の中から経営判断を選ぶ

    ことになります。

    ここまで来ると、SIerは単なる書記官ではありません。

    選択肢を作る人は、意思決定へ大きな影響を与える

    経営者に最終決定権があるからといって、実質的な影響力まで経営者だけにあるとは限りません。

    例えば、

    選択肢A
    改修費1億円
    
    選択肢B
    現状維持
    
    選択肢C
    ERP標準へ業務変更
    

    と提示されたら、多くの場合CかBを選ぶでしょう。

    しかし、

    「本当にこの3つしか選択肢がないのか」

    を経営側が検証できなければ、選択肢を作った側が非常に大きな力を持ちます。

    これはITに限った話ではありません。

    政策でも、

    「どの案を議論のテーブルへ載せるか」

    を決める人は大きな影響力を持ちます。

    システム開発でも同じです。

    SIerは会社の内部を非常に深く知る

    さらに、長期間同じSIerへ依頼すると、企業内部の知識がSIer側へ蓄積されていきます。

    例えば、

    1年目は営業。

    2年目は在庫。

    3年目は製造。

    4年目は会計。

    5年目は人事。

    というように部門ごとにシステムを刷新するとします。

    5年後、SIerは、

    • 誰が何を承認しているか
    • どこに例外業務があるか
    • どの部門同士が対立しやすいか
    • どの商品が利益を生んでいるか
    • どの処理が会計へ影響するか
    • 誰が実質的なキーパーソンなのか

    まで理解しているかもしれません。

    場合によっては、新しく就任した役員よりSIerの担当者の方が、

    「この会社が実際にはどう動いているか」

    を知っていることすらあります。

    会社の記憶まで外部化される

    さらに危険なのが、設計理由が社内に残っていない場合です。

    例えば、

    「なぜこの取引だけ別処理なのか」

    「なぜこの役職だけ特殊権限があるのか」

    「なぜこのデータは5年間保存するのか」

    という理由が、設計書ではなくSIer担当者の経験として残っている。

    すると担当者が、

    「これは昔こういう事情がありまして」

    と説明しない限り、会社側では判断できません。

    この状態では、SIerは単にシステムを管理しているのではありません。

    会社の制度の記憶まで保有している

    ことになります。

    ベンダーロックインの本当の怖さ

    ベンダーロックインというと、

    「別会社へ乗り換えると高い」

    という話になりがちです。

    しかし、本当に怖いのは価格だけではありません。

    コードがSIerにある
    
    設計書がSIerにある
    
    業務知識がSIerにある
    
    例外処理の理由もSIerにある
    
    権限構造を理解しているのもSIer
    

    となった場合、

    別のSIerへ変更する以前に、

    自社が自社の仕組みを説明できない

    という状態になります。

    これは単なるIT依存ではありません。

    経営能力の外部化です。

    SIerが悪いわけではない

    ここは重要です。

    SIerが悪意を持って経営権を奪っている、という話ではありません。

    むしろSIer側からすると、

    「会社側で要件を決めてもらえないから、こちらで整理するしかない」

    ということが多いでしょう。

    経営側が、

    「いい感じにしてください」

    「他社と同じでお願いします」

    「ERP標準でやってください」

    と依頼すれば、SIerが会社の業務を設計せざるを得ません。

    その結果として影響力が増える。

    つまり問題は、

    SIerへ任せることではなく、何を任せるのかを会社側が区別していないこと

    です。

    実装は任せても、会社の設計は手放さない

    企業側が持つべきものは、必ずしもコードではありません。

    最低限、

    会社
    ↓
    部署
    ↓
    業務
    ↓
    データ
    ↓
    権限
    ↓
    処理
    

    という構造を、自社で説明できる状態にしておく必要があります。

    例えば、

    「営業担当者は自分の顧客だけ閲覧できる」

    「営業所長は営業所全体を見られる」

    「本部は全社集計を見られるが、個人情報は人事だけ」

    というルールは、会社側が決めるべきものです。

    SIerはそれを、

    • データベース
    • API
    • 権限設定
    • プログラム
    • テスト

    へ落とし込む。

    この分担なら、SIerは優秀な書記官であり、優秀な技術参謀です。

    「何を決めるか」まで任せると宰相になる

    反対に、

    「誰に何を見せればよいかも考えてください」

    「どの承認フローがよいか決めてください」

    「どんな業務構造にするかも提案してください」

    「ERPに合わせて業務を変えてください」

    とすべて任せる。

    するとSIerは、

    会社の業務を理解する
    ↓
    会社のルールを決める
    ↓
    ルールをシステム化する
    ↓
    変更可能範囲まで決める
    

    立場になります。

    これはかなり宰相に近い。

    経営者は最終承認するだけで、実際の統治構造を設計しているのはSIer、ということになり得ます。

    生成AI時代は、企業側が設計を取り戻せる可能性がある

    生成AIによって、システム開発そのもののコストは下がりつつあります。

    これまで企業がSIerへ大きく依存した理由の一つは、

    「コードを書ける人が社内にいない」

    ことでした。

    しかしAIによって、

    • モデル作成
    • CRUD
    • API
    • テスト
    • 管理画面

    などの実装コストが下がれば、企業側がすべてを外部へ丸投げする必要性も下がります。

    ただし条件があります。

    企業側が、

    何を作るべきかを設計できること

    です。

    AIへコードを書かせられても、

    「誰が何をできる会社にするか」

    を決められなければ意味がありません。

    現代企業に必要なのは「自前の宰相」

    SIerは必要です。

    専門知識も必要です。

    外部の知見を使うことも重要です。

    しかし会社の中に、

    • 業務構造を理解する人
    • データ構造を理解する人
    • 権限を設計する人
    • システム変更と経営への影響を説明できる人

    が必要です。

    肩書はCIOでも、CTOでも、経営企画でも構いません。

    大切なのは、

    会社全体の設計図を自社側で持つこと

    です。

    そうすればSIerは、強力な専門家として使えます。

    しかし、その設計図まで外部へ渡してしまえば、会社は次第に、

    「SIerに相談しなければ自分の会社を変更できない」

    状態になります。

    SIerは書記官なのか、宰相なのか

    答えは、企業側の姿勢によって変わります。

    経営側が、

    「何を実現するか」

    を決め、

    SIerが、

    「どう実装するか」

    を担当するなら、SIerは現代の優秀な書記官であり技術参謀です。

    しかし、

    「何を実現すべきか」

    までSIerへ任せれば、SIerは宰相になります。

    そして経営者がシステム構造を理解できなくなれば、

    宰相が提示した選択肢から王が選ぶ

    という経営になっていきます。

    コンピュータシステムが会社のルールそのものを実行する時代だからこそ、

    企業が外部へ任せてよいものと、

    決して手放してはいけないものを、

    もう一度区別する必要があるのではないでしょうか。