フォーム読み込み中
ソフトバンクで社内システム開発を担当している犬伏です。
ソフトバンク アドベントカレンダー2023 の 16日目の記事になります。
今回はデジタル庁主催の法令APIハッカソンに参加したので、その模様を報告できればと思います。
また開発工程やデータ成形の部分に生成AIを利活用したので、活用箇所も含めてお伝えいたします!
これらの法令APIでは、法令番号や法令種別コードを指定して検索を行うことができるのですが、今回は期間限定でより使い勝手のよい法令APIプロトタイプが提供されていました。
残念ながら法令APIプロトタイプは2023年11月30日で公開終了してしまったのですが、法令APIの拡張機能を検討されているとのことなので今後のリリースに期待です。
法令APIプロトタイプは、年月を指定することで過去の条文検索が可能だったり、通常はXML形式で提供されているところJSON形式でも出力できたりしたため、法令APIと比べてより使用用途が広がったものが提供されていました。またSwagger UI上で操作も可能なため、開発中はわざわざAPIを叩かなくとも実装する前に試すことができたのでとても便利でした。
デジタル庁主催のもと2023年11月10日(金)から11月17日(金)にて法令APIプロトタイプを活用したサービス提案を行う法令APIハッカソンが開催されました。
デジタル庁では、法令等データの利活用による産業・技術・政策立案の発達等を目的として、法律や政省令等のデータを提供する「法令API」の高度化に取り組まれています。今回のハッカソンはその一環で、法令APIを用いたサービス開発等促進のために実施されたものであり、3名以上のメンバーを集め、約1週間でサービス開発を実施するというものでした。
具体的なスケジュールは、11月10日に開会式・事前ワークショップが行われ、11月11日〜11月16日で開発を行い、11月17日に発表・表彰式が行われました。
業務時間を考慮すると開発期間が少し短めですが、生成AIを活用しながらなんとか完成させることができました。
今回のハッカソンで私たちのチームが作成したアプリケーションを紹介いたします。
私たちは「誰でも法令について学べる」ことをコンセプトに、ライフイベントに着目した身近な法令がクイズ形式で学べる人生ゲームを作成しました。
ルールはすごくシンプルなゲームで、各自サイコロを振りイベントマスに止まった時に法令クイズが出題され、最後に所持金が多いユーザが勝利というものです。
ゲーム内ではイベントマスにて法令に関するクイズが出題され、正解すれば所持金が増え、不正解であれば所持金が減るという仕組みになっています。
そのため勝利するためには法令クイズに正解し続けなければならず、楽しみながら学習に繋げるといったゲームになっています。
実際のゲーム画面はこちらです。最大4名まで遊ぶことができます。
イベントマスでは以下のように法令に関する4択クイズが出題され、回答後に解説も表示されます。
アプリケーション開発において、生成AIであるChatGPTを2つの場面で活用しました。
1つ目はライフイベントに基づいたクイズ生成、2つ目はアプリケーション開発のコーディングです。具体的にはクイズの質問文・回答文生成、開発コード相談役で活用しましたので、次のセクションでご紹介いたします。
今回のゲームにおいて、クイズは大きく分けて2種類の方向性で検討しました。
1種類目はライフイベント内で法令に関わる行動を問うクイズです。
例)卒業した小学校が懐かしくなり、友人たちとこっそり学校の中を見に行き、すぐ出ました。次のうち正しいのはどれでしょうか?
正解は 3番
卒業生であっても正当な理由がないのに建造物に侵入したことから住居侵入罪(建造物侵入罪)に問われる可能性がある。
ストーリー性のあるクイズによりユーザの日常的な行動に落とすことができるため、理解度向上に繋がると考えました。
生成の方法としては、人手で洗い出したライフイベントのキーワードと条文からクイズを作成しました。
ライフイベントのキーワードをもとにgoogle が提供しているCustom Search APIを用いて事例検索を行います。事例では「法令〇条にあたる・・・」などが記載されており、具体的な法令番号が得られます。この法令番号をもとに法令API(条文内容取得 API)によって条例を特定します。最後に、条例本文と人が挙げたライフイベントキーワードをもとにGPTでクイズ生成を行います。
2種類目は法令の内容自体を問うクイズです。
例)遺失物を拾ってそのまま自分のものにした場合、どの罪に問われる可能性があるでしょうか?
正解は 1番
遺失物横領罪にあたる可能性がある
生成の方法としては法令API(条文内容取得 API)で条文を検索し、法令本文からChatGPTで正誤クイズを作成しました。
2つ目の正誤問題作成など考えることなく作業できるタスクは1つ目と比べて完成度の高いクイズが生成することができました。
なぜ1つ目のクイズ生成では精度の高いものが生成できなかったのかというと、人手で考えたとしてもライフイベントのキーワードと法令違反が結び付きにくいという問題点が生じていることがわかりました。例えば、「出水及び水利に関する罪」+「おつかい」の組み合わせでは内容があまりにも乖離しており、違和感のない法令違反ストーリーが生成できずクイズも上手く生成できないという問題が生じていました。
キーワードと法令の間になるような単語を生成する仕組みをプロンプトに追加すれば改善できたのかなと思います。
PythonのフレームワークであるFlask+bootstrap で開発を行いました。
1週間弱で動くものを作れたのは、やはりChatGPTが良き相談役になってくれたからです。
ChatGPTを使うと簡易的な人生ゲームとして遊べるものを作成するのに、特にアーキテクチャを考えなくとも数時間程で完成しました。
ただ機能追加の際、既存コードや利用モジュールとの親和性によりChatGPT(無償版のChatGPT-3.5を使用)の提案が全く参考にできないことがありました。さらに無償版と有料版ではやはり性能の差が大きく、無償版で活用していた際には提案されているモジュールのバージョンが古いためソースコードが動かないことも多々ありました。
連続した会話であれば既存のソースコードを汲み取ってくれますが、途中からChatGPTを活用する場合は現在どういうクラス構成なのか、どのようなモジュールを使用しているのか詳細に共有するようにプロンプトを工夫することで乗り越えました。
初心者が利用する際にも「初学者に説明するように・・」という文言を付け足すなどプロンプトを少し工夫することで使い勝手が変わってきますので、ぜひ試してみてください。(参考:慶應義塾大学 機械学習基礎02 コーディング)
とはいえ、提案されたコードで使用しているモジュールや組み立て方は実装への手がかりになりました。手探りで一から自分で調べるよりは、はるかに時間短縮して開発可能だと思います。
クイズ生成から開発まで短期間で体験し形にできたことはとても良い機会でしたし、何より法令APIを使って開発をできたのは貴重な経験でした。
またChatGPTを上手く使えば短い期間での開発も可能で、気軽にハッカソンなどに参加できることがわかりました。ぜひみなさんも生成AIを上手く使ってチャレンジして欲しいと思いました!
今回のハッカソンの作品は、デジタル庁の法令APIハッカソン作品紹介でまとめられています。
素晴らしい作品ばかりですので、ぜひ覗いてみてください!
条件に該当するページがございません