東京都版のGitHub公開後、エンジニアが多数集まり、北海道版大阪府版愛知県版など、横展開が急速に進んでいます。学生の活躍も増えてきてうれしい限り!簡易版「COVID-19 Japan - 日本 新型コロナウイルスオープンデータサマリー」を使って、京都版も誕生!全国網羅されるのも時間の問題かも?

自分のまちのサイトがないから作りたい!そんな時の手順はこちら。
1. 都道府県名 + オープンデータ で検索(都道府県、全部オープンデータサイトはある)
2. オープンデータカタログで、新型コロナウイルス、COVID-19 などで検索し、あった → アプリづくり!
3. なければ、都道府県名 + 新型コロナウイルス で検索し、情報掲載サイトを見つけ、スクレイピングしてAPI化 → アプリづくり!

実家がある石川県でやってみました。
1. 「石川県/石川県オープンデータカタログ」を発見
2. 新型コロナウイルスデータはまだなさそう
3. 「石川県/新型コロナウイルス感染症の県内の患者発生状況」からスクレイピングしてAPI化 → 簡易アプリ化!


COVID-19 Ishikawa - 石川県 新型コロナウイルスオープンデータサマリー
検査人数は不明ですが、現在、陽性患者数7名とのこと。1時間おきにデータをチェックし、差分があれば更新し、APIにも反映されるように作っています。

const parseDate = function(s) { const num = s.match(/令和(\d+)年(\d+)月(\d+)日.+/) const y = 2018 + parseInt(num[1]) const m = parseInt(num[2]) const d = parseInt(num[3]) return y + "-" + fix0(m, 2) + "-" + fix0(d, 2) } const parseData = function(s) { if (s == null) return null let cnt = 0 let idx = 0 for (let idx = 0;;) { const n = s.indexOf('例目', idx) if (n < 0) break cnt++ idx = n + 2 } if (!cnt) return null return { date: parseDate(s), npatients: cnt } } const getCovid19DataJSON = async function() { const data = await getCovid19Data() const dom = cheerio.load(data) const daily = [] dom('h2').each((idx, ele) => { const text = ele.children[0].data const d = parseData(text) if (d) daily.push(d) }) const res = { npatients: daily } res.summary = calcCovid19DataSummary(res) res.lastUpdate = getLastUpdate() return res }

コアになる部分の Node.js のプログラムはこんな感じです。HTML解析用ライブラリ cheerio を使って、h2タグで囲われているところをチェックし、正規表現を使って切り出してデータ化してます。詳細は covid19ishikawa.js を見ると書いてありますが、実際動かしたりしてみるのが一番です。

GitHubの app_sabae_cc のソースを Clone or download して、コンソールから下記コマンドで動かせます。

npm install node covid19ishikawa.js

コンソールって何?エラーが出でよくわからない方は、こちらからどうぞ!
コンピューターと深く話そう! Macのターミナル入門とNode.jsでつくるwebサービスはじめのいっぽ

APIができたら、次はアプリづくり!
ひとまず簡易版対策サイトならデータを入れ替えてちょっと調整するだけでお手軽です!
どんどん改良するも良し、東京都版の横展開にチャレンジするも良し!

完成したら、ハッシュタグ #StopCOVID19JP 付きで発信しましょう!
うまく行かないときのご相談あれば、@taisukef 宛メンションツイートでどうぞ!

links
- 東京都 新型コロナウイルス対策サイトへの貢献方法を解説 - Qiita
- 求む協力者、高専生がReactで開発した学生のための民間支援情報ナビ、データとアプリの分離が多様性の鍵!

プログラマーとしての無力を感じた、2011.3.11。
創らないとと始めた、「一日一創」。
やって分かった、オープンデータとアプリづくりの相性の良さ!

おかげさまで好評、オープンデータを提供する日本政府と、開発力を提供するシビックテックが組んだ、爆速成果「VS COVID-19 #民間支援情報ナビ」。これを高専生の活躍の機会にと、学生向けに活かす方向で一緒に考えて見たのがこちら。

React開発 VS-COVID19 for Students(仮)src on GitHub
民間支援情報ナビのデータをJSON提供するAPIを使って、はじめてのReact開発をメンタリング。 学生に役立つもののみを表示するコンセプトで開発し、半日の開発で、第一弾をリリース。デザインにはまだ手が回っていないので、デザインしてプルリクしてくれる方、大歓迎!


津山高専生、北九州高専生、福井高専OBによる、ミニミニjigインターンの成果物でした!


VS COVID-19 企業/NPOによる支援リストsrc on GitHub
キャラクターが仕上がってきたので、Code for Sabae 版の方も更新!


愛知県でも有志によるシビックテック、Code for Nagoya による、「県内の最新感染動向 | 愛知県 新型コロナウイルス感染症対策サイト」がスタート!


COVID-19 Aichi - 愛知県 新型コロナウイルスオープンデータサマリーsrc on GitHub
GitHubにある data.json を使って、サマリーサイト作成


COVID-19 Japan - 日本 新型コロナウイルスオープンデータサマリーsrc on GitHub
いくつか溜まってきたので、ひとまず一覧すると同時に動作チェックするページを作成。福井県は3/11、9時現在、70人検査して陽性0人(福井県版)。

神奈川県版は公式サイトとしてスタート。残念ながら派生したソースはオープンソースではなく、オープンデータもないため、サマリーにはすぐに反映できず。

デザインや、サイトは後回しでも、オープンデータさえ出してもらえれば、アプリ化はシビックテックで実現できてます。 VS COVID-19 のような、データとアプリの役割分担をモデルとしましょう。


VS COVID-19
個人向けのみに絞るフラグを追加実装、誰でも得られる支援策あり!現在189件、掲載!

Let's code for someone!
Share your friends!

VS COVID-19」リリース後、「コロナ対策で政府がオープンデータに本腰 民間の支援情報をGoogleスプレッドシートで公開 - ITmedia NEWS」として採り上げられ、地域版展開で声を上げていただいたりと、反応上々。

新型コロナウイルス対策で注目集めるシビックテック、高専生が初心者向けの貢献の仕方をとっても丁寧な記事にしてくれ、うれしい限り!

春休み、新しいことを始めるいいチャンス。「VS COVID-19」をセルフフォークして、JavaScriptでwebアプリをつくるフレームワーク、Angular版を作りかけてみました。

VS COVID-19 Angular ver.」(src on GitHub)

初めてのAngular、バージョンによっていろいろ変わるので、公式「Angular 日本語ドキュメンテーション」の「セットアップ」からスタート!

サーバーとの通信方法は、fetchとasync/awaitを使って書きたいけど、ちょっとややこしい。「Angular 日本語ドキュメンテーション - HttpClient」を参考に実装(list.component.ts)。

シンプルに実装するため、Google SpreadSheetからJSONで取得する部分はAPI化したので、表示コンポーネント部分はすっきり!(おまけに、表示順をランダム順にするシャッフルを追加しています)
https://app.sabae.cc/api/googlespreadsheet.json?key=2PACX-1vSFMNp5HcRNOF5MrAujEUWR1dIoX2mncMEWTbPlVAaJqKWiq831-6gnCyI7n_G8YfPqNQXrfwyVjyHL
(APIで、民間支援情報をJSONで取得するURL)

静的ファイル群にビルドして、ひとまずGitHub pagesで公開

ng build

注意点、aタグのhref属性をダブルクォートなどで囲わない横着スタイルは怒られました。きちんと書くようにしたいと思います。

気になる新技術で、いろいろ創ってみましょう!

links
- 立ち上がろう高専生、今すぐできる技術貢献、日本政府xシビックテック、民間支援情報ナビプロジェクト「VS COVID19」経産省&総務省から発表!ウイルス対策サイト福井版も

東京都によるGitHub公開から1週間、日本政府も新型コロナウイルス対策の民間支援データをまとめオープンデータとして公開、Code for Japan連携で開発GitHubで公開、経産省&総務省からのプレスリリースと爆速展開! オープンデータ x GitHub、各地に広まってます。


VS COVID-19 #民間支援情報ナビ」(src on GitHub経産省 発表総務省 発表
データを集めと標準化した経産省CIO補佐官 平本さん、デザインしてくれた北海道森町の行政アーティスト、山形さん(@howmori)!Code for Japanからのリリースに向けてサポートしてくれた、関さん(@hal_sk)。 他、官民、組織、地域を越えた関係者による素早い連携で実現。

プログラムは何の変哲も依存関係もないシンプルなHTML+CSS+JavaScript、1ファイル!公開直後、丁寧で効果的なプルリクをいただき、大感謝!改善提案、自分好みの言語への変換など、オープンソース力を大いに活用いただきたい。


VS COVID-19 企業/NPOによる支援リスト」(src on GitHub)
Code for JapanのSlackにて、NPOからの情報も載せたいと要望あったので、同形式でデータを追記してもらい、Code for Sabaeでフォークしてミックスしたバージョンを公開。 それぞれ使いやすいように自由に改造、公開できるのがオープンソースの強み。ぜひ得意な言語で、かっこいいサイトで新型コロナウイルスに対抗しよう!


COVID-19 Hokkaido」(src on GitHub)
東京都GitHubをforkした北海道版がスタート!早速、data.jsonを使ってサマリーアプリ。


COVID-19 Kanagawa」(src on GitHub)
神奈川県版

プログラムを自由に公開、再利用できるコラボレーションサイト「GitHub」は、情報系高専生にも人気。第一線で活躍するエンジニアのコードはどうなっているのか?どのような手順で開発は進むのか?生の現場を見られ、体験できる最良の学習の場!


COVID-19 Fukui」(src on GitHub)
陽性患者がでていない福井県、「新型コロナウイルス感染症について」として、情報提供開始。スクレイピングして、JSON-API化したものを作って、同様のサマリーアプリにした。 IchigoJam/MixJuice向けTEXT-APIもうどうぞ。 HTMLによるみなし2つ星オープンデータ、サイトの構造が変わると追従できないので、感染者がでたり、タイムリーな情報提供が必要になったら、また対応すると同時に、より連携しやすい方法を相談してみたい。

盛り上がる日本のシビックテック。東京都GitHubや、Code for Japanでの貢献呼びかけに応じる高専生、学生はまだまだ少ない。年齢や技術スキルで制限をしているわけでもないので、長い春休みなのに出かける機会が減っている学生にとっては絶好の活躍チャンス。

まだまだ手探りな行政DX(デジタルトランスフォーメーション)、だからこそシビックテック、ひとりひとりの行動が大きな力になる。 未来を嘆くか、未来を創るか。


【もっと挑戦!福井人】vol.3 福野泰介さん/こどもプログラミングの仕掛け人、福井で輝き続ける理由とは|福井県の長期ビジョン 〜みんなで描こう福井の「未来地図」〜|note
福井県からの取材。今の自分があるのは、高専生の頃、プログラミングの技を社会で実践させてもらえるチャンスがあったから。どんな場所でも、誰であっても、すぐに貢献できるネット時代。大いに活用していきたい。

links
- 小中学生でも貢献できる! IchigoJam/MixJuice用、新型コロナウイルス状況オープンデータ取得API東京都編
- 都内日別患者数を等身大でVR体験するアプリ「VR-Patient」、体作りデータ、対策キャラが誕生した世界オープンデータデイ in 鯖江

盛り上がったオープンデータデイハッカソンシンプル版VR版に続き、フィジカル版も作りたい!小中学生でも気軽に参加できるようにIchigoJam用のAPIを作りました。 単体ではネットにつながらないIchigoJam、ネットワークボード「MixJuice(¥2,750)」を使います。

IchigoJamの上にMixJuiceを挿し込み、電源をいれ、いろいろ表示が落ち着いたあと、一度、エンター。MJ APC コマンドで、無線LANのアクセスポイントに接続しましょう。

?"MJ APC SSIDXXXX PASSWORDXXXX 'WiFi connected: 192.168.xx.xx 'OK

WiFi connected と出れば接続OK!次の起動時からは自動的につながります。


APIによる取得は、MJ GET コマンドを使用します。(取得ファイル名は小文字の必要あり、新しいMixJucieなら MJ GETS でもOK)

?"MJ GET app.sabae.cc/api/covid19tokyo.txt 7 n_inspections 1068 n_patients 58 n_light 29 n_heavy 8 n_exit 20 n_death 1 s_lastUpdate 2020/03/07 8:00

いろいろエラーがでますが、こんな感じのデータが取得できればOK!(出展、東京都 新型コロナウイルス感染症対策サイト / Tokyo COVID-19 Task Force websitedata.json を加工。検査実施人数、陽性患者数、軽症・中等症数、重症数、退院数、死亡数の順。jsonでも取得可能)

最初の数値はデータの数、それ以降、データの名前とデータのセットが数分続きます。これを配列に保存するプログラムを作ったりして、活用しましょう!


10 ?"MJ GET app.sabae.cc/api/covid19tokyo.txt 20 INPUT N 30 FOR I=0 TO N-1 40 INPUT S 50 INPUT [I] 60 NEXT 70 'test 80 FOR I=0 TO N-1:?[I]:NEXT


画面に大きく表示したり、サーボを動かしてインジケーターを作ったり、WS2812Bで電光掲示板を作成するのもありですね!

Let's create something against COVID-19!

ハッピー、インターナショナル・オープンデータ・デイ!

今年は基本オンライン開催だったので、ちょうど同じくオンライン開催された Code for Japan ハッカソンにも参加できました。

VR-Patients COVID-19 Tokyosrc on GitHub
COVID-19 TokyoのVRビジュアライズ版。日別、陽性患者数を等身大のフィギアで表して、リアリティーを感じてもらうWebVRアプリ。PCでもカーソルキーで歩けますが、OculusQuestを使うと、リアルに歩き回れます。


ちょっとオフライン、鯖江の新拠点、SCCにて、新メニュー、スープオムライス!


実際に使ってみてもらいました。一体験は百見に如かず。


VS COVID-19 Code for Sabae ver.」 src on GitHub
対COVID-19キャラクター誕生!(by Shimoken)


鯖江 おすすめレシピ」 Code for Sabaeメンバー成果物
地産地消、地元の美味しいものを食べて強い体を作っておきましょう!


鯖江 近松の里 散策ルート」 Code for Sabaeメンバー成果物
適度な運動による、体力づくりも大事!


ハッカソンとは、誰でも楽しめるものづくりイベント!自由に使えるSCC、気軽に集まって、ガンガンアプリづくり、データづくりを楽しもう!

作ったものはオープンデータなどで、公開すると、誰かがその続きをやってくれます!その連鎖こそ、オープンソース、オープンデータのおもしろさ。


18時、オンラインで成果発表記念撮影!東京都副知事、宮坂さんもゲスト参加!
ビジネス特集 “爆速”の男 副知事に転身 | NHKニュース
東京都による新型コロナウイルス対策サイトも、宮坂さん x 関さん(Code for Japan)で、異例のスピード開発&展開!GitHub公開1週間で3千スター、68人の貢献者!

本日の40人が参加した、オンラインハッカソンでも、保守性改善、アクセシビリティ改善、多言語化、他地域化などが同時並行的に一気に進んだ原動力は、共感得るテーマ x 価値あるオープンデータ x オープンソースの力!

未来は自分たちの手で創るもの。行動しましょう!
貢献の仕方 - 東京都 新型コロナウイルス感染症対策サイト
Code for Sabae Facebookグループ

東京都の対COVID-19サイト、見たい未来は自分でつくる「Code for Japan」の呼びかけによって、Slackアカウントに続々と開発者が集まり、#covid19 チャンネルに300人!

3/7、世界オープンデータデイを前に「COVID-19 Tokyo - 東京都 新型コロナウイルスオープンデータサマリー」をメンテナンスしつつ、オープンデータ伝道師仲間で創る、新しい対策アプリづくり。

VS COVID-19 企業による支援リストsrc on GitHub
企業や自治体などから新型コロナウイルス対策として発表された様々な支援メニューをまとめ、自分に必要なメニューをすばやく見つけられるようにするサービスのベース開発を終え、Code for JapanのGitHubアカウントにてリポジトリ作成!


「データとトキメキをつなぐBAR」 by Govtechを一緒につくる会
世の中には、まだまだテキスト化されていない熱い想いや、良いアイデアがたくさんあります。「つぶやく」より更に手軽になる「配信」が身近になると見える新しいこと。


特別企画「ふわっちスター配信」~第1弾は諸星和己さんが登場~
ふわっちでは、元、光GENJIの諸星さんが配信!

イベントは自粛ではなく、オンライン化して派手にいきましょう!
COVID-19 Response Hackathon - HackMD


Code for Sabae, Fukui でもオンラインイベント開催!

世界各地に広がるCOVID-19(新型コロナウイルス)、ITとデータの力でどう戦うか?
東京都の新型コロナ対策サイト、GitHubでコード公開 修正提案受け付け - ITmedia NEWS
元Yahoo! Japanの社長、宮坂さんを副知事として迎えた東京都の動きが熱い!
元ヤフー社長の宮坂氏、東京都副知事へ 小池知事が方針:朝日新聞デジタル
東京都が管理する新型コロナウイルス関係データをオープンデータ化し、それを可視化するアプリをGitHubでオープンに開発。コメントや、修正、改善案提案など、幅広くボランティアを募っています(こちら)。


Covid19 Tokyo - 東京都 新型コロナウイルスオープンデータサマリー
公開されたオープンデータを使って、どう横展開できるかをさぐるために、簡単な表示アプリ「Covid19 Tokyo」を作ったところ、公開後からもどんどんデータが追加されていることが判明! 検査人数、入退院数、症状別人数が増えていたので、表示するよう改良!
公式の見える化サイト「都内の最新感染動向 | 東京都 新型コロナウイルス対策サイト」よりも部分的に情報量、多いです!


画面下と、JavaScriptコンソールで確認できる data.json の構造。語彙が独自で、データ形式が標準化されていないJSON3つ星オープンデータ。まだまだ開発途中なのかもしれません。 ひとまず、どんな形式でも構わないので、どんどんオープンデータ化していきましょう!

data.json をwebアプリで使うコードはこれだけ!

window.onload = async function() { const url = "https://raw.githubusercontent.com/tokyo-metropolitan-gov/covid19/development/data/data.json" const data = await (await fetch(url)).json() console.log(data) }

変数 data をいろいろいじって表示します。

小計を足し算して、合計を求めるプログラム

const calcSum = function(data) { let sum = 0 for (const d of data) { sum += d['小計'] } return sum }

ちょっと今風の書き方をすると、下記のようにも書けますが、正解はありません。好きな書き方でOKです!

const calcSum = (data) => data.reduce((acc, val) => acc + parseInt(val['小計']), 0)

ソースコード全文はこちら!(Covid19 src on GitHub by Code for Sabae


みなさんへの招待状 — Open Data Day
今週末3/7(土)は世界的なオープンデータの日。Code for Sabae, Fukui でもオンラインイベントを開催!

3/6(金)19時からは「「データとトキメキをつなぐ夜」LIVE配信ライブはこちら)」、3/8(土)にはデータを活用し、地域課題を解決するコンテスト「チャレンジ!!オープンガバナンス 2019」もオンライン開催! 移動時間とコストが必要ない分、いろんなイベントと合わせて楽しめますね!

Let's code!

ICTの力で世界をより良く!総務省/NICT主催「起業家甲子園」、新型コロナウイルス「COVID-19」対策のため初の無観客開催。

起業家甲子園トロフィー、ファイナリストのみなさん、おめでとうございました!!
シリコンバレー研修で横のつながりと縦の深みが増し、ぐっと成長した様子!ひとまずおつかれさまでした!
ただ、あくまで通過点、これを励みにどんどん創っていきましょう!

見せよう日本のIT力、東京都は新型コロナウイルス状況を伝えるサイトソースをGitHubで公開!Issuesを見るとリアルタイムに改善される様子も見られます。熱い!(参考、台湾マスクオープンデータ
Covid19 Tokyo - 東京都 新型コロナウイルスオープンデータサマリーsrc on GitHub
Code for Sabae として鯖江市でも展開できないかと、ひとまず東京都公開のデータ(data.json)をサマリー&デバッグ表示するアプリづくり。 Rawでのアクセス、ドメインを越えたwebアプリからもアクセスできるように「Access-Control-Allow-Origin *」設定してくれていてありがたい!(新しいデータ metro.js が追加された!)


ぐっと人が少ない東京駅、すぐそば丸の内JPタワーホール、広い会場、無観客開催。


メンター担当したチーのプレゼン前に、紹介&応援メッセージ!


沖縄高専チーム3人は、なんと全員高専1年生!


長岡高専チーム、1年生2人によるプレゼンもいい感じ!


福井高専プログラミング研究会、分かりやすく説得力あるプレゼン、好評でした!


宮崎大学チーム、放牧養豚を全国に広げる革命児!展開楽しみ!


阿南高専チーム、自分たちのまちを自分たちで守る!いろいろな困難に立ち向かってきた人類、持てる知恵と道具を総動員しよう!


都立高専品川キャンパスチームでは、2年生が活躍!


各チームとつなぐ質疑応答は、電話。インターネット回線の信頼性、もう一段上げないと。


jig.jp賞の行方は・・・!?


都立高専品川キャンパスチームに jig.jp賞!
実家が放牧をやっているというラッキーを活かして、どんどん実験を進めよう!敷地内ならドローンも飛ばし放題!


こちら jig.jp賞の副賞、フジテレビ x IchigoJam x ベーマガ x Hana道場のスペシャルセット。 加えて、会長ランチ権をプレゼント!


メンター担当した、宮崎大学チーム、審査委員特別賞(2位)、受賞!


メンター担当した、福井高専チーム、AWS賞、クラウドワークス賞、YJキャピタル賞、Saleforce.com賞を受賞!


メンター担当した、阿南高専チーム、さくらインターネット賞、セプテーニ・ホールディングス賞、アイオーデータ賞、Infineon Award賞を受賞!


メンター担当した、長岡高専チーム、NTTデータ賞、受賞!


ICT活用の広がりが感じられたと審査委員長、佐藤さんからメッセージ。もっと尖っていきましょう!


総務大臣賞獲得チームのメンター、さくらインターネット田中さんが今年の最優秀メンター賞!

links
- ICTスタートアップ支援センター | 令和元年度起業家甲子園 〜 開催報告 | NICT-情報通信研究機構

台湾マスクオープンデータのAPI化に続く、API化。刻々と変わる世界各国の対日本の動き。 外務省の海外安全情報オープンデータを使ったglobalsafeは、配信されているXMLオープンデータをそのまま使っていましたが、バックナンバーの取得ができず、ちょっと初回の起動が重いのが難点でした。それを今回 Node.js を使って、API化し高速化。サーバーに過去データもストックする形になりました。


globalsafe - 外務省 海外安全情報オープンデータサーチ」(コロナで検索リンク

GETパラメーターで、スペース区切りでAND検索するキーワードでフィルタリングできるJSON-API
https://app.sabae.cc/api/globalsafe.json?key=コロナ&limit=10
ライセンスは CC BY 外務省 海外安全情報オープンデータ, @taisukef
気軽にご活用ください!


海外安全情報オープンデータ」は、VLEDのオープンデータ表彰2019でjig.jp賞として、勝手ながら選出させていただいた。 日本政府、自治体、各民間企業によるオープンデータ化がますます進みますように!

XMLをJSON化する xml2json が、どうもサーバーでうまくいかなかったので、xmldomのDOMParserを使って、簡易コンバーターを実装。

function makeJSON(xml) { let obj = {} if (xml.nodeType == 1) { // element if (xml.attributes.length > 0) { for (var j = 0; j < xml.attributes.length; j++) { const attribute = xml.attributes.item(j) obj[attribute.nodeName] = attribute.nodeValue } } } else if (xml.nodeType == 3) { // text obj = xml.nodeValue } if (xml.hasChildNodes()) { if (xml.childNodes.length == 1 && xml.childNodes.item(0).nodeName == "#text") { return xml.childNodes.item(0).data } for (let i = 0; i < xml.childNodes.length; i++) { const item = xml.childNodes.item(i) const nodeName = item.nodeName if (nodeName == undefined) { } else if (typeof(obj[nodeName]) == "undefined") { if (!(nodeName == "#text" && item.data == '\n')) { obj[nodeName] = makeJSON(item) } } else { if (typeof(obj[nodeName].push) == "undefined") { var old = obj[nodeName] obj[nodeName] = [] obj[nodeName].push(old) } obj[nodeName].push(makeJSON(item)) } } } return obj } const DOMParser = require('xmldom').DOMParser const toJSONfromXMLString = function(s) { const parser = new DOMParser() const xml = parser.parseFromString(s) return makeJSON(xml) }

attributeも中のタグも一緒くたに扱う変換となっています。必要に応じてカスタマイズするなど、どうぞご活用ください。

links
- 外務省 海外安全情報オープンデータ
- 台湾エリア別マスク残数表示アプリ、JSON-API化して低負荷高速化

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