PyCon JP 2012(App Engine Conference 2012)でパネルディスカッションのモデレータしてきました
PyCon JP 2012に参加してきました。初めてパネルディスカッションのモデレータをつとめる事になりドキドキしていたのですが、Google App Engineに詳しいスペシャルなパネラーさんのおかげでなんとか終わりました。
当日どれくらいの人が来てくれるのか不安だったのですが、蓋を開けてみればほぼ満席になっててほっとしました。これもひとえにパネラーさんの力だったと思います。内容はいかがだったでしょうか。
- こんなステキなイベントを企画・運営して頂けたスタッフに感謝!
- 一言返事で力を貸してくれたパネラーのみんなに感謝!
- パネルディスカッションのモデレータという機会をくれたGoogle 松尾さんに感謝!
パネルディスカッション:Google App Engine を選ぶ理由
- お題
- なぜGoogle App Engineを選択したか
- Google App Engineによって開発がどう変わったか
- 向いてる/向いてないアプリケーションとは?
- 価格について(でもお高いんでしょう?)
- パネラー
- @najeira
- @tmatsuo
- @knj77
- @shin1ogawa
Link
独り言
- はてなダイアリーってspeakerdeck張れないの?
テスト駆動JavaScriptの第2章をメモ
Node塾 講義その6に行くのでメモった
Node塾で下記の読書会をする。
- 作者: Christian Johansen,長尾高弘
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2011/11/25
- メディア: 大型本
- 購入: 19人 クリック: 331回
- この商品を含むブログを見る
以下は第2章を抜粋したメモ。これを読んで頂ければわかるがテスト駆動JavaScriptはJavaScriptでTDDをするにはどうすればいいかだけに答えるものではなく、TDD未経験者でもTDDとは何なのか?どうやってTDDを身に付けるのかを記載した本になっている。興味があれば買うといいよ。そしてNode塾に参加すればいいと思いますよ。
第2章 テスト駆動開発プロセス
- テストから仕様へ
- テストは本番コードを書く前に、仕様として書かれる
- 利点
- テストがしやすくなる
- インターフェースがクリーンになる
- デベロッパーが自信を持てるようになる
- 利点
- 開発の上下をひっくり返す
- テスト駆動開発における設計
- プロセス
- Step1.テストを書く
- Step2.テストが不合格になるのを確認する
- 合格するコードを書く前にテストを実行する
- 理由
- コードの現在の状態について、私たちの理論の正しさを確かめること
- テストがどのように不合格になるのかについて明確に想定できていなければならない
- (単体テストにもバグがある)
- 理由
- 合格するコードを書く前にテストを実行する
- Step3.テストを合格させる
- テスト駆動開発プロセスにはあるリズムがあり、作られたソリューションがその時点では完璧でなくても、イテレーションを完結させたというパワーを過小評価すべきではない
- 自明の実装
- テストを合格させるために必要なだけのコードを追加する
- コードを追加させるということはふるまいを追加すること
- 追加されたふるまいは、追加された要件によって表現されなければならない
- 明確な要件を背後に持たないようなコードがあるとすれば、それは水ぶくれに過ぎない
- YAGNI「you ain't gonna need it」
- 足場
- ハードコードでもかまわない
- 何も手がかりがないのに一般的なソリューションを探さなければ先に進めないようにすると、時間を使いすぎてしまう
- 開発ペースを保つために、中間的なソリューションとしてハードコードを認めている
- Step4.重複を取り除くためにリファクタリングする
- シャンプー、リンスの繰り返し
- 1歩の大きさを大きくしたくなるかもしれないが、ひんぱんにフィードバックをもらえる状態に保つために、サイクルは短くした方がよい
- 一歩を大きくしすぎると、追跡しにくいバグや手作業のデバッグなど、このプロセスで避けようとしている多くの問題に直面することになり、このプロセスを採用した意味がなくなる
- テスト駆動開発を円滑に進めるために
- 自動テストを実行すること
- ファイルが保存されるたびにテストが実行されるようにするということ
- テストの実行は環境のほうの仕事
- 自動テストを実行すること
- テスト駆動開発の利点
- まとめ
2011年も今日でおわり
毎年、年末年始にみんなblog書いてるので私も何か書こうかなと思うのだが、特に書くことない。今年は、特別何かの技術に特化して調査したりすることもなく淡々と自分のいま持っている技術でモノを作るというのをしていた気がする。
Google App Engine
2009, 2010はGoogle App Engineの年だったけど、今年はもうただ使うというだけで特に目新しく調査したりする事もなく普通に使えるインフラになっている。なのであんまりどうこうした記憶もない。今年やったことと言えばデブサミでLT大会に参加して賞状を頂いたくらい(あとajnのLT一回)。今後も淡々と使う。来年くらいはwebsocketが正式に対応されそうな予感。
earthquake Notify
3.11に東日本大震災があって作ったchrome拡張の緊急地震速報。作る時間は2~3時間くらいだったけど今でも役に立ってる。(すぐに作れたのはatnd notifyという2010年のMA6用のアプリがあったから)
http://nanapi.jp/25687/
Help Me Tutor
クックパッドの開発コンテスト24に急遽参加しようと思って @jishiha さんと @monoooki さんを誘って参加。
課題が発表されて24時間以内にその課題を解決するアプリを作るというコンテストで今回の課題は「(普段の生活で)半径3m以内にいる人が困っていることを解決する」でした。私たちはハンズオン形式の研修などで分からないけど講師に質問できない人がいるよね。それって「わかりません」を気軽に講師に通知できればいいんじゃないのという事でHelp Me TutorというChrome 拡張を使ったアプリを作った。しかし、受賞できず。
詳細は @jishiha さんのblogに委譲するとして
私はここで得られた知見は結構あって、24時間でもそこそこのモノができるという事とやっぱり複数人で作業分担ができるといいねって事とデザイナーがいることによって予想以上に開発スピードは速くなるという事でした。
開発はまーこれくらいだったら数時間でできるだろうという目論見通りでしたが、複数人というのがいいなぁ〜と改めて思った。信頼できる二人と一緒だったからというのもあるとは思います(一緒に開発したの初めてだったけど)。複数人がいいのはどんなアプリかをブレストして構想を固めるのはもちろん、作業分担で私がこれを終わらせないと二人は進まないとか思うとそこまでは猛スピードで作れるんですよね。お互いがそれの繰り返しだった。そしてお互いが想定通りもしくはそれ以上の結果を常に返してくれるから開発してて気持ちいいんですよね。私がUIのモックを汚いHTMLで作って、@monoookiさんがかっこいいhtmlに書き換えてくれて、UIと裏側ができたら@jishiha さんiPhoneアプリの実装お願いしますみたいな。誰かが作業待ちの場合はコンセプトを見直してこの仕様でいいかなとお互いが考える時間があって充実した24時間だった記憶があります。その後の飲み会で24時間でプロトタイプを作るサービスを会社としてやろうぜみたいな話もした。実現はしなかったけどなかなか面白い気がします。
まちみえーる
構想は三年くらい前からあったものをやっと形にしたのが順番待ちシステムの「まちみえーる」これはひょんな事から @yamada_ken1 さんが手伝ってくれてリリースまでこぎつけた。@yamada_ken1 さんのおかげでリリースできた。デザインは@monoookiさんに発注した。これもHelp Me Tutorと同じ三人というメンバー構成で@yamada_ken1 さんのブレストを私が実装して(または逆)、@monoookiさんがデザインするという形だった。いままでは自分を複数人欲しいと思っていたけど、間違いだった。同じスキルセットを持つ人で開発するよりも得意分野が微妙に異なるメンバーで開発した方があれはまかせた、こっちは待っているというのが相互にいい影響を与えて気持ちよく開発できる。
また、「まちみーえる」はリクルートのMashup Awards7で受賞することができた。Mashup AwardsはMA6でatnd notifyを出したけど受賞することはできなかったのでリベンジできて良かった。
http://www.machimie-ru.com/
2012年
技術で一番注目しているのはnode.js。ノンブロッキングI/Oによる低リソースぷりは衝撃的なので押さえておきたい。気楽にwebsocketが使えるというのもいい。node.js単体でwebアプリを作るというよりも保管関係になるかもしれない。あとは、ruby on railsを使うことになりそうなのでrails勉強会とかに4、5年ぶりに参加すると思います。あと、来年こそは位置情報系のiPhoneアプリを作りたいなーと。
おっと忘れてた。いまRFIDに注目しています。なぜ今頃RFIDかと思うかも知れませんが早ければ来年、遅くても再来年にはNFCがブレークするんじゃないかなと思ってます。最近になってNFCに対応した携帯電話がではじめてきています。いままではRFIDといえば在庫だったりモノのトレーサビリティーに関するものが多かったように思いますが、携帯電話に入るという事はネットワークとRFIDがシームレスにつながると言うことなんです。これは画期的だと私は思っています。何かしらRFIDを用いた生活を豊かにするサービスを提供したいと思います。
ではでは。来年もよろしくお願いします。
Chrome Web Storeに公開しているChrome拡張のレビューコメントを取得する方法
こんな感じで取れた。Review Notifyでも作ろうかな。Reviewをメールで配信してくれたりすると嬉しいだけどないよね?
function getReviews(extensionId, callback) { var entities = [{'url' : 'http://chrome.google.com/extensions/permalink?id=' + extensionId}]; var param = {'searchSpecs': [{'entities': entities, 'groups': ['public_comment'], 'matchExtraGroups': true, 'startIndex': 0, 'numResults': 10, 'includeNickNames': true}], 'applicationId': 94 }; $.ajax({ type: 'POST', url: 'https://chrome.google.com/reviews/json/search', contentType: 'application/xml', dataType: 'json', data: 'req=' + JSON.stringify(param) + '&requestSource=widget' }).success(callback); } getReviews('bcepdinmmfbpheociaalfkhbcpekbdbc', function(reviews) { console.log(reviews); });
緊急地震速報をしてくれるChrome拡張を作りました。
3月11日(金)午後2時46分頃にマグニチュード 9.0を記録する「東北地方太平洋沖地震」が発生し今も余震が続いています。仕事に集中できないくらい余震が発生しています。この状況をエンジニアとして何か出来ないかと思いChrome拡張を作りました。
この拡張機能をインストールすると震度3以上の地震が発生した場合に通知してくれるようになります。良かったらお使いください。
- earthquake Notify(緊急地震速報)のインストール
最後に東北地方太平洋沖地震で、亡くなられた方のご冥福をお祈りするとともに、今もなお行方不明となられている方の一刻も早い救助、被災地の復興を心よりお祈りいたします。
Chrome拡張ATND NotifyでGoogleカレンダーに参加予定イベントを追加する機能を入れた話。または、ATNDの予定をiPhoneのカレンダーに入れる方法
機能追加の話
という訳でGoogleカレンダーに追加したい人はATND Notifyをインストールしてください。インストールはここから。
インストールするとイベントカレンダーにこんなボタンが追加されてます。クリックすると参加予定のATNDイベントがGoogleカレンダーに取り込まれます。
実装の話
この機能って実はボタンを一個付けただけなんです。ATND APIはiCalendar形式で出力するAPIがあるので、下記のようなURLを用意してそれをGoogleカレンダーに追加させるだけなんですね。
http://api.atnd.org/events/?user_id=6485&count=1000&format=ics
Googleカレンダーに追加する方法はここを見ればわかります
Developers Summit 2011 松尾さんのGoogle App Engine発表資料
Javaで全部書き直したコードを書こうと思ったけど力尽きた。誰かいい感じで頼む。