はじめに
2024年8月29日~10月26日までに行われた「都知事杯オープンデータ・ハッカソン」の参加報告ブログです。こちらは下記youtubeでも公開されていますので、ご興味ある方はご覧ください。
皆様は「都知事杯オープンデータ・ハッカソン」をご存じですか?東京都が主催しているハッカソンで、東京都が公開しているオープンデータを活用して行政課題を解決するソリューションの開発・提案を行うハッカソンになります。
今回はそのハッカソンに参加してきたので発表内容と感想をお話ししていきたいと思います。
都知事杯オープンデータ・ハッカソンの概要
東京都が公開している「オープンデータカタログサイト」というオープンデータを公開しているサイト上のデータを利用し、行政課題の解決に向けた開発・提案を行うハッカソンになります。最終的には、ハッカソンを通じて作成した物を社会実装し、行政や市民の方々に利用していただくことを目指します。
今回のハッカソンは以下の3つの部門に分かれています。
- サービス開発部門: オープンデータを活用したサービス開発を競う部門
- ビジュアライズ部門: オープンデータのビジュアライゼーション(可視化分析)を競う部門
- アイデア提案部門: オープンデータによる課題解決の提案を競う部門
今回自分はサービス開発部門にエントリーして参加しました。
発表テーマとしては自分自身で考えたテーマで挑戦してもよいですし、ハッカソン開始前に東京都が各部局から行政課題を集めており、それをテーマとしてハッカソンに参加するというやり方でも可能でした。実際に各部局から集めた行政課題は下記URLから確認可能です。
https://odhackathon.metro.tokyo.lg.jp/issues/
スケジュール
- First Stage(8/29~31)
- Final Stage進出をかけてプレゼン発表を行います。今回のハッカソンでは約100チーム、延べ約900人の人が参加したとのことでした。
- Final Stage(10/26)
- First Stageの審査で通過した24チームと「最優秀賞」、「行政課題解決賞」などの賞をかけて競い合います。
- Demo Day(3/15)
- Final Stage通過者の中で実際に動く物ができたチームが発表します。
発表内容
実際に発表した内容をご紹介します。今回は東京都都市整備局が提供した「オープンデータ化された文書等の検索性向上」という行政課題に挑戦しました。
課題
大きく下記3点あります。
- 課題1:必要な情報を得るために数百ページあるPDFを1つずつ確認するしかない。そのため、PDFから必要な箇所を3行程度ハイライトで表示できる機能が欲しい。
- 課題2:ドキュメントが多いためカテゴリ分けして検索がしたい
- 課題3:データによってはPDFが分割公開されているため探しづらい
これらの課題を解決するために行ったアプローチを次にご説明します。
画面イメージ
web上からPDFの検索ができる検索システムを作成しました。上記課題3点についてすべて対応できるソリューションを作成したと考えています。
- 課題1:必要な情報を得るために数百ページあるPDFを1つずつ確認するしかない。そのため、PDFから必要な箇所を3行程度ハイライトで表示できる機能が欲しい。
- 解決策:検索でヒットした該当文章を中心に3行プレビュー表示しています。さらに該当箇所を黄色くマーカーでハイライト表示しています。
- 課題2:ドキュメントが多いためカテゴリ分けして検索がしたい
- 解決策:カテゴリで絞り込みを行えるような仕組みで対応しています。
- 課題3:データによってはPDFが分割公開されているため探しづらい
- 解決策:複数のPDFを同じキーワードでまとめて検索できるようなUIにして対応しました。
その他にも下記工夫を行っております。
- PDF簡易プレビュー機能
- 3行表示以外にも検索に該当した実際のPDFを1ページ表示する機能になります。数百ページあるPDFでも該当の1ページのみ表示するため、とても高速に表示することが可能です。さらに該当PDFの中でも検索キーワードの部分を黄色くマーカーでハイライト表示をしています。
- 完全一致とあいまい検索の切り替え機能
- 完全一致での検索とあいまい検索、それぞれを選択できるように切り替え可能なUIを実装しました。
システム構成
実際のシステム構成図です。フロントエンドにはReact、バックエンドにはPDFのプレビュー表示用にFastAPI、それ以外のAPIをNestJSで行っております。
事前準備としてGCS上にドキュメントをアップロードしておきVertex AI Searchのsearch機能に学習させます。この学習させたドキュメントは「あいまい検索」の時に利用します。また、完全一致検索でもドキュメントを探せるようにBigQuery上にドキュメントからテキストを抽出して保存します。ドキュメントからテキストを抽出するやり方としてはDocument AIを利用して抽出しました。
このようにあいまい検索ではAgent Builderから検索を行い、完全一致検索ではBigQueryからデータを取得するような仕組みにしています。
また、PDF内から該当キーワードを黄色くマーカーでハイライト表示する機能ではFastAPI側で行っており、Pythonのライブラリとして「PyMuPDF」を利用しています。ハイライト表示したPDFをGCS上に再度保存し、署名付きURLを発行してフロントエンド側に返却します。フロントエンド側では発行された署名付きURLを元にハイライト表示されたPDFを表示します。
まとめ
東京都が主催する「都知事杯オープンデータ・ハッカソン」に参加してきた経験をご紹介しました。このハッカソンは、東京都が公開しているオープンデータを活用して行政課題を解決するためのソリューションを開発する場で、私が参加したサービス開発部門では「オープンデータ化された文書の検索性向上」をテーマに取り組みました。
また、他のチームには独自に課題を定義しているチームもあり、その発表を見ていると「子供の自殺者数をどうしたら減らせるか」や「足が不自由な方が駅構内でバリアフリーの道をどうしたら簡単に見つけられるか」など、実際に直面している社会課題をテーマにしていることが分かりました。これらの課題について考える機会が普段少ないため、新たな視点を得ることができ、とても勉強になりました。また、入賞チームの発表はストーリーが非常に分かりやすく、どうすればわかりやすい伝え方ができるのかについても学ぶことが多かったです。
何か解決したい東京都の行政課題があれば、来年度も是非挑戦してみてはいかがでしょうか。腕試しとしても有意義な経験が得られること間違いありません。
Google Cloud、Google Workspace に関するご相談はXIMIXへ!
Google Cloud、Google Workspaceに関する お問い合わせはこちら
XIMIX(サイミクス)は商標登録出願中です
- カテゴリ:
- クラウド
- キーワード:
- Google Cloud