2014年10月13日月曜日

南砺バスガイド~あと5分~ 奮闘録


2014年9月13日から3日間、富山県南砺市で行われた「公共交通ハッカソン@世界遺産五箇山」。こちらで開発した作品で、「日本最大級のWeb App コンテスト Mashup Awards」 Civic Tech賞 ファイナリストプレゼンに参加してきました。
残念ながら、賞を頂くことはできませんでしたが、とても有意義な一カ月でした。・・・ん!?

一カ月しか経って無いの??

結構ながく感じたんだけど、たったの一カ月だったんだ。
今後、そうそうない経験だと思うので、重い腰を上げて、ブログを書いてみることにしました。

はじまりはアプリケーションエラー

9月13日 五箇山で結成されたチーム「Just wait 5 minutes」。赤字が続く南砺市営バス「なんバス」を便利にし、利用者を増やすことを考えた、南砺市職員、学生、社会人混成の5人チームでした。


利用者を増やすため、もっと便利にする。予約が出来て、乗るまで待ってもらえる。ハッカソンでは、そんな提案をすることになりました(こちらがプレゼン資料です)。


開発そのものは、順調だったのです。しかしながら、本番でやっちゃいました。
まあ、完全に私のミスだった訳ですがね。。。



うん、やっちまっただよ。私のミスで台無しにしちゃいましたよ。
こりゃー、このままでは終われねぇ・・・。

意地でもMashup Awardsへ出す!

こんな経緯でMashup Awardsへ向かうことになりました。
ハッカソンで、バス停表示やバス経路の解析処理は、メンバーによって実装されていたので、
以下の2機能を追加することになりました。

  1. 地図上にバス路線を表示する
  2. バス停から時刻表を表示する
そして無事、Mashup Awardsへ応募することが出来ました。


応募したのは、Civic Tech賞。応募のページには、「プレゼン該当者には 10/3(金)までに連絡予定」と記載がありました。

が・・・むなしく、10/4(土) 0:00を迎えることに

日付: 2014年10月4日 3:42
件名: 【MA10】CivicTech賞プレゼンテーション審査のご案内

みなさま、遅くまでお疲れ様でございます。


何はともあれ、無事、ファイナリストプレゼンに進むことが出来ました。
チームのみんなに連絡しましたが、まあ、みんな予定が合わない。つーか、発表からプレゼンまでの期間が少し短いのかな・・・と思います。
まあ、私がプレゼンすることになりました。
もちろん、資料の作成には、チームメンバーに加え、Code for Nantoの方々やハッカソンのライバルチームに所属したかたからもお力添えを頂きました。



プレゼンテーション当日、夜行バスで東京へ降り立った私。
そのまま、資料のブラッシュアップ&練習をしていましたが、歳のせいでセリフを覚えきれないし、所要時間もマチマチ。プレゼン能力も無いので、あきらめて、パワーポイントの「発表者ツール」を使うことにしました。

そして、15時。発表2時間前!機器接続確認のお時間です。パソコンを持ち込んでプロジェクタに繋げます・・・

2画面に出来ない!?

このままでは、命綱とも言うべき「発表者ツール」が使えないじゃないか。
そんなこともあり、チームメンバーである斎藤くんに、アシスタントして付き合ってもらうことにしました。
パソコンを2台持ち込んで、パワーポイント表示用と、原稿表示用に分け、原稿も見ながら喋れる環境を作ってもらいました。そして、合いの手も打ってもらうことにし、1時間程練習し、本番を迎えました。



さて結果です
Cvic Tech賞は・・・

台風リアルタイム・ウオッチャーです

「南砺バスガイド」じゃあありませんよー。
情報アーキテクトの第一人者、首都大学東京の渡邉先生の作品です。
台風が来たときは、ここをみて確認しましょう。

はい、ノミネートメンバーを見たときから、結果はわかってましたよ。
見て頂ければ分かります。

ちなみに、ご一緒できる喜びから、著書を持参し、サインも頂いてきましたー。


Google Earthの本も持っていたのですが、重たいのでやめておきました。


戦い終えて

○出来なかったこと
まず、プログラムの出来。やり残したことは、沢山あります。
バスを選択したら、そのバスが何時にどこに着くかは見れるようにしたいです。

つぎにプレゼンの内容。5分しかないので、色々な取捨選択をしないといけない。
完全に漏れていたのは、「地域課題」。ここをしっかりと定義していないので、「便利ツール」としか訴求できていなかったのは猛省材料。
日本の中山間地域での公共交通は、税金を投入しないとまわらない。でも、医療政策上は、「最後は自宅」と言っている。一番いいのは、公共交通の利用者を増やすことだけど、便利に使えないと利用者も増えない。それなりに大問題なんだけどね。

○出来たこと
良かった点は、とりあえず、5分間、飽きずに聞いてもらえたんじゃないかと言う点。
南砺市の位置の説明あたりから、「つかみ」は取れたし、ペースはつかめた。
プレゼンでは、まずは見てもらうことが大切な訳で、そこは出来たと思う。
これは、プレゼン資料を作ってくれた皆様のおかげです!

あと、若い人と一緒にプレゼンの舞台に立てたこと。
もう少し、時間があって、住んでるところが近ければ、もっと、重要な役回りをしてもらえたんだけど、ちょっともったいなかったですね。

今後

とりあえず、MA10は終わりました。
南砺バスガイドには、まだまだ改善が必要ですし、オープンデータの内容についても、課題はあります。やっぱり、Civic Techなので、みんなが絡んで育てていける環境を作っていきたいですね。
できることなら、自分の住んでいる富山市でも進めていきたいと思います。

2014年7月5日土曜日

Code for Namieのハッカソン福島ハッカソンに行ったよ ~チーム Please Call Me なのに通話機能はないのです ~

 6月21日(土), 22(日) 福島県二本松市で行われたCode for Namieのハッカソンに参加してきました。

 ハッカソンに先駆けて行われた6回におよぶアイディアソンで出されたアイディアから、プロトタイプの開発を5チームで競い合いました。浪江町の方々が、「使いたい」と思ったアプリに得点を付ける方式で審査。

その結果、最も得票が高かった・・・

浪江町賞


…を頂きました!


写真は、表彰状&副賞のなみえ焼きそばです。

せっかく良い賞を頂いたので、少しレポートを書いておきたいと思います。


このハッカソンは、福島第一原発事故で全町避難が続く福島県浪江町で、町からの情報発信や町の方々どうしの繋がりを維持するため、タブレットを配布する事業の一環として行われたものです。


ハッカソンとは、Hack(開発) + Marathon(マラソン)を組み合わせた造語。短期集中型で、プログラムを開発するイベントです。
今回の場合、6/21(土) 10時から始めて、6/22(日) 13時過ぎには開発終了。ようするに…

27時間でアプリケーションのプロトタイプを造る


…ということです。

ハッカソン向けのアイディアは、ハッカソンに先立ち6回ものアイディア出し(アイディアソン)が行われており、運営されている方がまとめておられました。


壁に張り出されたアイディアから、自分が作りたい!と思うものを選びます。
同じアイディアを選んだ人たちが、即席チームとなります。



こちらが、われらがチーム。目指すのは、タブレットを使った「健康アプリ」です。
まずは最初のミーティング。コンセプトは二つ。

  • タブレットは操作をしない or 極力操作がないようにする
  • 震災後途絶えがちな人とのつながりを復活させ 健康をとりもどせるようにする


初日、昼過ぎ。何を作るかを発表しました。
コンセプトは決まったものの、具体策に欠ける我がチーム。
とりあえず設定したゴールは、「写真を使って、シンプルなつながりを実現する新しいSNS」。


発表を終えて、具体的なイメージがないから(?)、不安がるメンターの方や主催者の方々・・・。
その後、主催の方が心配され、浪江町役場の方や色々なメンターの方を引き合わせてくださりました。色々と情報をインプットするものの、却って、完成型が見えなくってきました…。



「原点に帰ろう」

…とのアドバイスもあり、アイディアの元を見直しました。
こちらが、アイディアの原点。Code for Japanの方や浪江町の方が作られたアイディア・スケッチです。こちらに、当初考えたコンセプト・・・「タブレットは操作しない」、「人のつながりを重視」を組み合わせ、それまで、議論してきたことを合わせることに。
ここから、停滞したチームは、一気に動き出すことになりました。


・ウェアラブル端末で血圧、脈拍を管理
⇒人が気にしているのは「血圧」。まずは「血圧」だけ考えよう。
「高血圧が気になる方に…」みたいなCMはよく見かけるが、「脈が速い方に・・・」のようなCMはない。やっぱり人が気にしてるのは「血圧」かなということで。

・気づかないうちに見守られている/専門家からのアドバイス
⇒医師とつなげるとか、自動判定で警告を出すとかでなく、ご家族、お知り合い、巡回員の人とつなげた方が、人間味があってよいかということに。
医者に「運動しよう」と言われるよりも、知人から「散歩しよう」と言われる方が素敵かな。

・「元気ですか?」には「元気」と応えてしまう。
⇒ボタンを押すようなコミュニケーションではなく、「話をしたい」とか、「電話がしたい」とか思えるようにした方がいいだろうということに。

ここに、タブレットをフォトビジョンのように置いてもらうという考え方を結びつけた仕組みでプロトタイプを作ることになりました。

作るものが決まれば、あとは簡単。プレゼン担当、タブレットアプリ担当、(疑似)血圧計担当、サーバサイド担当に分かれ、作業を開始。


作るものが決まれば、あとは簡単。プレゼン担当、UI担当、血圧計担当、サーバサイド担当に分かれ、作業を開始。
作業は、宿に戻ってからも続き・・・。



翌日は、会場で最終調整。


そして、チーム名は…

プリーズコールミー

となりました…が

通話機能はございません(笑)


こうして、無事、チーム:プリーズコール・ミー!によるタブレットアプリケーション「血縁」が完成。
こちらが、プレゼンテーションです。


血縁 For upload from Takashi Moriyama


プレゼンテーション終了後には、浪江町の方々にタブレットを触っていただき、ご意見を頂戴しました。


そして、見事に浪江町賞を頂きました。


今回のハッカソン、チームメンバーの能力も素晴らしかったですが、ハッカソンの運営も素晴らしかったと思います。事前のアイディアソンと結果をまとめ方。浪江町役場の方から直接地域の状況・課題を聞ける体制。メンターの方の適切なフォロー。これらが総てそろったからこそ、浪江町の方から、評価頂けるプロトタイプが出来たものと思います。

みなさまのおかげで頂いた副賞「なみえ焼きそば」。おいしく、頂きました。
二本松で食べた時は気が付かなかったのですが、もやしと豚肉しか具が入っていないんですね。



昔から、パソコン配ったり、タブレットを配ったりとかいう事業が行われることがあります。
しかし、今までの事例を考えてみると、あんまりうまくいった事例はないような気がします。
今回、浪江町のタブレット配布では、Code for Japanを中心にシビックテックという市民参画型の手法が取り入れられます。果たして、シビックテックがこの難しい事業を成功に導けるのか?これからも注目していきたいと思います。

2014年2月12日水曜日

MysqlのデータをCSVファイルに出力する

MYSQLのデータをCSVファイルに出力しようとしたとき、オーソドックスなやり方はというと。

mysqlに接続したあとに、以下のコマンドでOKです。

SELECT col1, col2, FROM tbl INTO OUTFILE 'hoge.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"';

こうすると、hoge.csvは、mysqlのワーキングディレクトリ(?)に出力されます。


/var/lib/mysql/・・・
 …みたいなところ。

自分が神である環境であれば、これでいいのですが、常に/var/libあたりのファイルが扱えるとも限らない。
そんなときは、コマンドラインで…

mysql aa127w0a9d -e "SELECT col1, col2, FROM tbl " | sed -e 's/\t/,/g'  >  hoge.csv

・・・とすれば、切り抜けれそうです。

SELECT ふにゃらら INTO OUTFILE という文そのものが、システム管理者向けということですかね。


2014年2月7日金曜日

やってもうた(1) Mysqlで間違ったカラムに入れてしまったデータを入れ替える。

データベースからデータベースへのデータ移行で、カラムを間違ってデータを入れてしまった。
 テーブルには、companyとpersonがあるのだが・・・。

company:山田太郎
person:山田商事株式会社

…という具合に、間違えてしまった。大量のデータがあり、最初からやり直すことが出来ない状態・・・。

色々と調べてやってみたのが、下のSQLです。

単純に…

UPDATE tbl1 SET company = person, person = company;

…とやってみました。結果は…

company:山田商事株式会社
person:山田商事株式会社

なるほどねー。さらにやっちゃいました。。。
まあ、そりゃそーかという結果ではあります。

こういうときは、こうやるといいみたいです。

SET @swp = '';
UPDATE tbl1 SET company = CONCAT(LEFT((@swp := company),0) , person) ,person = @swp;

値が更新されるときに、一旦変数に蓄えて、その文字列を切り詰めた上で、交換する文字列を設定するということですかね。