ICT ERA + ABC2012東北 にスタッフとして参加しました

Android のアプリは Hello World 的なことしかやったこと無くて、社内の教育でチラホラ説明がしたことがある程度なんだけど、実行委員として参加しました。公式サイトにも名前を載せていただけて光栄です。あ、ASP.NET MVC4 + jQuery Mobile というのはお仕事でやったことはあります。 いろいろ思い出しながら徒然書いてたら、4000字超えてたので時間のない人は見出しだけ追っていけば良いと思います。 概要 セッション数が約100、バザール(展示会)を同時進行という、東北のIT系イベントの中では過去最大規模のイベントだったと思います。 ICT ERAの会場である東北大学百周年記念会館 川内萩ホールは席数1235席という巨大ホールに加えて、ABC は 11教室 * 約120席 = 1320席 。さらにバザールに11教室という感じだったので、最大3000人ぐらいを想定していたと思います。(※ 思いますというのは、私は実行委員ですが、イベントを実行するための役割で、企画はしていないため把握できていません。戦略と戦術で言えば戦術となります。) 実はトラックリーダー兼会場リーダーだった! 前日に打合せがあり、その時初めてトラックリーダー兼会場リーダーという役割があることを知りました。(その前までは普通のスタッフの役割だった)なので、超焦りました。やることが10倍ぐらい多くなるし責任も重いw 運営マニュアルも毎時間更新される感じだったので、頭に叩き込んで目Grepで確認している感じでした。 当日の感想 もーバタバタでしたw 朝8時に集合して、自分のスタッフ3人と初顔合わせだったんですが、ちょっとトラブルがありました。苗字のよみがなが違っていて、出会えなかったり、実は第一セッションで話しますということがわかったりで焦りまくりでした。ですが、人生で初めてインカムを着用し気分はちょっと高まりましたw 会場の準備が大変 私の担当は開発セッション会場のリーダーでして、セッションは午後からなのでゆっくり出来るかな?と思ったんですが、午前中はバザー開催のための準備で机の移動やら荷物の移動やら、かなりの重労働で大変でした。 バザーの準備が落ち着いたら開発セッションの会場の準備にとりかかりました。こちらは講義室なのでレイアウトの変更は必要なく、プロジェクターの調整と掲示物の貼りつけ、それに電源タップの増設と養生ぐらいでよかったので楽でした。 スタッフへ役割の説明したよ ひと通り会場の準備が終わったので、今度はスタッフに役割分担とマニュアルの説明です。スピーカーの人はABCのスタッフ経験がある方で問題なし。もう一人は大学生ぐらいの実行委員。最後の3人目は学生アルバイトとしてヘルプに来たという人。 とりあえずマニュアルをひと通り説明して、司会・タイムキーパー・その他の役割をローテーションすることにした。マニュアルが非常によく出来ていて、司会進行のスクリプトが入っていたのでそれに沿って進行すれば問題なかろう、ということで、何事も経験と言って任せることにした。 お弁当が来ない! マニュアルの説明を15分ぐらいしたところで、お昼休憩なんだけど、どうやらお弁当がまだ来ていないようでした。集合時間を決めて各自解散としました。結局お弁当は30分ぐらい遅れてきました。 バザールを見てみた お弁当が来るまでの間、バザールを見てみました。お昼時間だったのもあると思うのですが、全体的にちょっと人が少ないかな?って感じでした。人がいるブースでも3人ぐらいで、誰も見ていないという所も多かったです。 第一セッションが始まった! バザールをひと通り回って、遅れて届いた弁当を口に詰めて、第一セッションの準備にとりかかりました。リーダーの役割として、講師の方の出迎え、注意事項の説明等々を粛々とチェックリストをこなしてった。講師控え室に居る方は殆ど無く、皆さん自主的に教室に来ていただけてとても助かりました。タイムキーパーへの指示、その他スタッフの指示を行い、時間も13時となり、いよいよ第一セッション開始となりました。 最初の司会は自分だったんですがとても緊張した。声が上ずってたし、噛んでいたかなー。録画されていたので、公開されたら恥ずかしいなw 問題発生! とあるセッションで講師が来ないという問題が発生して焦りました。インカムで事務局とやりとりして捜索してもいらっしゃらず、どうしようと思っていたら、直前になっていらっしゃいました。 他スタッフの司会も問題なし 自分以降の司会も不安でしたが、何も問題ありませんでした。いや、むしろ自分より上手いw 失敗が許される環境であれば、どんどん自分の仕事を振っていくということはやっぱり大事ですね。自分が何でも一番うまく出来ると思わないことが重要と改めて感じました。 最終セッションも無事終了 そんなこんなで最終セッションも無事終了。いろいろヤキモキしましたが、なんとかこなすことができました。開発セッションはどれも興味深く、後の資料公開が楽しみです。 後片付けはかなり混沌としていた 最終セッションは17:00〜18:00だったんですが、この間インカムでは「人が足りない〜」と悲鳴の嵐でした。というのも、バザール会場は17:00終了で撤収開始。メインの萩ホールは17:30終了で撤収開始。さらに懇親会は18:00受付開始で会場・受付準備。ということで、それぞれの会場で行き場を失った方達が一斉に懇親会会場に向かうので、行列が出来ますし場所の問い合わせもあるし。 自分の会場は18:00に終わったので、5分ぐらいで後片付けをしてサッサと終わらせた。で、どこに行けば良いかというと、バザールが全然片付けられていないということでバザールに向かいました。 後片付けが終わらない〜 バザールの一階の片付けが6教室中2つ程度しか終っていなく、手伝うことになりました。インカムでヘルプを呼んでも懇親会会場でみんな手がいっぱいだそうで、100人ぐらいスタッフ居るのに5人も来れないってホントかなーって思いつつ粛々と机を並べておりました。 しばらくしたら、増援部隊が来てくれてなんとか終わらせることができました。 この時18:30ぐらいだったかなぁ。 懇親会に行こうとしたら、今度は荷物の返送でガヤガヤしてたので向かってみると、ガムテープが無いとかだったので運送のおじさんに借りたりとかしてました。(ガムテープは全部使いきってしまってゴメンナサイしました。。。) ようやく一段落してこの時時計は19:00ぐらいだったかな。 ようやく懇親会に出られるもご飯が無い 懇親会会場に到着すると予想以上の人でごったかえしていました。懇親会が始まって1時間ぐらい経過してたので、テーブル上の食べ物はほぼ皆無。唯一残っている牛タン焼きには行列という感じでした。 仕方なく行列に並んでようやく牛タンをゲットしましたが、Angry Birds の Antti Sonninen が牛タン食べたこと無いって言うので上げちゃいましたw Antti はすごく日本語が堪能で、ビックリしました。英語で会話にチャレンジしようとも思いましたが、おとなの英会話を20回分ぐらい撮り溜めしているのを思い出したのでやめました。次はちゃんと消化してから会話したいと思います! 二次会は楽しかった 懇親会も終わり、また会場の片付けが〜って思ったら、ここは従業員の方々が片付けてくれるということで胸をなで下ろしました。 二次会は最初30人ぐらいの予定だったのですが、最終的には70人になったそうです。やっぱり一番盛り上がったのは、アリTVさんの平成の仙台四郎ことだいちさんによるジャンケン大会ですね。腹抱えて笑わせてもらいました。どーもプロっぽいと思ったら元芸人さんだったんですね。さすがです。 ...

October 22, 2012 · nnasaki

ICT ERA + ABC2012東北 には Web API があるよ!

公式ページにも書いていないので知らない人が多いのでは?以下、佐々木さんの投稿を facebook から転載っです。============================================ ‎[ICT ERA + ABC2012東北] 開催まであと4日に迫りました。 あと、4日のこのタイミングで申し訳ないのですが、実は [ICT ERA + ABC2012東北]のWebページは、Web APIも 公開しています。直前となりますが、カンファレンス案内アプリを大募集しています!今回は、Web APIの解説のホームページを用意している暇もないので すが、前回のABC2012Sと同じプロトコルになっている模様です。前回のページを参考に、Web APIのURLを発掘してみました。━━━━━━━━━━━━━ ▶ 講演一覧 ━━━━━━━━━━━━━ http://www.android-group.jp/conference/ictera-abc/api/conference/返り値: XMLでかえってきます━━━━━━━━━━━━━ ▶ バザール一覧 ━━━━━━━━━━━━━ http://www.android-group.jp/conference/ictera-abc/api/bazaar/返り値: XMLでかえってきます━━━━━━━━━━━━━ ▶ 会場Live(当日稼働するかはまだ未定) ━━━━━━━━━━━━━ http://www.android-group.jp/conference/ictera-abc/api/live/返り値: XMLでかえってきます詳細は、前回のABCのWeb APIの解説ページを参考にしてください。 XMLの構造はほぼ同じになっています。 ━━━━━━━━━━━━━ ▶ ABC2012S(前回)のWebAPIの解説 ━━━━━━━━━━━━━ http://www.android-group.jp/conference/abc2012s/api/たった4日で、「Androidアプリを開発できたよ!」という勇者の方は、 この投稿にReplyしてください。全力で拡散いたします! ============================================

October 17, 2012 · nnasaki

Nexus 7 を買った

実はポチッていました。 9月末の発表の夜に Google Play でポチりました。 届いたのは10/1の日中で、仕事から帰宅して子供を寝かしつけてから遊びはじめました。感触としてはサクサクでとても良いです。iPad とか他のタブレットは持っていなくて他の人のを触っただけなんですが、ホーム画面の操作感は iPad に遜色ないと思います。 ただ、Chrome がちょっと指に遅れてスクロールがついてくるのと、アプリによってはスクロールがガクガクしてしまって、残念なものがあります。(はてぶアプリの内蔵ブラウザっぽいのが特に顕著) Android の端末はまだよくわかっていないので、いろいろアプリを入れて遊んでみたいと思います。

October 6, 2012 · nnasaki

Android 4.0 の使用中に1週間で再起動が2回

mnp して、1週間ばかり Xperia™ GX を使っていましたが、操作中に再起動が2回ありました。1回目は電話帳操作中に何も押せなくなって、操作が効かなくなったら再起動。着信履歴があって、妻が電話したらしかったです。 2回目はデザリング中にアプリをいじってたら再起動。 これが Xperia のせいか Android 4.0 のせいなのかわかりません。 LTE との通信の兼ね合いもあると思いますが、Galaxy SIII と比べてみたいと思います。ちなみに実は買っていた Nexus 7 (Android 4.1) は非常にサクサクで軽快です。

October 6, 2012 · nnasaki

docomo に mnp した

タイトルの通り、docomo に mnp しました。自分の2台の携帯(au, softbank)と、妻の1台(au)で合計3台。 なぜ、自分が2台持ちだったかというと、2年前にガラケー(au)に追加して iPhone4 (softbank) を購入したからです。 ガラケーを維持したかったのは、当時スマホの可用性が信じられなかったから。今は iPhone は十分に信頼できると考えています。で、次になぜ docomo へ mnp したかという疑問があると思いますが、いろいろ計算した結果ドコモが一番安くなるからです。 理由はスマホを買うと月々3500円程度の割引が受けられるため基本料が無料になるのと、2台持ちするとプラスXi割引でパケット代が3980円になるので、月々1000円ちょっとでパケホーダイになります。ここらへんの詳しい計算は携帯電話・スマートフォンの維持費を0円無料にする方法 - MNPプランナー スマートフォン携帯電話の利用料金・維持費を安くする方法を参照していただくと良いと思います。私は Galaxy SIII(SC-06D) と Xperia GX (SO-04D) に変えました。 使用感についてはまた別記事で…

October 6, 2012 · nnasaki

Sapporo RubyKaigi 2012 に行って来た

f:id:nnasaki:20120915102213j:plain Ruby よくわかんないけど、とりあえずどんなもんかなって雰囲気だけでもと行ってみました。 詳しいことはレポート:Sapporo RubyKaigi 2012 スペシャルレポート|gihyo.jp … 技術評論社のほうに詳細に記載されているので、そちらを見たほうが良いと思います。 以降は、私個人の感想を書きます。 ### 1日目 井原正博さんの「クックパッドのつくりかた」が一番グッと来ました。 「やりたいこと」と「得意なこと」と「やるべきこと」の3つを満たすことをする。それを実践すれば会社の評価も必然とあがる。でもそれを見つけるのは用意ではない。 この話は技術者ではなく起業家向けというか誰にでも話せる内容だなぁと思いました。 ### 2日目 やはりMatzこと[まつもとゆきひろ](http://d.hatena.ne.jp/keyword/%A4%DE%A4%C4%A4%E2%A4%C8%A4%E6%A4%AD%A4%D2%A4%ED)さんの key note ですね。 最近 Perl があるのになんで Ruby を作ったのか?と質問され、Ruby は車輪の再発明で、人的リソースを無駄にしていると言われたそうです。 「どう思いますか?(Rubyカンファレンスで聞くのは卑怯なんですけど)」 マンパワーじゃなくてモチベーションが重要で、私たちは機械じゃない。車輪の再発明かもしれないけど、多様性は悪ではないと思っている。Ruby が何故成功したかは正直わからない。(インタビューの時はわからないと言うと嫌な顔されるので、コミュニティがーとかオープンソースがーとか言うようにしている) 一生懸命プレイしている野球少年に「でも、君はプロになれない。」といったらどう思うか?それは人的リソースの無駄使いなのか? 多様性によって無駄な重複はあるかもしれないけど、いずれ自然淘汰され必要なものだけが残っていく。Ruby はWebは大体制覇した Cookpad が Ruby で作られているんだよっていっても、奥さんが信じてくれない(笑)Ruby は自分の思考に合致する。 自分と同じような人が多いから広まっているんじゃないか。We Code, Therefore We Are「我らコードを書く,故に我らあり」 僕が思うに、Ruby は多様性によって生まれ、そして(必要だから)残ったのかなぁと思いました。 Aaron Pattersonさんの話もよかったです。最初はサラミを作るという話だったんですが、サラミの温度や湿度管理をデータ化してRubyで統計を取得して表示するという最後は We Code というテーマに結びつけるという見事な内容でした。 ### 2日目懇親会 懇親会会場が2つに別れていて、スピーカーの人たちとはあまりお話出来なかったんですが、Matz がフラフラと歩いていて、「サインください」って言ったらしてもらえたw うちわにしてもらったんで、ちょっと見づらいですね。 Matzのサインもらった! #sprk2012 twitter.com/nnasaki/status…— 山本誠樹/Masaki Yamamotoさん (@nnasaki) 9月 15, 2012 id:shuji_w6e さんと出会えたこともよかった。TDDBC 札幌を主催しているかたで、いろいろ悩みとか共有したりできてよかった。JUnit本を現在執筆中ということで、期待しています!(Java よくわかんないけど) ### 3日目 宿がなくて前日が漫画喫茶で宿泊ということで疲れがピークであまりセッションを聞いてなく。。。モクモクとコード書きをしていました。自動販売機ネタを ASP.NET MVC4 で Web アプリ化するとどうなるかとか。その後飛行機の時間もあったので、15時ぐらいに会場を後にしました。 ### 全体的な感想 最初はボッチで[Ruby](http://d.hatena.ne.jp/keyword/Ruby)もよくわかんないのに行ったので、親戚のおじさんのお葬式に突然一人で現れた子供みたいな感じ(どんなんだ)で、しかも Windows 8 に [Visual Studio](http://d.hatena.ne.jp/keyword/Visual%20Studio) 立ち上げて [c#](http://d.hatena.ne.jp/keyword/c%23) とかしていたので、[Rubyist](http://d.hatena.ne.jp/keyword/Rubyist) たちに撲殺されるんじゃないかとヒヤヒヤしていました。 そしたら、ばったり@nemorineさんと会って心強くなり、TEF道の方々も紹介していただいて本当に良い出会いができました。こういうイベントはただセッションを聞くだけだったら、インターネット経由で見れるので参加する必要は無いと思います。しかし、人と人との出会いが生まれるのはその場所なのだなと思います。セッションには無い部分を求めて行くべきなのかなと思いました。次回行く時は Ruby になんらかの貢献をして、スピーカーとして参加したいです。 ...

September 17, 2012 · nnasaki

jQuery.flickSimple.js で a タグじゃない要素のクリックイベントを拾いたい

ページ全体じゃなくて div で区切ったテーブルとかリストだけスクロールさせたいときに jQuery.flickSimple.js というのを使っている。これはタッチで任意の要素をフリックでスクロールできるからすごく便利なんだけど、とある要素をクリックしたというイベントが a タグが入っていないと発生しなくて困った。例えば、$(’#verticaly’).on(‘click’, ’li’, function(){ alert(“test”); }); っていうのを無理やり追加してリストにクリックイベントを追加したとしても、フリック時もクリックと判定されてしまうのでうまくいかない。 デモは以下。 ちょっと見にくいですが、縦にフリックでスクロールが出来ます。 jQuery.flickSimple.js は onClick イベントが用意されていて以下のように書くことでクリックイベントを拾えるようになる。 ところが上記の onClick イベントは a タグがある場合のみ有効となっているようで、上記HTML から a を取り除いてしまうと以下のようにクリックイベントが起きない。 GitHub のソースを見ると下記のようになっていて、意図的にはじいている。 touchend: function(e) { var o = this; if ( o.disabled || o.startX === null || o.startY === null ) { return; } o.startX = null; o.startY = null; if ( o.anc && ! o.touchhold ) { if ( o.onClick ) { o.onClick( o.anc ); } ```ちょっと見づらいですが、以下のように改造してみました。//+としているのが追加したところです。 touchend: function(e) { var o = this; if ( o.disabled || o.startX === null || o.startY === null ) { return; } // chg アンカー以外のクリックイベントに対応させる var te = o.touchable ? e.originalEvent.touches[0] : e; //+ var nowX = te.clientX; //+ var nowY = te.clientY; //+ ...

September 13, 2012 · nnasaki

ASP.NET MVC4 で css の自動縮小をすると css に記載した画像が読み込まれなくなることがある

例えば以下のような構成の場合。 `Content | | [jquery](http://d.hatena.ne.jp/keyword/jquery).mobile-1.1.1.[css](http://d.hatena.ne.jp/keyword/css) | +---images | [ajax](http://d.hatena.ne.jp/keyword/ajax)-loader.gif ` BundleMobileConfigに以下のように定義されています。 ` bundles.Add(new StyleBundle("~/Content/jquerymobile/[css](http://d.hatena.ne.jp/keyword/css)").Include("~/Content/[jquery](http://d.hatena.ne.jp/keyword/jquery).mobile-{version}.[css](http://d.hatena.ne.jp/keyword/css)")) ` 上記 css には以下のように定義されている。 `url(images/[ajax](http://d.hatena.ne.jp/keyword/ajax)-loader.gif) ` するとデバッグ時は良いがBundleTable.EnableOptimizations = trueを指定して縮小させると画像のURLが以下のようになり読み込めないとエラーになる。 `[http://localhost:1509/Content/jquerymobile/images/ajax-loader.gif](http://localhost:1509/Content/jquerymobile/images/ajax-loader.gif) ` 理由はBundleの定義でjquerymobileをフォルダのように記載してしまっているため、cssのURLが以下のようになるから。 `[http://localhost:1509/Content/jquerymobile/css?v=pFGS97cnbEIzXqbDbNmSv2vLBmv9zHVSGkyxN7zB0Qc1](http://localhost:1509/Content/jquerymobile/css?v=pFGS97cnbEIzXqbDbNmSv2vLBmv9zHVSGkyxN7zB0Qc1) ` 解決策は / ではなく . にすればよい。 ` bundles.Add(new StyleBundle("~/Content/jquerymobile.[css](http://d.hatena.ne.jp/keyword/css)").Include("~/Content/[jquery](http://d.hatena.ne.jp/keyword/jquery).mobile-{version}.[css](http://d.hatena.ne.jp/keyword/css)")) ` このように BundleCollection に css を加えるときは勝手にフォルダを追加しないようにすること ちなみに自動縮小っていうのは、ASP.NET MVC4 の新機能で javascript と css の改行コードを削って容量を小さくしてくれる機能です。普段のデバッグ時は無効になっていて、有効になる条件は2つ Web.config の compilation 要素が false の場合 Global.asax の Application_Start() で BundleTable.EnableOptimizations = true と設定した時 デバッグ時に無効になっているので、IIS にいざデプロイした時に「あれ画像が表示されねー」って悩むかもしれません。 上記の例で上げたのは jQuery.Mobile.MVC という割とメジャーな NuGet パッケージを使用すると発生する問題なので修正したいんですが、CodePlex や github 見てもプロジェクトが見つからないのでメモ書きするぐらいしか無いという状況。

September 8, 2012 · nnasaki

TDDBC_仙台02の課題をC#で素振り(ステップ2 〜 4まで)

前回はTDDBC_仙台02の課題をC#で素振り(ステップ0 〜 1まで) - nnasakiのブログ課題 → 大阪と一緒 子供の夜泣きでちょこちょこ起きるので、こっそりやってました。gist だと履歴の差分が見れないっぽいので、 github で公開してみました。TFS で作業しているので、TFS から git に変換する必要があって、git-tfsというのを使用して変換してみた。けれどもステップごとの作業内容は TFS のタスク(付箋)として扱っていて、コミットログは実装の内容だけしか書いていなかったので、分かりにくいですね。おまけに TFS の CI で自動ビルドした内容も含まれているのでコミットログが追いづらい。Announcing Git Integration with TFS - Brian Harry’s blog - Site Home - MSDN Blogsというのを MS の中の人が作ったっぽいので、そっちだともっと見やすくなったりするのかな?とりあえず今はこのままで。 前置きが長くなりましたが、ステップ4までやってみました。C#っぽいところを gist に抜き出してみました。49行目の自動販売機の在庫を取得する処理に LINQ を使ってみました。ラムダを使用するとコードの行数がグッと減っていいですね。次回は ASP.NET MVC4 と絡めていこうと思っていますが List のデータ構造が DB になってもほとんど実装を変更せずに行けるはずです。

September 6, 2012 · nnasaki

第12回 DDD(ドメイン駆動設計)勉強会に行って来た

イベント案内 | 2012-08-31 (金) 第12回 DDD(ドメイン駆動設計)勉強会 - 東北デベロッパーズコミュニティ エリック・エヴァンスのドメイン駆動設計 目次今回で記念すべき1周年でした。「第14章 モデルの整合性を維持する」を読み進め、共有カーネル(SHARED KARNEL)までと腐敗防止層(ANTICORRUPTION LAYER)を議論しました。 初参加の方もいらっしゃり、とてもエクスパートな方で 「KARNEL って KERNEL のスペルミスですよね?」という早速鋭いツッコミをしていました。正誤表には載っていないようですので、教えてあげたほうが良いかもしれません。内容は「第4部 戦略的設計」に入り、だいぶ実践的な内容になってきたと感じました。今までの論調は完璧なドメインモデルを目指しすぎていて、正直机上の空論とも思える時がありました。今回は2つのコンテキストの統合について論じられており、レガシーシステムを統合するには何を意識するか、ファサードとアダプターとファクトリを駆使する等でとても参考になった。一応 .NETer(笑) として MS に関連した情報を紹介しますと、 MSDN にもベストプラクティスとして ドメイン駆動設計の概要 というような記事がありますし、最近買ったプログラミングMicrosoft ASP.NET MVC ASP.NET MVC 3対応版 (マイクロソフト公式解説書) も標準で作成される Model, Controller, View 以外にも Controller の汚染を避けるため、Service, Repository, DomainModel を作成することが推奨されています。 何が言いたかったかというと、DDD はもはや新しいことではなく、当たり前になりつつあるということです。私も現在のプロジェクトには出来るだけ適用するようにしています。(まだまだ稚拙ですが・・・) 私自身はデザインパターンの理解はまだ完全では無いし、本の内容も理解しきれていません。まだまだ足りないことだらけだなぁと改めて気付かせてくれる大変良い機会でした。次回も是非参加したいと思います。

September 1, 2012 · nnasaki