見出し画像

[デジタル庁主催ハッカソンでの挑戦] 法令APIを活用して、生成AIで子供向け絵本を開発した話

こんにちは、株式会社アプリボットDX事業部 開発責任者の嶋です。
デジタル庁主体の法令APIハッカソンに、先日参加してきました。
ハッカソンに参加した感想と開発したプロダクトについて紹介します。

ハッカソンの概要

法令等データの利活用による産業・技術・政策立案の発達等を目的として、法律や政省令等のデータを提供する「法令API」の高度化に取り組んでいます。その一環で、法令APIを用いたサービス開発等の促進のため、法令APIプロトタイプを活用したハッカソン(サービス開発試行イベント)を開催します。

https://www.digital.go.jp/policies/legal-practice/hackathon

デジタル庁は現行の法令APIを更に高度にした法令APIプロトタイプを設計・試作をおこなっています。この法令APIを用いた新しいアイデアの開発を1週間でチームに分かれて行うイベントでした。
14チーム参加しており、建設業界の方や弁護士の方など多岐にわたる分野の方がいらっしゃり興味深い集いでした。
Next.jsとChatGPTを利用したチームがほとんどであり、法令界隈においても開発や技術活用のトレンドを感じた瞬間でした。

私たちのチーム構成


私のチームは、アプリボットDX事業部の有志のメンバーで構成されており、下記のチーム構成でした。
生成AI×ユーザービリティの高いプロダクト開発が今回のチームの勝ち筋と考えアイデア考案&開発に臨みました。

  • プランナー: 生成AIへの熱量が非常に高いDX事業部のPdM。他業界の要件定義にも強い

  • デザイナー: サイバーエージェントグループ内のデザイン性の高いプロダクトてデザイナーを元々担当。DX事業部でメインデザイナーを担当

  • フロントエンドエンジニア: DX事業部において主力を張っており実現力が高い

  • バックエンドエンジニア: AI系のバックエンド構築経験もある、DX事業のバックエンドでサブリーダーを担当。

開発したプロダクト


開発したサービス概要

「5歳児にも分かる絵本を、生成AIで作る」
「絵本らしい体験をwebで届ける」

ことを目標に開発しました。
絵本の体験や内容にもこだわったので是非見ていってください!
(開発したプロダクトのURLも後日追記予定です)

アーキテクチャ


全体の構成図


・絵本の生成
法令APIを叩いて全文を取得して、ChatGPTで物語、絵本の画像を生成しています。
今回のプロダクトでは絵本の文章の品質が要だったので、50種類以上試行錯誤しながら今回のプロンプトを完成させています。
最終的に330行くらいのプロンプトになっていて、細かく指示や構成を指定しています。(うちのPdMはすごい)
絵本コンテンツは事前に生成し、Aurora(MySQL)とS3にそれぞれ反映しています。

・絵本アプリケーション
Next.jsで実装しています。
「絵本の体験をとても良いものにしたい」というオーダーだけで意図を汲み取ってもらい、ページめくりの体験をクオリティ高くわずか1週間で他の仕事もしながら実装してくれました。(うちのフロントエンジニアはすごい)
デザイナーによるロゴやデザインもあいまり、絵本一覧から絵本を開くまでの体験を一貫して良いものに仕上がりました(うちのデザイナーはすごい)

またアプリケーションにおいて、絵本コンテンツの随時追加を前提にアプリケーションを構成しました。
生成した物語から
・シームレスにjsonに変換、DB反映
・絵本アプリケーションからすぐに閲覧可能
で、運用を見据えた設計に仕上がっています。(うちのバックエンドエンジニアはすごい)

法令APIに対する評価


法令APIハッカソンに参加しようとおもったきっかけでもあるのですが、今回の法令APIプロトタイプの出来が良い&活用出来そうな期待感がある内容になっていました。

SwaggerでのAPI提供

web開発のこと分かっている!!
・APIを試すのが非常に容易。すぐに試せる
・APIの実装の組み込みやすさ
というSwaggerの特徴による良さがあるのはもちろんなのですが、このような活用されることが重要なAPI(特にデジタル庁のような国が提供するもの)は、利用者のスタンダードに合わせる、歩み寄る姿勢が非常に大事だと思っています。
現行の法令APIの場合はPDFでのAPIドキュメント提供なので、試しにくいこともありますが、webのエンジニアから見るととっかかりにくさが非常にありました。
今回は利用者を歩み寄りを体現した選択にになっており、webのエンジニアとしてぐっとくるものがありました。

Next.jsサンプルアプリケーションの出来の良さ

今回のハッカソンにあたり、Next.js製のサンプルアプリケーションが提供されていました。

APIプロトタイプ利用サンプル APIの利用方法や利用用途の参考として頂けるよう、法令文書を検索、閲覧できるサンプル Webアプリケーション及びソースコードを提供しております。 サンプルコードは、デジタル庁HPの法令APIプロトタイプ公開テストのご案内を参照くださ い。 また、当該サンプルWebアプリケーションのデモンストレーションを下記URLでご覧頂くこ とができます。 https://ui.lawapi-prototype-test-elaws.e-gov.go.jp/keyword

公式APIドキュメントより

さすがデジタル庁のプロダクトで、デザインもしっかりしており、社内で「さすがデジタル庁だね」という話ました。(デジタル庁はすごい)

デザインもそうですが、Next.jsのアプリケーションとしても単なるモックアプリではなく、レポジトリ構成もしっかりしていました。
API実行部分も分離・汎用的に使えるように作られていたため、Next.jsで実装する場合はこのレポジトリからフォークして触れるように提供するのが、将来法令APIを提供するにあたり良さそうだと思いました。
活用が進んでいるAPIは、大抵Github上にサンプルアプリケーションが公開さされているイメージがあります。

唯一感じた不便さは、法令の文章がテキストではなく階層構造で提供されていること

法令の詳細をAPIで取得する際、シンプルなテキストではなく、jsonの配列で帰ってきます。(xmlを指定して取得することも可)
↓一部抜粋例

{
  "tag": "SectionTitle",
  "attr": {},
  "children": [
    "第一節 通則"
  ]
},
{
  "tag": "ArticleRange",
  "attr": {},
  "children": [
    "(第十二条―第十四条)"
  ]
} 

法令の特性上、ルビも含め条文にさまざまな文字付加情報があり、正確にAPIで返すためには構造化されたデータで返却するのは必須だと思います。
一方で今回のようにライトに全文を扱ったり、機械学習で言葉を分析する場合、プレーンなテキストで取得できる手段があると良いなと思いました。

ハッカソン終了後にデジタル庁の方とディスカッションしたところ、民間のOSSでパーサーを実装して簡単にプレーンなテキストを取得できるように作るのが良いと感じました。
法令APIのデータソースとなっているものはxml的な構造なものであり、テキストでの返却を保証する(APIサーバー内でconverterを実装する)となると、どこまでサポートをし、アウトプットにどう誰が責務をもつのかという問題になるとのことでした。

幸いconverterの実装はすぐできる(ChatGPTに聞いてすぐコードを出せるレベル)なので、APIの利用者側で担保するのが良いバランスだと感じました。

ハッカソン全体の所感

このハッカソンを通じて、国の情報が法令APIの拡張を通し、より使いやすく発展性のあるものへ歩んでいっていることを感じました。
APIなど公開データは利用者あってのことですし、利用者に合わせたインターフェースや参考情報が出ていることが重要です。
今回のハッカソンではそれが十分に提供されていることを感じましたし、それゆえに今のタイミングで生成AIと組み合わせたモックアプリが今回たくさん生まれたことに繋がっていると思っています。
今後のデジタル庁を基点とした、webフレンドリーな発展に期待しています。

アプリボットDX事業部として

現状我々はゲーム開発で培った要件定義力と開発力を武器に、製造業を中心にDXのシステム開発に関わらせて頂いています。
今回法令DXに初めて関わりましたが、我々の業界の理解力と要件定義力で取り組めば、初めての課題感に対してでも十分に価値を発揮できると感じました。
既に分野で活躍している企業の方と、我々のIT開発力の掛け合わせで、新たなDXの価値を生み出していけると感じています。

この記事が気に入ったらサポートをしてみませんか?