福野泰介の一日一創 - create every day

jigインターン2019、ついに最終成果発表会の日。3チーム、1作品ずつマッシュアップしながら紹介します!
まずは鯖江市特産野菜「吉川ナス」を使ったレシピのオープンデータ化が決まった「旬レシピ」から。

チーム「やばいわよ!!」
たかめろん(長野高専)、ふっけー(北九州高専)、えふ(長岡高専)、Dry(明石高専)の4名チーム!


ターゲットは学生や独身の料理初心者。外食ばかりは栄養的にも金額的にも難があるけど、特に食べたいものがないけど、おいしく安く栄養あるものを食べたい人。


そこで「旬レシピ」
スーパーに入ってスマホを取り出す開くだけのシンプル操作。その時点、その場所での旬を使った安くて簡単なレシピを写真で紹介!


「旬」マークがつきの買い物リストにもなっている食材リスト。自然に自然が身につきそう。
ついでに家の在庫量とも連動させるとより便利かも。


使用したデータとAPI。オープンデータ化の必要性は作るほどに見えてくる。まずは地元を自力でオープンデータ化しよう!


今回からの初企画、展示タイム。実際に作った作品を実際に触りながら(壊しながら?)、より深い質疑応答タイム。

旬レシピは、GitHubでオープンソース!(jigintern/Season-Foods-Navi at develop)
早速気になる、Node.js でスクレイピングして作ったというデータをチェック!3MBのJSONがありました。
スクレイピングしたソースは、こちら"GetFoodsNutrient.js"、データが大きくなりすぎないように栄養素を抜粋したとのこと。

完全食COMPとの比較もしたいので、ビタミンAの分類や、表記方法の違いを調整して栄養素完全版へとリミックス! 「GetFoodsNutrientJSON.js
Node.js をいれ、npm install cheerio-httpcli でスクレイピング用のライブラリをセットアップして、node GetFoodsNutrientJSON.js でテスト実行。

$ node GetFoodsNutrientJSON.js { food: '乳類/(液状乳類)/普通牛乳', info: [ { name: '可食部', value: '100', unit: 'g' }, { name: 'エネルギー', value: '67', unit: 'kcal' }, { name: 'たんぱく質', value: '3.3', unit: 'g' }, { name: '脂質', value: '3.8', unit: 'g' }, { name: '炭水化物', value: '4.8', unit: 'g' }, { name: 'ナトリウム', value: '41', unit: 'mg' }, { name: 'カリウム', value: '150', unit: 'mg' }, { name: 'カルシウム', value: '110', unit: 'mg' }, { name: 'マグネシウム', value: '10', unit: 'mg' }, { name: 'リン', value: '93', unit: 'mg' }, { name: '鉄', value: '0', unit: 'mg' }, { name: '亜鉛', value: '0.4', unit: 'mg' }, { name: '銅', value: '0.01', unit: 'mg' }, { name: 'マンガン', value: '', unit: 'mg' }, { name: 'ヨウ素', value: '16', unit: 'μg' }, { name: 'セレン', value: '3', unit: 'μg' }, { name: 'クロム', value: '0', unit: 'μg' }, { name: 'モリブデン', value: '4', unit: 'μg' }, { name: 'ビタミンA', value: '38', unit: 'μg' }, { name: 'ビタミンD', value: '0.3', unit: 'μg' }, { name: 'ビタミンE', value: '0.1', unit: 'mg' }, { name: 'ビタミンK', value: '2', unit: 'μg' }, { name: 'ビタミンB1', value: '0.04', unit: 'mg' }, { name: 'ビタミンB2', value: '0.15', unit: 'mg' }, { name: 'ナイアシン', value: '0.9', unit: 'mg' }, { name: 'ビタミンB6', value: '0.03', unit: 'mg' }, { name: 'ビタミンB12', value: '0.3', unit: 'μg' }, { name: '葉酸', value: '5', unit: 'μg' }, { name: 'パントテン酸', value: '0.55', unit: 'mg' }, { name: 'ビオチン', value: '1.8', unit: 'μg' }, { name: 'ビタミンC', value: '1', unit: 'mg' }, { name: '飽和脂肪酸', value: '2.33', unit: 'g' }, { name: '多価不飽和脂肪酸', value: '0.12', unit: 'g' }, { name: 'コレステロール', value: '12', unit: 'mg' }, { name: '糖質', value: '4.7', unit: 'g' }, { name: '食物繊維', value: '', unit: 'g' }, { name: '食塩相当量', value: '0.1', unit: 'g' }, { name: 'アルコール', value: '', unit: 'g ' } ] }

牛乳100gの栄養素が取得できました!(乳類/(液状乳類)/普通牛乳 - 一般成分-無機質-ビタミン類-アミノ酸-脂肪酸-炭水化物-有機酸等 - 文部科学省)


人間に必要な栄養素 オープンデータアプリIchigoJam研修@大塚製薬 の記念に作った、ゆるゆる動く栄養素アプリ。
人間に必要な栄養素 CSVオープンデータ」もどうぞ!

そういえば、吉川ナスの栄養素のどのように測定したらいいのだろう?
福井高専、物質工学科に相談してみよう!

links
- 吉川ナス – めがねのまちさばえ 鯖江市

はんだづけして、自分のパソコンづくりからチャレンジするプログラミング&こどもシビックテック!
初めての「はんだづけ」資料をバージョンアップ。

はんだづけ、はじめのいっぽ(PDF)」(イラレaiファイル
やけどに注意と、はんだごてより怖い、ニッパーの注意を強調。はんだの盛り具合、動画へのQRコードを追加。
CC BYのオープンデータなので、どこかに出典を書いていただければ、自由に改変、再配布、販売用途にも活用方法は自由です。

ひとまず手頃に集められる機材
- はんだごて 30W 500円 - DAISO
- こて台 300円 - DAISO (または、灰皿や陶器のお皿などはんだごてを置けるもの)
- ニッパー 100円 - DAISO
- 鉛入りはんだ 0.8mm または 1mm 100円 - DAISO (1コで十分組み立てできます)
※もし、鉛フリーはんだを使う場合、はんだごては温度調整機能付きのものをご用意ください。


今年は2日間、2組の親子に体験してもらう、こどもシビックテック。Day1に続いてDay2の講師は、地元PCN品川代表、清水さん!


まずは、はんだづけ!


LED1、ついた!


ゲームづくり、楽しんでくれました!改造したら、それは、自分だけのゲーム!


センサーデバイスをつくった!手であたためると赤くなる。センサーを持って、まちあるき!


感想をそれぞれまとめます。


発表!


電子工作が楽しくなったら「電子工作マガジン&ベーマガ」をどうぞ!
PCN五反田、電波新聞社の大橋さん、登場!


ご参加、ありがとうございました!


会場、豊葉の杜(ほうようのもり)学園、ステキな学校!


PCN五反田PCN品川PCN鯖江

links
- 親子でチャレンジ、まちをよりよくプログラミング in 品川区! データ収集活用入門、温度センサーxフルカラーLEDで簡易快適度チェッカー Day1

夏休み、品川区でオープンデータ関連こども向けイベント with Code for Tokyo & PCN品川

品川区の小中学生にパソコンづくりとプログラミング、電子工作によるデータ収集とまちあるきを伝授!
10時〜17時、長時間ワークショップ後にもこの笑顔!


会場、品川区立 豊葉の杜学園!いい天気!


はじまりました、おやこでチャレンジ、まちをプログラミングでよくしよう with IchigoJam in 品川区


まずは今日使うパソコンをはんだづけして組み立てるところからスタート!
小学2年生、初めてのはんだづけにチャレンジ!


ニッパーの使い方もバッチリ! (指を添えて切れ端が飛ばさないように注意)


カラフルパーツで自分だけのパソコンに!


カラーカスタマイズで姉妹IchigoJamでも間違えない!


動いた!


みるみる慣れるキーボード。


使うセンサー集めで、電子部品パーツ屋さん気分!


自分で作ったセンサーデバイスを持って、データ収集、まちあるきスタート!


まちあるき後はまとめの時間。
暗いところと明るいところ、人の感覚とセンサーによる値の違いがおもしろかったとのこと!
IchigoJamの絵、ありがとう!

こちら、触れなかったおみやげの温度センサーMCP9700Aの使い方例を紹介!

温度センサーもマイコン内蔵LEDも直接挿して使えちゃいます。


光の三原色で遊ぶ、マイコン内蔵フルカラーLED、PL9823の使い方 for IchigoJam 1.4β
IchigoJamのバージョン番号に注意! (書き換え方法PCN秋葉原でも書き換えできます!)
ichigojam-1.4.0b07.zip


快適温度で調整しておくと、暑いときには赤、涼しいときに青に変わるデバイスのプログラム。


画面に表示される値を、20行にいれるとその値が基準となって、高いときには赤く、低いときには青くなります。


上記加筆したスライド「おやこでチャレンジ まちをプログラミングでよくしよう with IchigoJam (PDF)」(Keynote, PowerPoint)
(はんだづけ、エルチカ、エルチカロボ、かわくだりゲーム、改造方法、光センサー、温度センサー、マイコン内蔵フルカラーLED)
自由に活用可能なオープンデータ、復習にもどうぞ!


ご参加、ありがとうございました!

links
- はんだづけ、はじめのいっぽ - まちをよくするプログランミング in 品川区 Day2! (2019)
- こどもも大人もコードフォーじぶんのまち! 品川区はんだづけ&センサー入門、練馬区IoT資料 - with PCN (2018)
- 地図アプリでふりかえる、センサーとまちあるき!まちをよくするアイデアとIchigoJamプログラミングつぎのいっぽ (2018年)

自治体オープンデータの意義は、自治体の仕事を減らし、民間企業による豊かさの創出!


オープンイベントさいたま
埼玉県オープンデータ」で唯一の4つ星オープンデータ、RDFで提供されていた広報情報オープンデータをjig.jp、この夏のインターンに参加する高専生による作品「福井県のイベント (src on GitHub)」を埼玉化。 自治体による広報の仕事を減らせるかも。

RDFにもターゲット情報が入っていれば、若者や、高齢者など、対象別に見やすいアプリづくりもできるので、一層伝わりやすくなります。 Vue.jsを使ったモダンで見やすいアプリづくりは、地域の高専生や、JavaScriptが使える小中学生にとって良いネタにもなります。


オープンデータを庁内で広めるオープンデータリーダーを育成する総務省企画「オープンデータリーダ育成研修
自治体の中でやっている繰り返される仕事、オープンデータで効率化できませんか?
イノベーションのはじめのいっぽは、当たり前に疑問を持つこと。
今までを変える意識と行動力を持つ人、それがリーダーです。
教材はオープンデータ、今すぐ、行動を!


オープンデータによる連携を活かす、11万件もの公園データを提供する「PARKFUL
公園の設備を提供する会社、株式会社コトブキとの連携がおもしろい!


東さんによるオープンデータ講義。震災での反省から始まったオープンデータ。避難所データがオープンデータではないと、活用するために問い合わせが必要。実際に30箇所問い合わせて、OKの返事はたった9。 事実、災害時にサーバーがダウンしていて避難所データにすらたどり着けない事態が未だに発生しています。


ネット時代、データを広く共有するコストが劇的に下がりました。まだまだ市民意識が追いついていませんが、まずはデータがあれば、楽しく可視化するアプリが生まれ、広まります。 アプリを誕生させるためには、開発者にとって優しく横展開が可能でうれしい「5つ星オープンデータ」が必須!


鯖江市のオープンデータ産みの親、牧田さんに会ったことがきっかっけで、自分でなんでもやっちゃうことにしたという、埼玉県深谷市の斉藤さん! 「ふかやMap」から様々な位置情報付きデータをオープンデータとしてダウンロードできます。


odp - オープンデータプラットフォーム
5つ星オープンデータはじめのいっぽに、避難所データをExcelでまとめてアップロードするだけ。無料です。

さまざまな業務課題や、社会を豊かにする取り組みへのチャレンジに向けて、まずは最小限の手間で、5つ星オープンデータ化と、データをアップした瞬間に動くアプリをご体験を!

5つ星オープンデータ対応避難所ナビアプリ「ヒナンパス

600万円、これは世界一高い参議院選挙立候補に必要な供託金(市議選は30万円)。
第25回参議院選挙の投票日は7/21。 前回投票日の2016年7月10日の投票所と人の流れをTellusで見てみました。


Tellus ver 1.1 によって追加された、位置情報データ「Profile Passport」を使って、投票日7/10の10時時点(日本時間はUTC+9時間)を品川区の5つ星オープンデータ、投票所と組み合わせて表示した図。 もう一歩分解能がほしいところですが、投票所への人の流れがわかるかも?通常の日曜日との比較なども可能です。


鯖江市の選挙ポスター掲示場、オープンデータと宇宙データ、だいち(ALOS)のセンサーAVRIR-2による植物活性度を重ねたもの。鯖江市の東側、自然豊かな場所にあることが一目瞭然。


Tellusを使った分析は、Jupyter Notebookや、後継サービスJupyter Lab上のPythonで行います。
5つ星オープンデータを集約する opendata.cc のAPI、SPARQLを呼び出し、GeoJSONにしてpostするとTellus上の「取り込みマップ」として表示できます。

API_TOKEN = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" # Tellus マイページ、APIアクセス設定で生成したトークン import json, requests, urllib.parse URL = "https://api.tellusxdp.com/v1/geojson-files" def get(id = ""): return requests.get(URL + "/" + id , headers = { "Authorization": "Bearer " + API_TOKEN }).json() def post(data): headers = { "Authorization": "Bearer " + API_TOKEN, "Content-Type": "application/json" } return requests.post(URL, headers = headers, json = data).json() def delete(id): return requests.delete(URL + "/" + id, headers = { "Authorization": "Bearer " + API_TOKEN }).json() SPARQL_ENDPOINT = "https://sparql.opendata.cc/data/sparql?output=json&query=" def sparql(query): url = SPARQL_ENDPOINT + urllib.parse.quote(query) return requests.get(url).json() def toGeoJSON(res): fs = [] for d in res["results"]["bindings"]: f = { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ d["lng"]["value"], d["lat"]["value"] ] } } if "name" in d: f["properties"] = { "name": d["name"]["value"] } fs.append(f) return { "type": "FeatureCollection", "features": fs } def addLayer(rdftype, layername): gj = toGeoJSON(sparql(""" select ?uri ?name ?lat ?lng { ?uri <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <""" + rdftype + """>. optional { ?uri <http://www.w3.org/2000/01/rdf-schema#label> ?name. } ?uri <http://www.w3.org/2003/01/geo/wgs84_pos#lat> ?lat. ?uri <http://www.w3.org/2003/01/geo/wgs84_pos#long> ?lng. } """)) #print(gj) post({ "originalName": layername, "transparency": 1, "windowNumber": 1, "data": gj }) addLayer("http://odp.jig.jp/odp/1.0#Polls", "odp 投票所") addLayer("http://odp.jig.jp/odp/1.0#PosterPlace", "odp 選挙ポスター掲示場") print("ok")

rdftypeに設定するデータ種別と対応地区は「5つ星オープンデータ対応一覧表」をご参照ください。


Tellus x オープンデータ、いろいろ遊んでみましょう!

A project started to translate the documents of IchigoJam for English speakers from a member of IchigoJam-FAN.
I added descriptions in broken English to IchigoJam doc opendata, and updated apps.

"IchigoJam BASIC command list" also for printings

I'd be glad if you sent me a comment in cool translated words!
"IchigoJam doc repository on GitHub"

5つ星オープンデータとして規格化しておくと、自分で使うときにも便利!

大人には便利なアプリですが、スマホを持っていない小学生には紙、大事。
アプリと同じオープンデータを使って紙出力版を生成するwebアプリを作りました。

IchigoJam BASIC コマンド一覧 (印刷用)PDFダウンロードはこちら
やさしい順に並んでいますが、ABC順カテゴリ順としても表示可能。お好みでどぞ!


IchigoJam BASIC コマンド一覧アプリ
カテゴリデータ、優先順位データなどを追記したので、アプリも合わせてバージョンアップ。機能ごとの簡単にチェックできるようになりました。 sabae.cc語彙も少し成長。

オープンデータはGitHub上にあります「IchigoJam/doc: documents of IchigoJam
issuesを使ったコメント、プルリクなど、大歓迎です!
次は英語化?

そろそろリリース、IchigoJam BASIC 1.4。
高専生、大学生など、スマホを持っている人にもわかりやすいリファレンスづくり、スタート。


IchigoJam BASIC コマンド一覧
ソースはGitHubにありますので、追記翻訳など、プルリク、コントリビューター希望、歓迎です。
1.4搭載予定のコマンドや、使い方も含まれています。


CSVデータ
schema.orgの語彙と、足りない気がしたものはsabae.cc語彙を作って補っています。

ichigojam-1.4.0b01.zip
- POINTで文字がある場所をチェックした場合1を返すように変更

総額3700万円をかけた一大イベント、鯖江市議選「SABAE20総選挙」スタート!
候補者25人から今後4年、10億円をかける鯖江市議会の運営メンバー20名が決まります。(議員報酬1人あたり3400万円)
福野あおい 鯖江市議会議員 — 鯖江市議会議員選挙

鯖江市の未来を担う、20名のポートフォリオを決定するのに、1名だけを選ぶという不思議な選挙制度ですが、現行ルールなので仕方ありません。
Code for Sabae として、候補者一覧オープンデータ(CSV-utf8)デジタルポスター掲示版アプリをひとまず開発しました。 いろんなアプリを作って盛り上げましょう!(ハッシュタグ #sabae20


SABAE20総選挙2019 鯖江市議候補者デジタルポスター&オープンデータ
ダブリンコアに習って、sabae.cc語彙を作りました。schema.orgにないものを勝手に作っていきます。

選挙カーを使う候補者の方、前回の2015年選挙時につくったアプリをご活用ください!

選挙カー連呼スポット探しアプリ
オープンデータ選挙カー連呼スポット探しアプリ 鯖江市議選スタート!
* 認められているのは、8時〜20時、学校・病院・診療所その他の療養施設の周辺以外、連呼行為(車上の連呼以外は公職選挙法違反です)

各地で欲しいとの声多数。地方公共団体の方、学校と病院オープンデータ、ぜひ5つ星オープンデータ化してください。(odpへの登録いただければ、即アプリに反映されます)

投票日は、6/30日曜日です
鯖江市議会議員選挙のお知らせ – めがねのまちさばえ 鯖江市

宇宙と科学のシンポジウム、ISTS福井大会の展示期間が終了。IoT人流カウンターの値を集計してみました。

ほぼ一人ずつ通過する場所に設置し、精度良くデータが取れた、8Fの上りエスカレーター出口のデータを、10分置きにカウントをとって、簡易的にグラフにしたもの。

確かに人が少なかった月曜日の様子や、セッションのはじまり時間に合わせて流量が増えている様子がデータにも現れています。データを蓄積して、イベントデータと共に解析すると、優位な予測や、取り組みの効果測定に十分使えそうです。


こちら5日分のまとめ。


8Fに4箇所設置した、値を半分にして推定のべ人数としています。実際にはその場で立ち続けている人を重複カウントしたり、まとまって通った数を1として数えたりするので、あくまで目安です。

import csv def ana(fn, m, w): with open(fn) as csvfile: reader = csv.reader(csvfile) cnt = 0 bkd = None for row in reader: datetime = row[0] module = row[1] value = row[2] if m == module: #dt = datetime[0:13] # 1時間単位 dt = datetime[0:15] # 10分単位 if bkd is None: bkd = dt elif bkd == dt: cnt += 1 else: #w.write(bkd + "," + str(cnt) + "\n") # csv for 1時間単位 w.write(bkd + "0," + str(cnt) + "\n") # csv for 10分単位 bkd = dt cnt = 0 if not bkd is None: w.write(bkd + "," + str(cnt) + "\n") # csv fn = "ists-fukui2019.csv" modules = { "uZwuY2G0vn7C": "1FJ", # 1FJAXA内", # BSCM-B28 "uAbs00TuPz23": "5FR", # 5F展示 右", # BSCM-B94 "u52oJ7ReEICB": "5FL", # 5F展示 左", # BSCM-A00 "uXaXTQ866fqt": "8FU", # 8F上りエスカレーター", # BSCM-C07 "uKIpvNgHMhMZ": "8FD", # 8F下りエスカレーター", # BSCM-C12 "urBprjzYcYx8": "8FL", # 8Fエレベーター左", # BSCM-B27 "uHJqMGJf3tJ6": "8FR", # 8Fエレベーター右", # BSCM-B90 } for m in modules: print("analyze:", m, modules[m]) w = open("data-" + modules[m] + ".csv", "w") ana(fn, m, w) w.close()

人流センサーのローデータ CSV を解析するPythonプログラム(参考、Python3でCSVほか)


1F JAXAに設置していたカウンター(テレビの下)

IchigoJam x sakura.io を使った、IoT人流カウンターはオープンソース
福井x宇宙! 200円測距センサーとIchigoJamで作って実験、ISTS福井大会用、IoT入場者数カウンターとリアルタイムオープンデータ

観光地、施設出入り口、市役所の窓口など、いろいろ活用ください!
AI、EBPM、RPA、何を使うにしても、改善するなら、まずは計測しましょう!

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