『HackDay2016』に参加してきました。 #hackdayjp

OLYMPUS DIGITAL CAMERA

今頃!?という気持ちを抑えつつ、ブログを書き始めます。)

みなさまこんにちは。エンジニアのひかる@hico00です。最近、「歳とったね」って言われるようになりました。

業務のせいなのかスプラトゥーンのせいなのかわからないのですが、何故かブログを書く時間がとれず2ヶ月ぐらい遅れてしまいましたが、

2016/2/13〜2016/2/14の土日に開催された『HackDay2016』のレポートブログになります。

 

OLYMPUS DIGITAL CAMERA

 

HackDay2016 とは

HackDay2016 http://hackday.jp/2016/

Yahoo!JAPANさん主催のハッカソンイベントです。24時間ぶっ通しで開発するというワイルドで刺激的なイベントです。

名前は違いますが、1年前にも参加した『OpenHackDayJapan3』と同じイベントで、また今年もチャレンジしてみちゃったかんじです。

※ 去年の様子はこちら:ワイルドで刺激的なHackを求めて24時間ぶっ続け開発の「Open Hack Day Japan 3」に参加してきました。 #openhackday

 

去年の OpenHackDayJapan3 では協賛企業様からご提供いただいたAPIやデバイスを使って開発するという、ちょっとしたルールはありましたが、
今年の HackDay2016 では、完全にフリーテーマでした。

アイデア出しが苦手な人間としては、「もう少し縛ってくれていいのよ?」と甘えたくなる気持ちを抑え、
またアルカナスタッフを口説いてまわるのであります。

 

HackDay2016 の事前準備

IMG_1798

 

チーム構成

また今年もチーム参加が必須です。きっと優しい皆の事だから協力してくれるに違いない!
まずは去年同じく参加した、吉田氏と水野氏に声をかけてみたところ、
「応援はしてますよ」「自分が参加してもやる事ないので大丈夫です」と、とても快く引き受けてくれました。

そして興味がありそうなメンバーを半強制的にお誘いし、

今回は、わたし・水野・吉田・町永・川上・勝見の6名というフルメンバーで勝負に挑む事になりました。

みんなやさしいね。

 

企画出し

IMG_1994

 

前回は、吉田氏企画によるおしゃんな地球儀っぽいものを作りましたが、せっかくなので今回は他の方の案をみてみたいな〜と企みます。

しかし、「開発するのは好きだけど、アイデアとかはちょっと…」というメンバーたち。わかりますよその気持ち。

そこでわたくし、「おふざけアイデア出して、このままじゃまずい…って思わせちゃうんだから」作戦に出る事にしました。

まず考えたアイデアが、『あめとむちこさん』。

◆あめとむちこさん
テーマは、いっぱいがんばるエンジニア達に飴と鞭を与えてくれるちょっといじわるなお姉さん。
長時間集中して開発していると、あめとむちこさん(ドローン)が起動し、空中から飴ちゃんを降らしてくれる。
逆に
サボっていたりすると、空中からタライを落とされる。

(飴はあんまり考えてなかったのでてきとうですが)

(くく、これでどうだ…!)とにやにやしながら皆に発表してみると

 

「ドローンいいですね!」

「タライ落としたい」

 

まさかのHIT!ちがう!

なぜか計画失敗で、あめとむちこさんで調査してみることに。
しかし、ドローンってむずかしいものですね。
『ドローンを落とす』ってのが難しくて、普通のドローンだと積載量がカメラ1個がギリギリだったり。。業務用とかだと持てるのですが、お高い。。
ドローンを自作したり、改造する・・・?とかもあるとおもいますが、そこまで時間もとれないし知見もないし。。

いろいろ調査した結果、ハードルが高すぎるため断念することにしました。

 

そしてHackDay2016当日、別会場でタライが落とされているなんて、この頃の私たちは知る由もなかったのでした…

 

(くやしい)

 

企画決定

そんなこんなでもう一度計画を練りなおし。
じつは、滑り止め案としてひとつ吉田氏がアイデアを出してくれていたので、それをひかる風に跡形も無く改造。

ドローンの時の目の輝きを失ったチームメンバーは「うん、それでいいとおもいます」ぐらいのノリで決定。

落としたかったもんね…なんかごめんね…

そうして誕生したものが、ちくるちゃん

 

IMG_1828

 

 

IMG_1860

 

◆ちくるちゃん

がんばってるエンジニアたちを応援する小学四年生ぐらいの女の子。
ちくるちゃんはすぐお友達にいろんなことを報告しちゃうの。
「この人、がんばってない!」とちくるちゃんが見つけると、お友達にすぐバラしちゃう。
おちゃめな子なの。ゆるしてね。

 

要するに、一定時間キーボード等、手を動かしていないとチームメンバーにサボり報告してくれるシステム。

一体誰が欲しがるのか。私にもわかりません。

そもそも、むちこちゃんもそうですが、何故こういった監視系を作りたかったのかというと、
本当は24時間ハッカソンを頑張るエンジニアたちのモチベーションを上げるモノを作りたかったのです。

なにをどう間違えたか、私にもわかりません。

 

HackDay2016当日

 

IMG_1803

 

IMG_1806

 

今年の開発会場は秋葉原のUDXでした。脳内では、A-RISEの曲が流れっぱなし。

今回は荷物も少ないのでそれぞれ現地集合で、約1名は安定の遅刻という余裕を見せつけてくれました。

「ハックタイム!」とげんきに開会です。

 

IMG_1808

 

IMG_1812

 

人がいっぱいいっぱいに詰まっていて、ちょっと身動き取りづらい感じ。

しかし、色んなところから開発中の音やモノとかがちらちら見えてわくわくします。

 

IMG_1815

 

よく見ると、今年のパンフレットのなかに去年の私たちの作品写真がありました。うれしいですね。

 2/13(土)は午前9時から、2/14(土)の午前9時までまるっと開発時間になります。

途中で帰られる方もいれば、机で突っ伏す方、休憩室で仮眠をとる方もいます。

わたしは休憩室をみてないのでどのぐらいの方がいたのかわかりませんが…

わたしたちのチームは割と24時間ずっと起きて頑張ってた方な気がします。

 

IMG_1837

 

IMG_1854

 

(プレゼンの準備があるためみんなを眺めつつ頑張る私)

 

IMG_1843-ANIMATION

 

(疲労がたまりいちゃいちゃしだす吉田氏(左)と勝見氏(右)の図)

 

作品とプレゼン

 

IMG_1858

 

IMG_1855

 

なにはともあれ、無事ちくるちゃんは形になりました!やったー!
だいぶ手作り感あふれるオーラをまとってますが、それもまあ愛嬌ってことで。

そしてこの辺でだいぶ「帰りたい」っていう気持ちがMAXなのですが、
この後は会場を移動し、ついに作品発表となります。

 

IMG_1856

 

OLYMPUS DIGITAL CAMERA

 

OLYMPUS DIGITAL CAMERA

 

発表は運営さんのものすごい準備と段取りにより、速やかに進行されていきます。

24時間開発後なので、これがすごいありがたかったです。ここで「機材調整のためお待ちください…」とかなると今すぐ帰りたくなってしまいます。

今回ステージ上にはチームメンバーほぼ全員で上がってみました。(川上氏は逃走しました)

 

 

24時間ハッカソン応援システム『ちくるちゃん』@HackDay2016 #hackdayjp from Hikari Fukasawa

 

去年のプレゼンが個人的にかなりイケてなかったので、今回はリベンジのつもりで挑みました。

いつもは台本って作らないのですが、今回はしっかり台本も作っていきました。
そしたら台本ばっか見てしまって前を見ない見ない…。。慣れない事はするもんじゃありません。

でも、去年よりはよくなった気がするので、また来年100点以上目指していきたいです、
あと、やっぱり、デモはあったほうがいい…。これ、反省点です。

 

展示会場

 

OLYMPUS DIGITAL CAMERA

 

(限界こえてるの図)

 

発表会場の上の階で1時間ほど展示の時間がありました。

アルカナスタッフの方もあそびにきてくれて、いろんなチームの作品で触れていました。

 

感想と反省

この後詳しい作品の説明や技術解説になりますが、まずは簡単に感想をばばと。

当日のことを全て書くととんでもない量になるので、だいぶはしょりながらになりましたが、いかがでしたでしょうか。

今回2回目の参加ということで、だいぶ流れもわかってたので事前準備とかは問題ありませんでした。

とにかく、アイデア出しが一番たいへんでした。
私自身アイデア出すのが非常に苦手で、ついつい、あほみたいなモノばかり作り上げてしまうので。
日頃からアンテナをはって、よりよいアイデアを企画し、今度は賞とか狙ってがんばってみたいです。

そして、すごいなと思ったのが、やはり運営様のしっかりされた進行と準備が、とにかくやりやすかったです。
運営様、そして参加者のみなさん、長い時間おつかれさまでした!ありがとうございました。

 

ちくるちゃんの技術解説

さて、ここからようやく作品の詳細説明をしていこうとおもいます。

 

ちくるちゃんについて

必要な物:ちくるちゃん箱、ちくるちゃんアプリ

– PCに横に箱を設置
– 箱の中に入っているモーションセンサーがキーボードを叩く手を監視
– 一定時間手が止まっていると、『サボり』とみなし、チームメンバーのスマートフォンにプッシュ通知を送信
– アプリでは、サボっているログや、サボっている様子がグラフで確認できる

ざっと要件はこんな感じでした。
まずは、チームメンバーを各担当分けします。

アプリデザイン:水野
アプリ作成  :町永
サーバーサイド:川上
箱の作成   :勝見・深澤
おまけ    :吉田

 

IMG_1782

 

“おまけ”はひとまず置いておいて、ここから先は担当メンバーによる解説と感想になります。
それぞれに書いてもらった文章そのままのっけております。
では、いってみましょー!

***

アプリのUIデザイン:水野

IMG_3569

アプリのUIデザインとHTML/CSSコーディングを担当した水野(手前)です。
ざっくりとデザインについて説明させていただきます。

 

手を動かす前の事前準備

デザインするにあたって、ちくるちゃんを企画した
エンジニアのひかるさんにヒアリングを行いました。

そこから出てきた課題をどうすればデザインで解決出来るか考えて落とし込んでいきます。

 

ターゲット

ハッカソンをやっていて、メンバーのステータス(さぼり中、離席中、考え中)を把握したい人

コンセプト

メンバーの状況を把握し、
ついついさぼっちゃう人にいち早く気づけること。

イメージ

– シンプル
– ちくるちゃんのキャラにあったトンマナ

アプリの目的

– メンバーの管理ができること
– ちくられたログが一覧で見れること
– メンバーのステータスがわかること

ユーザーの利用イメージ

ハッカソンが始まる前にPC横にちくるちゃんを設置
サボっていることをセンサーで感知し
アプリをインストールしている各メンバーのスマホにプッシュ通知がいく。
そこからアプリを開き、各メンバーの状況を把握することができる。

 

ちくるちゃんのキャラ

logo-white

ちくるちゃんのキャラ(ロゴ)はひかるさんに制作してもらいました。
このキャラを元に全体のイメージを固めていきます。

 

トンマナ

アプリの目的として、ちくられたログとメンバーのステータスがひと目で把握出来ることが
重要だったため色数を多くし、色の違いでステータスがわかるようにイメージしました。

また、ちくるちゃんのキャラは角がなくてかわいい要素が多かったので
全体のトーンは淡い色で優しいイメージになるようにと考えました。

ここで、トンマナは淡い色で多色を使用することが決まりました。

 

デザイン

大枠のイメージが固まったところでsketchを使用してここからようやくデザインの作業をしていきます。

design

 

終わり次第HTML/CSSのコーディングをしてアプリ担当のまっちーさんに渡しておわりです。
以上がアプリのUIデザインについてです。

 

感想

普段はマークアップばかりやっておりデザインは1年半ぐらいやっていなかったので非常に難しかったです。
とりあえず最低限のものは出来てよかったです!

***

アプリのデザイン考えてくれた、水野氏、ましゅーでした!
「なんかいいかんじにして」ってデザイナーさんにぶっころされそうな事しか言わない私の意図を上手に汲み取ってくれてシンプルかわいい感じのデザインをつくってくれました。

来年はエンジニアとして、期待してます。

さて、つづきまして、デザインを受け取ったアプリ担当の町永氏です。

***

 

アプリ開発:町永

アプリケーション

サボりログのデータをAPIサーバーから受け取って、スマホアプリで表示します。
プッシュ通知のためにサーバーサイドも実装しました。こちらはちょっとだけ。

 

機能

サボりログのグラフ化
サボりログのタイムライン表示
サボりのプッシュ通知

 

技術

Monaca開発環境を使用して、Cordovaアプリを作成しました。
使用技術はHTML5, CSS, JavaScriptです。
JavaScriptのライブラリはとにかく簡単に作りたかったこともあり、jQuery, jQuery Mobileを使用しています。

HTML, CSSは水野さんが用意してくださったので、私はJavaScriptの組み込みを行いました。
アプリ起動時にajaxでWebAPIからサボりログを取得して、ローカルストレージに保存。
そのデータを使用してグラフとタイムラインのレンダリングを行いました。
グラフのレンダリングにはこちらを使用させてていただきました。

Chart.js
http://www.chartjs.org/

サーバーサイドは川上さんが作成してくださった環境を間借りしました。
Laravel 5.1は同じですね。
プッシュ通知部分は「ニフティクラウド mobile backend」を使用しています。
PHPからニフティクラウドのAPIを呼び出す際はこちらを使用させてていただきました。
https://gist.github.com/kaz29/7380772
アプリ側はニフティクラウドのモジュールを組み込んで初期化処理をするだけ。

一通り実装したらアプリをビルドして、インストール。
チクります。
チクりまくります。

※開発用iOS端末のニフティクラウドの初期設定は割愛。

 

感想

IMG_1869

制限時間内に開発し切るのはなかなかアドレナリンがでて楽しかったですねー。
代償として、HackDay以後、1ヶ月ほどずっと腰が痛かったです。

***

はい!アプリ開発をしてくれたまっちーでした。写真も腰が痛そうですね。

まだ慣れないアプリ開発を色々調査して頑張ってくれました。プッシュ通知も開発中悩んでそうだったのですが、無事通知もとんでいてすてきです。

まっちーはいつしかの社内勉強会でもMonacaでのアプリ開発、そしてちくるちゃんのことをお話ししてくれてますので、
興味のある方はその時のブログをご覧くださいませ!

第2回社内勉強会を開催しました。 #sa_study

 

Monacaでスマホアプリ作ってみた from Takashi Machinaga

 

つづきまして!アプリと箱の間に必要なAPIをつくってくれたなっちゃんの解説です!

***

 

サーバーサイド:川上

APIの作成 

アプリとハコ間のデータ受け渡しをするAPIを作成します。
Laravelは配列を返すと自動的にJSONに変換されます。

 

使用技術

– Laravel 5.1
– MySQL

 

ハコから送られてきたデータを受け取りDBへ保存する

 例: http://example.com/api/box/create?id=`id`&event_type=`event_type`

– `id` ユーザーID
– `event_type` ユーザーの状態
 - サボりました = `1`
 - 離席しました = `2`
 - 考え始めました = `3`
 - 帰ってきました = `4`
 - 考えつきました = `5`

public function saveLogs() {
​
 // get params
 $id = Input::get('id');
 $eventType = Input::get('event_type');
​
 // validation
 $user = Haco::fetchTargetUser($id);
 if (!$user || !in_array($eventType, Haco::listEvent())) {
 return [
 'success' => false,
 ];
 }
​
 // save
 $db = new Chikuru;
 $db->haco_id = $id;
 $db->event_type = $eventType;
 $db->user_id = $user->id;
 $saveResult = $db->save();
​
 // push notification
 $pushResult = true;
 if (Input::get('event_type') == Haco::SABORI) {
​
 $msg = $user->name.'さんが'.Haco::getMessage($eventType);
 $pushResult = $this->pushNotification($msg);
 }
​
 return [
 'success' => $saveResult && $pushResult,
 ];
}

 

アプリへ表示するデータをDBから取得して返す

例: http://example.com/api/box/create/

public function create() {
​
 $list = [];
 foreach (Chikuru::orderBy('created_at', 'DESC')->get() as $log) {
​
 $user = User::fetchOne($log->user_id);
 if (!$user) {
 continue;
 }
 $list[] = [
 'msg' => $user->name.'さんが'.Haco::getMessage($log->event_type),
 'logged_at' => strtotime(date_format(date_create($log->updated_at), 'Y-m-d H:i')),
 'event_type' => $log->event_type,
 ];
 }
​
 return [
 'list' => $list,
 'success' => true,
 ];
}

 

アプリへ表示するランキングデータをDBから取得して返す

例: http://example.com/api/log/ranking/

public function getRanking() {
​
 $list = [];
​
 // make response scheme
 foreach (User::fetchAll() as $user) {
​
 $count = [];
 foreach (Haco::listEvent() as $type) {
 $count[$type] = 0;
 }
​
 $list[$user->id] = [
 'user' => $user->name,
 'count' => $count,
 ];
 }
​
 // count
 foreach (Chikuru::all() as $log) {
​
 if (isset($list[$log->user_id]['count'][$log->event_type])) {
 $list[$log->user_id]['count'][$log->event_type] += 1;
 }
 }
​
 return [
 'list' => $list,
 'success' => true,
 ];
}
}

 

感想

エンジニア1年目、初ハッカソン参加でした。
先輩方のご教示により自分もなんとかハッカソンに加われた気がします…!(気のせい)
ハッカソンは、チーム開発フローがより可視化されるので、その場にいるだけで非常に勉強になりました。
来年はもっとエンジニアとしてのスキルをアップさせ、積極的に参加したいと思います。
(女性開発者の皆さんへ:24時間の開発終了後、顔がギトギトになるのでメイク落とし&洗顔は絶対に持って行ったほうが良いです。)

***

API開発をしてくれた女の子エンジニアのなっちゃんでした!★

だいぶどきどきした参加だったと思いますが、しっかり作り上げてくれて、箱とアプリのつなぎ込みもスムーズにできました。
(メイク落としと洗顔は、必須。だいじです。)

個人的に、アイマスクと空気いれる枕を準備して持ってきてたのが、やるぅ…っておもいました。

 

さてさて、お次は一緒に箱の中身部分を開発してくれた勝見さんの解説です。

***

箱の中身:勝見

IMG_1843

(右)

使用製品

インテル® Edison キット For Arduino
Grove – Starter Kit for Arduino
Grove – Red LED
モーションセンサ
センサータグ

 

チクるボックスがやってる事

IMG_1832

1.モーションセンサで対象人物の動きを監視

2.対象人物の動きが規定時間なければLED点灯
∟箱の向きをセンサータグで判定する。規定時間は箱の向きに応じて変化

3.さらに規定時間動きがなければLED点滅とともにサーバーにサボり情報転送

モーションセンサ、センサータグ、LEDの制御はedisonにinstallされているnode.jsで行います。

 

中身の実装

edison、arduino、Base Shieldを組み立てる

会社にあったやつは既にedisonとarduinoが合体してました。Base Shieldはハマりそうなところに挿したら大丈夫でした。

edisonを最新にする

さすがに全部当日にやるのは危険ということで、この工程は前もって試しておきました。
ここ を参考に実施しました。ただ一点注意が必要で、Edisonの最新イメージファイルだとうまくアップデートができませんでした。。いろいろやった結果 edison-image-ww18-15.zip だとうまくいきました。スタートからいきなりつまづいて幸先不安です!
当日じゃなくて良かった!マジで

edison設定

今回はセンサータグからedisonへの通信にBLE(Bluetooth Low Energy)、edisonからサーバへの通信にwifiを使用します。

パスワードの設定

 configure_edison --password

wifiの設定

 configure_edison --wifi

Bluetoothの設定
の前に念のため色々アップデートしておく。
参考

 curl http://nonnoise.github.io/Edison/_sources/Edison/base-feeds.conf -o mylist.conf
​
 cp mylist.conf /etc/opkg/
 
 du -x | sort -nr | less
 rm -r /var/log/journal/*
 opkg update
 opkg install bluez5-dev

Bluetoothの設定

 rfkill unblock bluetooth
 killall bluetoothd
 hciconfig hci0 up
 rfkill list

 

センサータグから箱の向きを取得

センサータグはnodeから触れるライブラリがあります。`npm install sensortag`を実行してできたファイルに`test.js`があります。
これを実行するとセンサータグで取得できるデータが一通り見れるます。超お手軽。
向きの判定は加速度のデータを使用します。x軸,y軸,z軸の加速度データが取得できます。

  1: {x: 0.2, y: 0.1, z: 0.8}
 ,2: {x: -0.9, y: 0.1, z: -0.2}
 ,3: {x: 0.1, y: 0.1, z: -1.2}
 ,4: {x: 1.1, y: 0.1, z: -0.2}
 ,5: {x: 0.3, y: -0.9, z: -0.1}
 ,6: {x: 0.3, y: 1.1, z: -0.2}

`test.js`で試した結果、向きによるx,y,zの値はこんな感じでした。
このx,y,zが6パターンのどこに近いかで箱の向きを判定する事としました。

モーションセンサーから対象人物の動きを取得

mraaっていうライブラリ使うとarduinoに接続されたもののデータが取得できます。モーションセンサはarduinoにくっつけたBase Shieldにくっつけて使用します。ここら辺は@hicooさんがやってくれたので参考サイトとかわかりません。とりあえずできるようです。

*ひかる追記

参考にさせていただきました!もしくは、下のLEDのときと同じです。↓
【Edison+Node.js】Node.js+MRAAでArduinoを操作してみた

 

LED光らせる

これもmraa使います。参考の`GPIO_DigitalWrite.js`にあるようにやったら光りました。

これで一通りの実装が終わりました。
確かこれやってる時には既に深夜だった気がします。

 

edisonの電源入れた時にjsを自動起動させる

参考サイトです。助かりました。これでいけます。注意点として、edisonは起動時にbluetoothの必ずoffになっているようです。
起動シェルで一緒にbluetoothをonにしましょう。

/lib/systemd/system/sensornode.service

 [Unit]
 Description=hackday node
 
 [Service]
 Environment="NODE_PATH=/usr/lib/node_modules"
 Environment="NODE_ENV=production"
 Environment="HOME=/home/root"
 ExecStart=/home/root/node_modules/start.sh
 
 [Install]
 WantedBy=multi-user.target
 systemctl enable sensornode.service
 systemctl start sensornode.service

start.sh

 #!/bin/sh
 rfkill unblock bluetooth
 killall bluetoothd
 hciconfig hci0 up
 node /home/root/node_modules/sensortag.js
chmod 755 start.sh

 

これで起動時にbluetoothをonにしつつ、対象のjsを実行する事が出来ました。

 

以上。箱の中身でした。実装中にできないものと妥協とか土壇場で決めたりとか色々ありましたが、結果として箱が形になった時はすげーなって純粋に思いました。
そういえば深夜作業中に結構でかい声でニャンちゅうのモノマネをしている人がいました。かなり似ていて僕は笑を堪えるのに必死でした

***

かつみさん、おつかれさまでした!超無茶ぶりばかりですみません。

私の「これ、おねがいします!」だけしか無い言葉に文句も言わず黙々と調べて作ってくれました。めちゃめちゃ感謝です。

あと、最近のアルカナスタッフは私のどうでもいい会話を華麗に無視するスルースキルを身につけているのですが、かつみさんはいつも付き合ってくれてやさしいのです。
でも開発日の深夜頃にはスルースキルを発揮されていました。さすがです。

 

私の解説はないのかというと、ほぼ勝見さんの解説と同じですが、もう一つが工作担当でした。

 

ちくるちゃんの工作:ひかる

ちくるちゃんの形を作る紙箱のところです。

2/14といえばバレンタインデー。お菓子をいれる箱が100均にたくさん並んでました。

適当な箱を購入しそいつで作ろうと思ったのですが、いいサイズがなかったので、買った箱を型紙にしてもう一回りおおきな紙箱をつくって、適当な目とモーションセンサー用の穴を作って、完成です。

最初は木箱で作ろうとしたら和風感がでてしまい、かわいさがなくなってしまい。
紙ねんどで作ったらごわごわ感がでてしまい…。

なんでわたしこんなことしてんだ…と、最後の最後でどきどきしました。

 

おわりに

さてさて、長くなりましたが、各スタッフにちくるちゃんの解説をしていただきました。

全員初めて挑戦することしかなくて、だいぶどきどきされたかとおもいます。
とってもお疲れさまでした。とにかく形になってよかったです。
ちくるちゃんを作ってくれて、ほんとうにありがとうございます。

また来年も・・・がん・・・ば・・・

 

さて、最後に、開発にはがっつり加わってませんでしたが、
技術的なアドバイスをたくさんくれた吉田先生からありがたいお言葉と、
何故か今回の作品とはまるで関係ないものを開発されていたので、そのお話で終わりたいと思います。

でわでわ。

 

 

おまけ:吉田

最後のおまけはエンジニアの吉田から感想です。

若者に紛れて保護者枠的な気持ちで参加したエンジニアの吉田はチーム内において常に単独行動をとり、チームメンバーからディスられ続けることを目標に頑張りました。

まず、ちくるちゃんの品質チェックを担当することになっていたため、初期の段階から徹底的にサボるということを追求し始めました。

品質チェックという大切な仕事をしなければならないという状況であるにもかかわらずサボらなければならないということは、仕事しているのだろうか。サボっているのだろうか。

そんな事を考えているパラドックスの中、気付いたら24時間を終えていましたが、私の仕事はこれだけではありません。

24時間のチーム内におけるサボり判定は、やはりその場の写真を撮り続けることで確認ができるのではないかと考え始めます。

そして、タイムラプス的な写真で記録を残したいという欲望のために、持参したWebカメラでチーム内の状況を記録に残し始めました。

Hackday開催の前日の夜中にのちょっとしたハイテンションモードの時間があったことに起因して、そのツールをおもむろに作り始めてしまったが故に、そのような行動をとってしまったのですが、どうかお許しください。

ちなみに、このツールには HackdayCaptor という名前を付けることにしました。

HackdayCaptorの開発言語として採用したのは死んだような扱いを受けているけどまだまだ画像や動画のメディアを取り扱う開発言語としては優秀で現役でも活躍しているApacheFlex(ActionScript)です。Flashが好きだったんですねと言われますと間違いなく肯定する程度には好きな開発プラットフォームです。

HackdayCaptor を起動するとこんな画面が出てきてスタート的なボタンを押すと指定秒数ごとにプロセスが殺されるまでは永遠に写真を撮り続けます。

 

omake

そして、その結果がコレ。

 

一番最後のフレームあたりで眠っているかのように見えるのが吉田なのですが、どうやら上手くサボることができている様子が伺えます。

今回は会場への集合時間に遅刻するところから始まり、最後まできちんとサボる仕事を全うできていたようでよかったです。

なお、ソースコードはこちらに置いてありますので、MXMLをコンパイルできる方はご自由にお使いくださいませ。

https://github.com/yoshida/hackday-captor