投稿者: 沼田 勇作

  • (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月18日通信)ワープロの次に、経営者が身につけるべきコンピュータスキル

    かつて、経営者がまず身につけるべきコンピュータスキルは「ワープロ」でした。

    これは単に、文章をきれいに作成できるからではありません。

    会社を経営するという行為のかなりの部分が、文書によって行われていたからです。

    人事異動を伝える。
    就業規則を定める。
    業務上の指示を出す。
    取引条件を決める。
    社内へ方針を伝える。
    契約を締結する。

    経営者が決めたことは、最終的には「書面」になります。

    この構造そのものは、コンピュータが登場するはるか以前から大きく変わっていません。

    江戸時代であれば、和紙に筆で書き、必要に応じて印を押して書面を作る。

    近代になれば、それがタイプライターや印刷物になり、やがてワープロ文書になった。

    現在ではWord文書やPDFになっています。

    媒体は変わりました。

    しかし、

    「権限を持つ人がルールを決め、それを文書として残し、人に伝える」

    という基本構造は長い間ほとんど変わっていません。

    ところが、会社のルールは「文書」だけでは決まらなくなった

    ここに、現在のDXを考えるうえで非常に大きな変化があります。

    現在の企業では、

    「誰が何をできるのか」

    というルールのかなりの部分が、文書ではなくコンピュータシステムによって決まり始めています。

    例えば経営者が就業規則や業務規程に、

    「営業部長は所定の範囲で値引きを承認できる」

    と書いたとします。

    紙の世界であれば、その文章を読んだ人間がルールを理解し、運用します。

    しかし業務システムでは、それだけでは足りません。

    システム上では、さらに細かく決める必要があります。

    営業部長とは、どのユーザーなのか。

    何円まで承認できるのか。

    自分の部署だけなのか。

    他の営業所の案件も見られるのか。

    承認後に変更できるのか。

    代理承認は認めるのか。

    退職・異動した場合はいつ権限を失うのか。

    どの記録を残すのか。

    つまり、文書に書かれた一行の規則を、コンピュータ上では大量の具体的な条件へ変換しなければなりません。

    文書を作る権限と、システムを作る権限が分離している

    ここで大きな問題が起こります。

    経営者には、規則を書く権限があります。

    しかし、その規則をコンピュータシステムへ反映する能力を持っていない場合、その実装を外部のシステム会社やIT担当者へ依頼することになります。

    すると、

    経営者

    規則を文章で決める

    システム会社へ説明する

    システム会社が解釈する

    データ構造・権限・処理へ変換する

    実際の業務ルールになる

    という構造が生まれます。

    ここで注意すべきなのは、経営者が決めた「文章」と、実際に会社を動かす「システム上のルール」が必ずしも同じではないことです。

    経営者は、

    「部長には必要な情報を見せる」

    と考えているかもしれません。

    しかしシステムを作る側は、

    「必要な情報とは具体的に何か」

    を決めなければ実装できません。

    顧客情報は全部見せるのか。

    原価は見せるのか。

    他部署の売上は見せるのか。

    個人情報はどうするのか。

    CSVで持ち出せるのか。

    過去の情報まで閲覧できるのか。

    ここまで来ると、単なるプログラミングの問題ではありません。

    会社の権限構造そのものを設計しています。

    外部依存が進むと、経営者は規則を自由に変えられなくなる

    さらに問題なのが、システムが巨大化した後です。

    経営者が、

    「来月から承認制度を変えよう」

    と考えたとします。

    本来、これは経営判断です。

    ところがシステム会社から、

    「現在のシステムでは対応が難しいです」

    「他の機能にも影響します」

    「改修には半年必要です」

    「次回のシステム更改まで待った方がよいです」

    と言われる。

    すると、経営者は本来必要だと思っている制度変更を、システムの都合によって諦めることになります。

    これはかなり重大な逆転です。

    本来は、

    経営

    業務

    システム

    であるべきです。

    ところが、

    システム

    変更可能な業務

    経営判断

    となってしまう。

    つまり、経営者が規則を作っているつもりでも、実際には「現在のシステムで実現可能な範囲から規則を選んでいる」状態になります。

    これでは、経営の自由度そのものがシステムに制約されます。

    昔の経営者にワープロが必要だったなら、今の経営者には何が必要なのか

    ここで、最初の話に戻ります。

    ワープロが普及した時代、経営者がワープロを使えることには意味がありました。

    自分で文章を書き、自分で修正し、自分で意思を伝えられるからです。

    誰かに清書を依頼しなければ規則を変更できない状態から、経営者自身が文書を扱える状態へ変わりました。

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

    会社の規則そのものがコンピュータシステムへ埋め込まれ始めています。

    そうであるならば、経営者に必要なコンピュータリテラシーも変わらなければなりません。

    必ずしもプログラミング言語を習得する必要はありません。

    経営者自身がPythonやJavaを書ける必要もないでしょう。

    しかし、少なくとも、

    データとは何か。

    会社にはどのようなデータが存在するのか。

    データ同士はどのようにつながっているのか。

    誰がそのデータを見ることができるのか。

    誰が変更できるのか。

    誰が承認するのか。

    業務と業務はどのように依存しているのか。

    システム変更によって、どこへ影響が及ぶのか。

    この程度の「システム構造を読む力」は、経営側に必要になってきています。

    プログラミング教育より先に、システム設計を学ぶ意味

    これは、いわゆるプログラミング教育とは少し違います。

    プログラムを書くことが目的ではありません。

    会社という組織を、


    権限
    業務
    データ
    処理

    という関係として捉える能力です。

    例えば、

    会社

    部署

    業務

    担当者

    扱えるデータ

    実行できる処理

    という構造を理解する。

    これが分かれば、システム開発会社へ依頼する場合でも、

    「この画面を作ってください」

    ではなく、

    「この部署のこの役職には、この範囲のデータだけを扱わせたい」

    という指示ができるようになります。

    この違いは非常に大きい。

    前者は画面の発注です。

    後者は経営構造の設計です。

    生成AIによって、問題はさらに大きくなる

    生成AIによってプログラムを書くコストは急速に下がっています。

    以前なら、

    「難しいから作れない」

    という技術的な壁がありました。

    現在は、

    「AIに頼めば、とりあえず動くものは作れる」

    という時代になっています。

    これは非常に便利です。

    しかし同時に、新しい危険も生まれます。

    構造を理解していないまま、

    「この機能を追加して」

    「次はこの例外にも対応して」

    「この人だけ特別に見られるようにして」

    とAIに依頼し続ければ、動くシステムはどんどん膨張します。

    しかし数年後、

    「この会社では、なぜこの人がこのデータを見ることができるのか」

    という質問に、誰も答えられないシステムが出来上がるかもしれません。

    コードを書けるかどうか以上に、

    「何を作っているのかを説明できるか」

    が重要になります。

    ワープロの次に必要なのは「会社をシステムとして読む力」

    江戸時代、経営や行政の意思は紙に書かれました。

    近代には印刷物になりました。

    コンピュータ時代にはワープロ文書やPDFになりました。

    そして現在、会社のルールそのものが、データベース、権限設定、業務システムの中へ移り始めています。

    だからこそ、経営者に求められるコンピュータスキルも変わります。

    かつては、

    「自分で文書を作れること」

    が重要でした。

    これからは、

    「自分の会社がコンピュータ上でどのような構造になっているのかを理解できること」

    が重要になります。

    システム会社にコードを書いてもらうことは問題ではありません。

    専門家に実装を任せることも当然です。

    しかし、

    「誰が何を見られるのか」

    「誰が何を決められるのか」

    「どの業務からどのデータが生まれるのか」

    「会社の規則がシステム上でどのように表現されるのか」

    まで外部に任せてしまえば、経営者は徐々に規則を自由に作れなくなります。

    コンピュータを使って経営する以上、システム設計は単なるIT部門の仕事ではありません。

    それは、

    会社のルールを、コンピュータ上でどう表現するかを決める経営そのもの

    になり始めています。

    ワープロを使えることが経営者の基本スキルだった時代の次には、

    システムの構造を理解し、自社のデータ・業務・権限を自分たちで設計できること

    が、経営者の基本的なコンピュータリテラシーになるのかもしれません。