メむンコンテンツぞスキップ
芋出し画像

蚭蚈曞の自動生成ツヌルを個人開発したしたAIに蚭蚈曞づくりも奪われる時代に

    蚭蚈曞。この二文字を芋ただけで、胃が痛くなる人は倚いず思いたす。

    曞くのに時間がかかる。曞いおも、誰も読たない。それなのに、ないず確実に困る。システム開発の䞭で、いちばん報われにくい仕事の筆頭が蚭蚈曞ではないでしょうか。

    その蚭蚈曞づくりを、AIにやらせるツヌルを䜜りたした。画面のスクリヌンショットや゜ヌスコヌドを攟り蟌むず、基本蚭蚈曞や詳现蚭蚈曞に茉る資料が、Excelになっお出おきたす。

    画像

    完成しお、正盎に蚀いたす。うれしい。そしお同時に、ちょっず悲しい。

    マンチヌは、䞊流工皋で10幎以䞊、蚭蚈曞を曞いおきた人間です。その仕事を、自分の手でAIに枡しおしたったのですから。でも、これは時代の流れで、しょうがない。それなら、奪われる偎にいるより、奪うAIを䜿いこなす偎に回ろう。そう決めお、最埌たで䜜り切りたした。

    今日は、このツヌルで䜕ができるのか、䞭身を党郚曞きたす。


    蚭蚈曞がない珟堎は、本圓に地獄です

    たず、なぜ蚭蚈曞にこだわるのか。その話をさせおください。

    システムは、䜜っお終わりではありたせん。数幎た぀ず、必ずリプレむス(システムの䜜り替え)の日が来たす。

    担圓になったSEは、たず珟状を知ろうずしたす。「珟行の蚭蚈曞を芋せおください」。そこで返っおくる答えが、「ありたせん」だったら。

    画面を䞀぀ず぀觊っお、挙動を確かめる。゜ヌスコヌドを読み解いお、項目の意味を掚枬する。䜜った人は、ずっくに蟞めおいる。目の前にあるのは、動いおいるシステムず、誰もその党䜓を説明できないずいう事実だけです。

    SEは、路頭に迷いたす。調べるだけで時間が溶けおいき、開発の人件費は䞀気に跳ね䞊がりたす。

    画像

    たずえば、゚ンゞニア4人が3か月かけお、珟行システムの調査をするずしたす。人月90䞇円で蚈算するず、4人×3か月×90䞇円で、1,080䞇円。蚭蚈曞が残っおいれば、払わなくお枈んだかもしれないお金です。

    マンチヌは、これを䜕床も経隓しおきたした。「珟状の蚭蚈曞がないのに、どうやっおやるんだ」ず叫びたくなったこずは、数えきれたせん。倧倉な苊劎をしたした。

    だから、はっきり蚀えたす。蚭蚈曞は、システム開発に絶察に必芁です。

    それなのに、珟堎では埌回しにされたす。玍期が迫る。テストが終わらない。蚭蚈曞は「あずで盎す」の山に埋もれおいく。そしお、動いおいるけれど誰にも説明できないシステムが、たた䞀぀生たれたす。


    蚭蚈曞づくりが、AIに奪われおいく

    蚭蚈曞を曞く仕事は、AIがもっずも埗意ずする皮類の仕事です。画面を芋お、゜ヌスを読んで、項目を拟っお、衚にたずめる。ルヌルが決たっおいお、量が倚くお、人間が飜きる。

    基本蚭蚈曞や詳现蚭蚈曞を぀くる䜜業は、䞊流工皋の䞀郚です。その䞀郚が、これからAIに奪われおいきたす。悲しいですが、もう始たっおいたす。

    だったら、AIに任せおしたおう。ただし、いい加枛な蚭蚈曞では意味がありたせん。珟堎で䜿えるレベルたで䜜り蟌む。そう決めお、䜜ったのがこのツヌルです。


    䜜ったのは、3぀のモヌドを持぀蚭蚈曞の自動生成ツヌル

    ツヌルには、3぀のモヌドがありたす。画面系の蚭蚈曞、DB系の蚭蚈曞、そしおレガシヌコヌドの解読です。たずは、画面系ずDB系から説明したす。

    画像

    モヌド1画面系蚭蚈曞 ―― スクリヌンショットから、画面の蚭蚈曞䞀匏を

    画面系の蚭蚈曞は、システムにある画面の数だけ䜜らなければなりたせん。ログむン画面、䞀芧画面、登録画面、確認画面、完了画面。画面が増えるたびに、画面レむアりト、項目定矩、遷移、入力チェックず、同じ皮類の蚭蚈曞が䜕枚も必芁になりたす。䞀枚䞀枚は単玔でも、数がそろうず、工数は恐ろしいこずになりたす。ここを、AIに任せられるのは倧きいです。

    入れるものは、画面のスクリヌンショット(PNG・JPG・WebPに察応)です。これだけで動きたす。もしあれば、その画面の゜ヌスコヌド(HTML・PHP・Blade・Twig・ERB・JSP・Vue・JSXなど)も䞀緒に入れるず、粟床が䞊がりたす。「この画面はログむン埌のダッシュボヌドで、暩限が2皮類ありたす」ずいった補足も、文章で添えられたす。

    出おくるものは、次の5぀です。

    • 画面レむアりト図画面䞊の項目を䞀芧にしたもの。皮別、衚瀺桁数、入力桁数、既定倀、入力䟋、衚瀺曞匏たで入りたす。

    • 画面項目定矩曞項目ID、デヌタ型、桁数、必須かどうか、初期倀などをたずめたもの。

    • 画面遷移図この画面に来る前ず、この画面から行ける先を、図にしたもの。

    • 入力チェック仕様曞プログラマヌ向けの資料です。必須、圢匏、桁数、範囲、項目同士の関係ずいったチェックの皮類ず、゚ラヌメッセヌゞが䞊びたす。

    • 自己チェックAIが、自分で䜜った蚭蚈曞を、自分で芋盎した結果です。

    こだわったのは、珟堎の人が「そこ、芋おほしい」ず思うずころを、AIが拟っおくれるこずです。

    • 衚瀺桁数は、画面の芋た目(CSSの幅)から。入力桁数は、入力欄の䞊限(maxlength)から取りたす。衚瀺できる幅より、入力できる文字数のほうが倚い項目には、「芋切れ仕様」の譊告を付けたす。画面に入りきらない文字が出る、ずいうバグの皮を、蚭蚈の段階で芋぀けられたす。

    • 読み取り専甚の項目、入力できない項目、ほかの入力で倀が倉わる項目、条件によっお有効・無効が切り替わる項目には、「芁確認」の印を付けたす。゜ヌスだけでは仕様を断定できない郚分を、AIが勝手に決め぀けないようにしおいたす。

    • ボタンを抌すず、ほかの項目の倀が自動で入る画面。この動きは、備考欄に「抌䞋で〇〇を自動セット」ず曞かれたす。

    • 最初に、画面䞊の党項目を挏れなく掗い出した「確定項目リスト」を䜜りたす。そしお、すべおの蚭蚈曞が、この同じリストを元に䜜られたす。蚭蚈曞ごずに項目がズレる、ずいう、人間がやっおもよくやらかす事故を防ぐためです。

    • 画面に衚瀺されおいない倀は、「-」にしたす。゜ヌスがなく、画面から掚枬した郚分には「(掚枬)」ず曞きたす。AIに、もっずもらしい嘘を曞かせないための工倫です。

    モヌド2DB系蚭蚈曞 ―― SQLのリバヌス゚ンゞニアリング。゜ヌスが読めなくおも、DBの蚭蚈図が手に入る

    既存のデヌタベヌスから、蚭蚈曞を逆向きに起こす。いわゆる、リバヌス゚ンゞニアリングです。

    ゜ヌスコヌドを読めない人にずっお、これは画期的だず、マンチヌは思っおいたす。プログラムの䞭身がわからなくおも、デヌタベヌスの構造さえ曞き出せれば、テヌブルの蚭蚈曞ずER図が出おくるからです。システムの「デヌタの眮き堎」が、䞀枚の図でわかる。リプレむスの芋積もりでも、業務の人ずの打ち合わせでも、この図が䞀枚あるだけで、話が䞀気に進みたす。

    入れるものは、SQLダンプ(デヌタベヌスの構造を曞き出したファむル)です。サヌバヌの蚭定ファむル(nginx・Apacheなど)も、あれば䞀緒に入れられたす。察応しおいるデヌタベヌスは、MySQL、PostgreSQL、Oracle、SQL Server、SQLite、DB2です。

    出おくるものは、次の4぀です。

    • テヌブル仕様曞テヌブルごずに、列の名前、型、制玄などを敎理したもの。

    • ER図テヌブル同士の関係を描いた図です。

    • 構成盞関図Webサヌバヌ、アプリケヌション、デヌタベヌスが、どう぀ながっおいるかを描いた図です。

    • 䞻芁凊理のシヌケンス図ログむン、デヌタ登録、デヌタ取埗ずいった代衚的な凊理で、誰が誰に䜕を頌むのか、やり取りの順番を描いた図です。

    サヌバヌの蚭定ファむルがない堎合は、SQLの内容から構成を掚枬しお図を䜜りたす。もちろん、掚枬した郚分はそうずわかるようにしおいたす。

    UMLの䞀郚の図にも察応しおいたす

    UML(システムの構造や動きを、図で衚すための䞖界共通の曞き方)の図も、䞀郚ですが出せたす。UMLは、UML 2.xで14皮類の図が定矩されおいお、システムの「構造」を衚す図ず、「振る舞い(動き)」を衚す図に分かれたす。蚭蚈曞で䜿われる代衚的な図は、次のずおりです。

    • クラス図デヌタや郚品の構造ず、その関係を衚す図。

    • シヌケンス図誰が誰に䜕を頌むのか、やり取りの順番を衚す図。

    • アクティビティ図凊理の流れを衚す図。

    • ステヌトマシン図(状態遷移図)状態が、䜕をきっかけにどう倉わるかを衚す図。

    • ナヌスケヌス図利甚者ずシステムのやり取りを衚す図。

    このツヌルが出す図は、次のずおりです。

    • シヌケンス図DB系のモヌドで、ログむン、デヌタ登録、デヌタ取埗ずいった代衚的な凊理を図にしたす。UMLの代衚的な図です。

    • 凊理フロヌ図レガシヌコヌド解読で、プログラム党䜓の流れを図にしたす。UMLのアクティビティ図にあたる圹割の図です。

    • 画面遷移図画面系のモヌドで、画面の移り倉わりを図にしたす。状態遷移図(ステヌトマシン図)に近い図です。

    • ER図UMLそのものではありたせんが、デヌタの構造を衚す図ずしお、クラス図ず䞊ぶ蚭蚈曞の定番です。

    どの図も、Mermaidずdraw.ioの圢匏で受け取れたす。UMLを描き慣れた人が、そのたた手盎ししお、自瀟の蚭蚈曞の圢に仕䞊げられたす。


    COBOLの案件は、ごくたれ。でも、いざ発生するず、人が集たらない

    ここからは、SEの方にずくに読んでほしい話です。

    COBOL(銀行や基幹システムなどで、叀くから䜿われおきた蚀語)の案件は、ごくたれにしか発生したせん。ずころが、いざ案件が出るず、スキルを持った人が集たらない。案件が少ないから、人が離れおいく。人が離れたから、いざずいう時に足りなくなる。珟堎にいるず、そんな悪埪環を感じたす。

    これは、マンチヌの実感だけではありたせん。経枈産業省のレガシヌシステムモダン化委員䌚の総括レポヌト(2025幎5月)では、レガシヌシステムが問題になる芁因の筆頭ずしお、叀い技術に察応できる技術者が高霢化・離脱し、芁員の確保が難しいこずが挙げられおいるず報じられおいたす。リクルヌトの調査(2025幎2月発衚)では、登録されたスキルの䞊䜍10蚀語にCOBOLが入っおいたのは、50歳以䞊の局だけだったずのこずです。

    孊ぶ入り口も、狭くなっおいたす。基本情報技術者詊隓の午埌詊隓では、COBOLの出題が2019幎秋期で終わったず報じられおいたす。䞀方で、メむンフレヌム(倧型の汎甚コンピュヌタヌ)に぀いおは、富士通が2022幎に、販売を2030幎床に終息し、保守を2035幎床に終了する蚈画を発衚しおいたす。い぀かは、必ず次の基盀ぞ移す日が来たす。

    COBOLができる人は枛っおいく。でも、COBOLで動くシステムは、ただ動いおいる。そしお、そのシステムには、蚭蚈曞がない。リプレむスの案件が来お、急いで集められたSEが最初にやるのは、゜ヌスを読んで、このプログラムが䜕をしおいるのかを解き明かす䜜業です。

    画像

    だからこそ、レガシヌコヌド解読のモヌドを、いちばん䜜り蟌みたかったのです。

    モヌド3レガシヌコヌド解読 ―― ゜ヌスを、読める資料に倉換する

    察応しおいる蚀語は、COBOL、PL/I、RPG(AS/400向け)、Perl、VBA、Fortran、クラシックASP、アセンブリなどです。䞊のどれでもない堎合は、AIが蚀語を自動で刀定したす。

    入れるものは、メむンの゜ヌスコヌドです。関数の定矩曞があれば䞀緒に入れられたすが、なくおも倧䞈倫です。゜ヌスから掚枬しお解読したす。

    出おくるものは、次の4぀です。

    • プログラム抂芁䜕をするプログラムなのか。入力デヌタず出力デヌタは䜕か。

    • 関数・段萜の解説COBOLなら段萜(PARAGRAPH)、PerlならSUBずいった単䜍で、凊理の抂芁、入力、出力を衚にたずめたす。凊理の内容を日本語で蚘した、凊理蚘述曞にあたる資料です。

    • 凊理フロヌ図プログラム党䜓の流れを、図にしたす。

    • 倉数・定数の䞀芧COBOLなら、デヌタの定矩を曞く郚分(WORKING-STORAGEやFILE SECTION)を元にたずめたす。

    COBOLの゜ヌスを入れるず、「䜕をしおいるのか」が日本語の資料になっお返っおくる。COBOLに詳しくない人でも、たずこの資料を読めば、リプレむスの議論の垭に぀けたす。

    ただし、AIの解読は、あくたで䞋曞きです。COBOLがわかる人によるレビュヌは、必ず必芁です。それでも、癜玙の゜ヌスの山の前で固たる時間が、なくなる意味は倧きいず考えおいたす。


    出力は、「珟堎の蚀葉」で枡す

    䜜った蚭蚈曞は、ブラりザの画面で確認できたす。そこから、Excelでダりンロヌドしたす。党シヌトを䞀括でも、セクションごずでも遞べたす。

    Excelにこだわったのには、理由がありたす。開発の珟堎は、Excel䞀本のずころが倚いのです。AIがどれだけ立掟な蚭蚈曞を出しおも、珟堎が䜿い慣れた圢で出おこなければ、䜿われたせん。

    画像

    ずくに悩んだのが、画面遷移図でした。最初は、Mermaid(テキストで図を曞く圢匏)のコヌドが、そのたたExcelのセルに入っおいたした。図になっおいないのです。ずころが、Mermaid圢匏を芚えおください、ずは、珟堎には蚀えたせん。

    「倧手䌁業の開発珟堎っお、新しいものを取り入れない。これだず、たた人間が手を加えお䜜り盎すこずになる。せっかくシステムがあるのに、なんやねんっおこずになる」

    そう考えお、図はExcel、Mermaid、draw.io(図を線集できるツヌルで開ける圢匏)の3぀の圢匏で受け取れるようにしたした。ボタンごずに、どんな圢匏なのかを小さな文字で曞いおありたす。

    遷移図の矢印には、どのボタンやリンクで遷移するのか、ずいう情報を必ず付けたす。珟堎で芋る遷移図は、そうなっおいるからです。AIは、ここを省略しがちなので、省略犁止ず指瀺しおいたす。

    ファむル名は、モヌド、セクション名、元のファむル名、日付の順で自動で付きたす。䜕を元に、い぀䜜った蚭蚈曞なのか。あずから探すずきに迷いたせん。


    䜜りながら、䜕床も叫びたした

    このツヌルは、AIに䜜っおもらいながら、マンチヌが䜕床もダメ出しをしお育おたした。そのダメ出しの䞀郚を、曞いおおきたす。

    • 最初に出おきた結果は、Excelではなく、ただの文字の矅列でした。「Excelダりンロヌドは実装しおないの」ず聞いお、気づきたした。

    • Excelに、亀互の行に色を塗る瞞暡様を付けたずきは、「これは芁らないよね」ず蚀いたした。芋やすそうに芋える食りは、䜜業する人にずっおは、むしろ邪魔になりたす。いたは、ヘッダヌずグルヌプ行だけに色が付く、最小限のデザむンです。

    • 結果を、ダッシュボヌドのようにカヌドで䞊べたずきは、「䜜業者はExcelの圢匏が芋たいだけで、ダッシュボヌドなんおどうでもいい」ず蚀いたした。いたは、目次ず本文だけの、すっきりした画面です。

    • 既定倀の読み取りでは、「既定倀、違う。画面䞊の既定倀だから『幎/月/日』が答え」ずやり盎したした。HTMLのvalue属性を読むだけでは、䌁業の本番画面には通甚したせん。実際の画面では、valueは空で、あずからJavaScriptやサヌバヌが倀を入れるからです。HTMLのvalue属性を信じおはいけない。これは、動かしおみお初めお気づいたこずでした。そこで、画面のスクリヌンショットから芋たたた読み取る方匏に倉えたした。

    • 画面レむアりト図ず画面項目定矩曞で、項目の数や名前が違っおいるこずがありたした。「同じ画面から取っおきおいるのだから、数も芋た目も同じにならないずいけないよね」。この䞀蚀から、確定項目リスト方匏ず、自己チェックが生たれたした。AIが、自分で矛盟を芋぀けお盎す仕組みです。

    • 読み取り専甚の項目に、印が付かない事故もありたした。原因は、画面レむアりト図のプロンプトには指瀺があったのに、画面項目定矩曞のプロンプトには曞き挏れおいたこずでした。AIの出力は、確かめるたびに本物のAIを呌び出す必芁がありたす。1回1〜2分の生成埅ちを䜕床も繰り返し、途方もない時間を䜿いたした。

    蚭蚈曞は、ただ䜜ればいいものではありたせん。䜿う人の「そこじゃない」「それ、珟堎では違う」を、䞀぀ず぀朰しおいっお、初めお䜿えるものになりたす。


    䜿い方は、3ステップです

    1. ログむンする(このツヌルは、以前䜜ったSSO認蚌kitを採甚しおいお、ログむンした人だけが䜿えたす)

    2. スクリヌンショットや゜ヌスコヌドを、ドラッグドロップで攟り蟌む

    3. 「蚭蚈曞を生成する」ボタンを抌しお、Excelなどでダりンロヌドする

    AIの呌び出しは、AWSの東京リヌゞョンを経由しおいたす。䜿った回数は、蚘録しお管理する仕組みも入れたした。AIは䜿うたびに利甚料がかかるので、コストの芋える化は最初から入れおおきたかったのです。


    正盎に曞いおおく、限界

    ここたで曞いおきたしたが、AIの䜜る蚭蚈曞が、そのたた完璧だずは蚀いたせん。

    • 掚枬が混じった箇所には「(掚枬)」、確定できない箇所には「芁確認」ず印が付きたす。この印のずころは、人間が確認しおください。AIは䞋曞きを䜜っおくれる盞棒で、最終チェックは人間の仕事です。

    • 画面系は、1画面ず぀の生成です。画面の数だけ、投入を繰り返すこずになりたす。たた、䞀床に読み蟌めるHTML゜ヌスの長さにも䞊限があり、玄1侇5000文字たでです。倧きな画面は、分けお入れる必芁がありたす。

    • スクリヌンショットだけで入れた堎合は、゜ヌスを入れた堎合より粟床が䞋がりたす。入れられるなら、゜ヌスも䞀緒に入れおください。

    • UMLのすべおの図に察応しおいるわけではありたせん。クラス図やナヌスケヌス図などは、いたのずころ出力しおいたせん。出せるのは、䞊に曞いた図です。

    • 画面の項目が、デヌタベヌスのどのテヌブルのどの列から来おいるのか。この玐付けは、HTMLの゜ヌスだけでは刀断できたせん。画面系ずDB系を䞀緒に投入しお、自動で玐付ける機胜は、これからの課題です。

    それでも、れロから人間が曞くのに比べれば、スタヌト地点がたるで違いたす。癜玙の前で固たる時間が、なくなりたす。


    このツヌルを、開発に携わるすべおの人に䜿っおもらいたい

    蚭蚈曞が未完成のたたのシステムを抱えおいる䌚瀟。数幎埌のリプレむスを控えおいる䌚瀟。蚭蚈曞のないシステムを、匕き継ぐこずになったSE。COBOLの案件が突然降っおきお、途方に暮れおいるチヌム。プロゞェクトを任されたものの、資料が䜕もないPM。゜ヌスコヌドは読めないけれど、システムの䞭身を知りたい業務の担圓者。自分で䜜ったアプリの蚭蚈曞が、頭の䞭にしかない個人開発者。

    開発に関わる人なら、誰でも、䞀床は蚭蚈曞で苊劎しおいるはずです。

    蚭蚈曞を人の手で曞く時代は、終わり぀぀ありたす。でも、蚭蚈曞が必芁な時代は、終わりたせん。むしろ、AIがコヌドを曞く時代になるほど、「䜕をどう䜜ったのか」を残しおおく蚭蚈曞の䟡倀は䞊がっおいくず、マンチヌは思っおいたす。

    曞く手間は、AIに任せたしょう。数幎埌に、路頭に迷うSEを぀くらないために。


    【この蚘事が興味深かった方は、以䞋蚘事もおすすめです】

    おすすめ蚘事①
    蚭蚈曞づくりのほかにも、面倒な䜜業を自分で自動化しおきた、7぀の「勝手にやっおくれる」仕組みを知りたい方はこちら。

    おすすめ蚘事②
    蚭蚈曞を曞く偎にいた䞊流の人間が、なぜAIで実装偎に戻っおきたのか。マンチヌの自己玹介はこちら。

    おすすめ蚘事③
    蚭蚈曞も「あずで盎す」の山に埋もれおいく。その怖さを、囜のシステムの挏掩から考えた蚘事はこちら。



    #蚭蚈曞 #AI掻甚 #システム開発 #リプレむス #レガシヌコヌド #COBOL #リバヌス゚ンゞニアリング #UML #IT゚ンゞニア #バむブコヌディング #munchie マンチヌ

     
     
    jijiがAIで開発しおたす🀖 AI駆動開発 / AWS / Web制䜜 / 業務システム 䞊流工皋10幎→AI実装に挑戊䞭 ブログ: munchie.jp

    あなたぞのおすすめ