日本全体のデータが集まっていて毎日更新されるのが楽しい法人オープンデータ。
創廃業ダッシュボード」から広がるいろんな使い方、引き続きアイデア募集です!

今回はgBizINFOREST APIの方を使って調達オープンデータを取得してみました。

調達オープンデータ 10億円以上
過去データは2020年日付以前ではヒットしない様子。いくつかデータを取得し、調達金額10億円以上でまとめてみました。金額が大きい順にソートしたところ、なんとトップは、9京円!?

2019-04-01T00:00:00+09:00,平成31年度技術協力活用型・新興国市場開拓事業(インフラ海外展開支援),"90,000,000,167,598,800円",経済産業省

さすがに間違いだと思うので、早めな修正、希望です。(単純に自動処理すると、円グラフのほとんどがこの9京円案件になってしまいますw)

話題になった769億円の持続化給付金事務事業の他、護衛艦が497億円、潜水艦が433億円、貨幣の製造に関する事務一式166億円など、いろいろとおもしろデータが並びます。


調達オープンデータ 0円?
同じく、おかしなデータがありそうです。金額未記載または、amountが0と入ったデータ。

調達オープンデータ、政府が何をいくらでどこから買っているか、地方公共団体や、民間企業が予算を考える歳、購入する際の参考になりそうです。 政府の支出は、みんなの支出。賢く活用したいですね!

APIトークンは申請フォーム記載ですぐに発行、JSONが返るREST APIの仕様はswaggerで確認できます。

いろいろ楽しく活用しましょう!

先日作った「創廃業ダッシュボード」が、鯖江商工会議所の人と、産業担当の行政の人に刺さった様子。リクエストにお応えして、市町別表示に対応しました。

創廃業ダッシュボード - 福井県
9/13更新分では、福井県は創業も廃業も0だったので、上記画像は9/6のもの。


創廃業ダッシュボード - 東京都
創業162社-廃業64社 = +98社、となった9/13日の東京都の様子。

平日は毎日16時に更新される法務局の法人オープンデータ差分。 本日、スクレイピングがうまくいかないことが分かったので、fileNoの推測による自動更新としてGitHub Actionsで設定(downloadDiffLatest.js on GitHub)。

明日はうまくいくはず!

データ活用に欠かせないのはつなぐこと。複数のデータを比較し、組み合わせて、新たな知見を生まれます。

その足かせとなるのはデータ形式の不一致。数と一言で言っても半角全角、カンマ区切りの有無、小数を含むかどうか、万など漢数字表記の有無など、個性豊かな様々なデータ達・・・。

もちろんコンピューターなので、様々な表記方法を想定して対応することは可能ですが、網羅性を保証できず、膨大なデータ量に対する処理では何十倍ものコストとして跳ね返ります。 同じ手間ならデータを作る際にかけるのが効率的です。

どうデータ形式の定義するか?ベストはリソース記述フレームワーク(RDF)の語彙を使うことでしょう。 Googleの検索エンジン他で使用されるスキーマオルグ(schema.org)や、Facebookが提唱し一般化したオープングラフプロトコル(OGP)、日本政府が提唱する共通語彙基盤もその一種です。

語彙でつながるオープンデータを、LOD(エルオーディー/Linked Open Data)、5つ星オープンデータと呼びます。

5つ星オープンデータ/LOD 3基準

1. リソースとデータ項目(語彙)をURLで表現する
IDではなくURL。アクセス可能なURLを使用する。
自分のリソースのURLは、自分で編集可能なドメインを用いる。

2. 共通の語彙の利用
語彙は正しく、できるだけ既存の語彙を使う。(schma.org/url)

3. 外部リンク
できるだけ外部リソースへのリンクを含める。(SNSやWikidataへのリンク)

ただ、まだまだRDFへの理解が浸透していないため、まだちゃんとしたデータは多くはありません。よりシンプルに作りやすくするためのツール整備を進めました。


NQuads.js
語彙を含んだLODのJSON表現、JSON-LDを扱うライブラリjsonld-esを、Node.js用のライブラリjsonld.jsから移植。 依存ライブラリを次々と全部ESモジュール化して、GitHub Pagesとして公開。 require表記をgithub.ioを使ったURL importに書き換えたので、全ソース、ブラウザでも使用可能になりました。ESモジュールはDenoモジュールとしても使えるので、Denoでサクサク活用可能です!

NQuads.jsは、LODのテキスト表現「N-Quads」をJSONLD.jsを使って作成。 import { JSONLD } from "https://taisukef.github.io/jsonld-es/JSONLD.js"; class NQuads { static async parse(s) { return JSONLD.fromRDF(s, { format: "application/n-quads" }); } static async stringify(json) { return JSONLD.toRDF(json, { format: "application/n-quads" }); } } export { NQuads }; コアはこれだけ。JSONLDをimportして使うだけのライブラリなのでとってもシンプル!
ちゃんとしたオープンデータを増やしましょう!


データ活用はじめのいっぽ、コンピューターとプログラミングへの入り口、IchigoJamのファームウェアの不具合修正
- ichigojam-1.4b29.zip
OUT11,0が効かない不具合修正(OUT11、IN4を出力に切り替えて使う場合の番号です)


福井県独自の緊急事態宣言最終日、ランチは通常営業だった鯖江駅前商店会」でタコライス!

1日の創業数を都道府県別に表示するアプリに、GitHub Actionsを使った自動更新を設定。廃業データも加え、名前も「新型コロナウイルス対策ダッシュボード」と合わせ、「創廃業ダッシュボード」と改めました。

創廃業ダッシュボードsrc on GitHub
創業数が廃業数より大きいと赤背景、廃業の方が多いと青グレーな背景としました。クリックかタップすると、該当する会社名が表示されます。


gBizINFO/.github/workflows at main · code4fukui/gBizINFO
GitHub Actionsは、GitHubのサーバー上で指定した処理をやってくれます。パブリックリポジトリであれば、利用は無料。「.github/workflows」というフォルダを作成し、中にアクション毎にYML(ヤムル)ファイルを置くだけです。

Deno標準のコーディング規約に沿っているかチェックする「deno.yml」と、毎日自動的に創業廃業それぞれのデータを、CSVファイルにして、リポジトリにプッシュする「scheduled-fetch.yml」を置きました。

name: Scheduled fetch on: schedule: # 毎日17:44分に実行 (JST=UTC+9) - cron: '44 8 * * *' jobs: build: name: build runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: denoland/setup-deno@v1 with: deno-version: v1.x - name: fetch run: deno run -A downloadDiff.js - name: commit and push run: | git config --global user.email "workflow@example.com" git config --global user.name "workflow user" git add . git commit -m 'update data' && git push ${REPO} HEAD:${{github.event.pull_request.head.ref}} || true git push

使いたい環境を記述して、やってほしいことをstepsで記述するだけ、簡単ですね!
GitHub Actionsのワークフロー構文 - GitHub Docs
昨日の作品、福井高専ニュースも、定期更新の設定してみました。


国税庁法人番号公表サイト
データ元はこちら、差分のCSVダウンロードを使っています。gBizINFOのSPARQL APIを使った実装と、作りやすさやパフォーマンスを比べてみたいところです。


創業ダッシュボードsrc on GitHub
都道府県別新規創業会社数から名前をシンプルに変更し、日付で選べるようにしました。(差分公開されていた7/14以降)


廃業ダッシュボードsrc on GitHub
都道府県別に廃業のみを見たい方はこちらをどうぞ。

各地でインターンしている高専生。リアルな現場での学び、楽しいですね!

「コネクトフリー社で活躍する福井高専インターン生」

ものづくりへの想いがぐっと高まった、その勢いで、普段の学生生活自体も現場と見て、自分たち、教員たちの課題を解決してみるいい機会!


福井高専ニュースsrc on GitHub
古巣、福井高専のニュースを掲載している全件「スクレイピング / scraping」によって取得して、CSVオープンデータとして加工するプログラム。 シンプルなコードはこの通り。ぜひみなさん、自分の学校でチャレンジしてみましょう! import { HTMLParser } from "https://js.sabae.cc/HTMLParser.js"; import { CSV } from "https://js.sabae.cc/CSV.js"; const url = "https://www.fukui-nct.ac.jp/news/"; const html = await (await fetch(url)).text(); const dom = HTMLParser.parse(html); const lis = dom.querySelectorAll(".news-list li"); const data = lis.map(li => { return { url: li.querySelector("a")?.attributes.href, date: li.querySelector(".post-date").text, category: li.querySelector(".post-cate").text, title: li.querySelector(".post-title").text, } }); await Deno.writeTextFile("fnct-news.csv", CSV.stringify(data));

HTMLParserで、HTMLをパース(字句解析)して、欲しい項目を名前付きデータの配列に変換、CSVとして出力しています。(Denoを入れて動かしてみましょう!)


デジタル庁ニュース
動き激しい、デジタル庁。「第1回デジタル社会推進会議幹事会 |デジタル庁」にて、多数の興味深い資料が公開されています。 日本全体のデジタル化、身近な学校が取り残されて損するのは学生自身。動こう、創ろう!

内閣官房IT室が終了し、新たにスタートしたデジタル庁コピーライトポリシー(CC BY互換)に基づき、組織、人事、幹部名簿をCSVオープンデータ化しました。
code4fukui/digital-agency-jp - デジタル庁オープンデータ
ひとまず Code for FUKUIのGitHubのプロジェクトとしてスタート、誰でも貢献可能です。

デジタル庁」のミッションは「誰一人取り残さない、人に優しいデジタル化を。

誰にとっても使いやすいアプリはありません。
誰一人取り残さないために大事なのはデータ。
データがあれば、それを使ってあなたに、または、あなたの大事な誰かにぴったりなアプリを構築可能です。

2020年から小学校からのプログラミングが始まり、誰もが開発者になれる現代になりました。
きれいなデータさえあれば、アプリづくりは驚くほど簡単です!


幹部等人事が決定しました |デジタル庁
デジタル庁の気になる人事が公表されましたが、謎が多いPDF文書です。

新、旧は役職を表していそうですが、役職の下の「【免】」などが謎です。どうやら、旧に記載してある役職にもともと対応していたものが崩れてしまったようです。 ずらずらと記載された役職名の分割はなんとかできそうでしたが、カッコ書きがどこに対応しているのかが曖昧になるため断念しました。

また氏名に記載されている漢字がすべて1文字ずつ空白が入っていたので、なんとなく姓名を分けました。たぶん合っていると思いますが保証がありません。ふりがなや、英語表記と合わせた正しいデータがほしいところです。


デジタル庁人事.csv
ひとまずできる範囲でCSVオープンデータ化しました。(PDFからコピペでテキスト化、人力整形し、JavaScriptのプログラムでCSV化しました src on GitHub


デジタル庁の組織体制.csv
まずは図のみ公開された組織ですが、これでは目の見えない人が把握することができません。ひとまず階層構造をデータ化。組織図をきれいに表示するアプリを作るのも楽しそう。 アプリであればインタラクティブに概要を掴むも、詳細を掴むも簡単です。


デジタル庁幹部名簿.csv
こちらはふりがなも記載あった幹部名簿データ。肩書は組織のデータとつながるように表記方法をあわせました。 人名は同姓同名もありうるので、デジタル庁から率先してマイナンバー活用してはいかがでしょう?


出典.csv
データ出典をまとめたCSVオープンデータ。以上の4つをひとまず3つ星オープンデータとして作りました。次のステップは語彙を作って、5つ星オープンデータ化し、英語表記を加えて日本語圏ではない人も取り残さない形を目指したいところです。

オープンデータは作成者への連絡なしに、商用・非商用問わず自由に活用できます。
本プロジェクトへの貢献、ご意見も歓迎です。
code4fukui/digital-agency-jp
創ろう、誰一人取り残さない国!

学生x防犯・防災をテーマとしたjigインターン2021夏シーズン2の最終日、いよいよドキドキの成果発表会。シーズン1同様、4チームの発表と作品を1日ずつレビューしていきます。
シーズン2のみんな、おつかれさま!またねっ


トップバッター、シーズン2のCチーム、まつやま、りん、るーい


いざという時に重要な避難所ですが、普段はほとんど意識されません。そこで、中高生が楽しく避難所について学べるアプリ「鯖江スタンプラリー 散歩で覚える避難地図」


鯖江避難地図 src on GitHub
地図上に表示される赤いピンは鯖江市内の避難所です。現在位置をアイコンドラッグで仮に設定できるテストモードが便利な赤い「仮」アイコンがいい! 青い「駅」アイコンも目印としてわかりやすい。


スタンプギャラリーページでは自分で集めたスタンプが表示されます。 今回のスタンプとして活用されたのは、めがね会館もある鯖江市新横江地区の「新横江ふるさとカルタ


鯖江避難地図 - LeafletGSIバージョンsrc on GitHub
leaflet.mjs を使ってもっとシンプルに地図が使える LeafletGSI.js を用意して、leaflet版を作ってみました。写真のアップロードはできませんが、擬似的にスタンプはもらえるようにも改造してあります。

Googleマップは無料分付きの有料API、使用するにはAPIキーの登録が必要ですが、地理院地図+オープンソースな地図API、Leafletの組み合わせなら手軽に地図表示ができます。

避難所に関する写真をオープンデータとして集める仕組みとつなげて、実際歩いて試せるようにしてみたいですね。 避難所データはリポジトリ内にCSVファイルとしてありますが、各地のオープンデータから直接取得すると全国で使えるものにも改造できます。 オープンソース、やってみたい人は、誰でも好きな時にチャレンジできます。(src on GitHub)


ここ北陸、サイバーバレージャパンの最終金曜日はサイバーフライデー、月に一度の自分で作ったものの発表の場! ワクワクとドキドキの場、ご活用くださいっ(会場、鯖江商工会議所隣のコネクトフリー鯖江開発センター)


展示したり発表したり、いろんな意見をもらって改善したくなる楽しいループ!

Let's create!

コンピューターの世界の2進法がややこしい!?
でも、我々はもっとややこしい、いろんな進法が入り乱れる日時の世界に生きてます。

秒は10進法ですが、60進法で分、60進法で時間、24進法で日、7進法で週、28〜31の可変進法で月、12進法で年、100進法で世紀。 更に、地球は丸いので場所によって時間が異なるタイムゾーンもあります。

これらを扱うクラス、DateTime.jsを作成。以前作ったDay.jsに、時間を扱うTime.js、タイムゾーンを扱うTimeZone.jsを加えました。
day-es DateTime.js / Day.js / Time.js / TimeZone.js src on gitHub
import { DateTime } from "https://js.sabae.cc/DateTime.js"; const dt = new DateTime(); console.log("datetime: " + dt); console.log("day: " + dt.day); console.log("time: " + dt.time); console.log("timezone: " + dt.timezone); このようにさらっと使えます。


現在日時表示タグ
こちらDateTime.jsを使ったカスタムタグ datetime-now を実装したサンプルです。自分だけのタグづくり入門としてもどうぞ! import { DateTime } from "https://js.sabae.cc/DateTime.js"; class DateTimeNow extends HTMLElement { constructor() { super(); } connectedCallback() { const show = () => { this.dt = new DateTime(Math.floor(new DateTime().getTime() / 1000) * 1000); this.textContent = this.dt.toString().replace("T", " "); }; show(); this.t = setInterval(show, 1000); } disconnectedCallback() { clearInterval(this.t); } get value() { return this.dt; } } customElements.define("datetime-now", DateTimeNow);


毎朝のラジオ体操が人気!毎日のリズム、良いですよ!

jigインターン2021夏、シーズン2、いよいよ大詰め!
⭐jigintern diary⭐

学生の夏休みといえばインターン。普段はできない経験でレベル上げよう!

オープンデータを主に使う側のjigインターンですが、越前市役所では福井高専専攻科生がオープンデータを整備するインターン中。 使いやすいオープンデータを学び、作っています。実際手を動かす現場だからこそ分かること、貴重ですね!


csvmelt - 横持ちのCSVファイルを縦持ちCSVに変換しますsrc on GitHub
表形式が基本のオープンデータには「横持ち」と「縦持ち」の2種類あります(参考、データ変換(横持ち⇔縦持ち)について | WingArc TECH BLOG)。 横に長く項目が多量にある「横持ち」データを、プログラムで活用するには項目名を少なく集計しやすい「縦持ち」に変換するツール「csvmelt」を作ってみました。


CSVファイルをドロップして、縦持ちとして残したい項目を複数選択して、変換ボタン!
(削除したい項目、縦持ちに変換する要素と値を表す項目名も設定可能)

プログラムに組み込みたい方は、ArrayUtil#meltを使った、csvmeltのinteractiveMeltを参考にどうぞ! 作ったライブラリの品質を上げる要はテストコード。exportする関数を別ファイルに切り出して、deno test でちゃんと動くことを確認するコードと共に作るのが近道です。 (参考、ArrayUtilのテストコード、ArrayUtil.test.js「テスト駆動開発(TDD)で安心、JavaScriptプログラミング!Denoでwebアプリ開発編」


Hana道場では、PCNアフリカでict4eの原さんと西アフリカ、セネガル、ベナンからのインターン生がIchigoJamとサイコロ基板を使った講習の体験中。


コンピューターの楽しさ、アフリカのこどもたちにも伝えよう!PCNこどもプロコンでは、世界中のこども達からの作品、お待ちしてます!

jigインターン2021夏、シーズン2も折り返し!データを活用した作品づくり、オープンデータを作るのもオススメ!
⭐jigintern diary⭐

福井県がオープンデータ化している河川の水位データの整理後、早速、@furandon_pigさんより、いい感じな改善案いただきました。(furandon-pig/csv-map.js.diff)

アイコンではなく、その場で推移がグラフが見えると便利そう!
csv-mapタグのCSVMapクラスを拡張可能にリファクタリングし、直近5点のグラフ表示に対応してみました。
福井県河川水位計マップ
CSVMapのマーカー生成部をオーバーライドして、グラフ描画している例です(src on GitHub)。 また、見たい場所をURLで記憶、共有可能にする機能も追加。Geo3x3とレベルを使った位置保存、便利!

拡張タグの継承時、customElements.defineで登録しないと、クラス生成時に「TypeError: Illegal constructor」となるので注意!


水防災オープンデータ提供サービス事業 - 国土交通省水管理・国土保全局
福井県以外にも対応するのに便利そうな、@imabarizineさんに教えてもらったオープンデータ!・・・と思いきや、1県あたり月額1500円の有償提供

オープンデータとは、二次利用が可能な利用ルールで公開されたデータのこと。有償データ提供サービスのデータはオープンデータとは言えません。

水防災オープンデータのオープンデータ化、望みます!

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / RSS