年末年始にやったことメモ

せっかくの休みなのに、所用で友人との忘年会2件ぐらい参加できなかったので黙々とプログラミングをするとか、とても勿体ない年末年始を過ごした。 忘れないうちにやったことと感想をメモしておく。iOS と Play Framework と Rails をやった。 iOS 2歳の息子が電車とか車が大好きなので、あいうえお順に電車を表示するアプリを作った。単純に page based application で写真を表示するようにしただけ。写真は wikipedia から拾ってきた。写真のライセンスを確認していなかったので、ソース公開は現時点でちょっと控える。写真のライセンスを確認したら公開したい。 今後やりたいことは2つある。 起動時にメモリにガッって、全写真を読み込むのでとてもよろしくない。Core Data やらを勉強してページごとに動的に読むように改善したい。 写真のリサイズは iOS 6 だと自動でやってくれるけど、iOS 5 だとやってくれないのでなんとかしたい。でも面倒なので iOS 6 な iPad を購入して息子に与えてしまった。お金で解決できることはお金で解決してしまうというのが最近のモットー。ヴァイヤイヤイヤイヤー、 Play Framework いまさらながら、Web+DB vol 71 を見ながら写経してみた。やってみた感じ、View は Razor なので ASP.NET MVC と同じ感じで組めてすんなり入れた。けれど、SQLを直接書く必要があったり Model と Controller は Scala で書かれたコードを見てもイマイチ理解できなくて、今後使うことは今のところ無いかなという感想。 非同期やホットリロードという魅力的な利点があることは理解したので、今後 Scala 力が高まったらまた試してみたいと思った。 Ruby On Rails お仕事でプロトタイプを作成するのにちょっと使った。だいぶ前にハローワールドぐらいはやってたんだけど、テストや配信周りを含めて本腰入れてやってみた。 Assets Pipeline とやらの仕組みが最初わからず、なんで jQuery やら SASS やらがロードされるのかわからなかった。あと、Production で Deploy するとそこら辺でエラーになったりとか。 けれど、ググればなんとかなった。持っている本は Rails 1.x や 2.x の頃で、現在の3.2とは異なりすぎていて吹いた。 今のところ Play よりは理解できているので、もうしばらくいじってみたいと思う。Rails だけでなく、テストに RSpec や Cucumber を使ったり、本番環境への配信も Chef やら Capistrano 等の Rails 周りのやつも使っていきたい。開発・テスト・デプロイとすべて一貫して Ruby でできるあたりに、Rubyist の Ruby 愛を感じた。 ...

January 9, 2013 · nnasaki

あけましておめでとうございます

あけましておめでとうございます。今年もよろしくお願いします。 1/6までお休みなので、去年の振り返りと今年の目標をゆっくり決めようかなと思っています。

January 1, 2013 · nnasaki

デシジョンテーブルを使用してテストしてみよう #TddAdventJp

この記事はTDD Advent Calendar jp: 2012 : ATND の6日目です。 前日(5日目)は @a_suenami さんの 受託開発でTDDを導入するということ でした。 デシジョンテーブルを使ってテストしたい! 仙台で行われている、仙台ソフトウェアテスト勉強会とデシジョンテーブルとSpockで試すTDD(ネタ) - pocketberserkerの爆走にインスパイアされ、テスト技法としてデシジョンテーブルを書いた後に、具体的にどのようにテストの自動化を行うか考えてみました。 今回は(も?)FizzBuzzをお題としたいと思います。 デシジョンテーブルとは? デシジョン・テーブルを活用するを参照してください。以下引用します。 デシジョン・テーブル(ディシジョン・テーブル)は decision table、 つまりそのまま訳せば「決定表」です。 様々な事情・条件を考慮して、 何かを「決める」ときに、 それを表形式で表現する方法です。 SpecFlowを使用する id:pocketberserker さんは Groovy で実践していらっしゃいますが、私は c# でデシジョンテーブルを表現できないか試行錯誤してみました。テーブルの表現は Ruby on Rails の受け入れテストでよく使用される Cucumber でできそうです。 c# では Cucumber は残念ながら使用できませんが、同じDSL(Gherkin)を使用できる SpecFlow というツールで代用ができそうです。 環境設定 以下の環境で試しています。 Windows 8 Visual Studio 2012 Professional (Expressは拡張が入らないので非推奨) c# また、Visual Studio の「拡張機能と更新プログラム」から次の拡張をインストールしてください SpecFlow 実践 Project Setup | SpecFlow とだいたい同じように進めますが NUnit ではなく MSTest を使用し、さらに Chaining Assertion を使用します。xUnit 系とは少々異なる記述となりますが、単純に好みの問題です。 SpecFlowプロジェクトの作成 Visual Studio にて c# のクラスライブラリを新規作成します。名前は「FizzBuzz.Specs」とします f:id:nnasaki:20121201015902j:plain Class1.cs は不要なので削除します ...

December 6, 2012 · nnasaki

DDD勉強会に行った

f:id:nnasaki:20121201001323j:plain 主催者多忙によりおよそ2ヶ月ぶりの開催。結局、今日もこれなかったんだけど今年最後になりそうなので、みんなで開催することにした。 久しぶりにやれてみんなで毒吐きまくりで、いつもながら楽しかった。 初めてF君も発表していい経験になったんじゃないかなーと思う。 今年は一回ぐらいしか発表できていないので、来年も発表したいですね。 飲みに行きたかったけど、明日は会社の研修があるので今日は残念ながらキャンセルした。ここら辺も来年はサッといけるようにYAuthの認証を得ておきたい :-)

December 1, 2012 · nnasaki

Visual Studio 2012 周りをアップデートした

community technology preview (CTP) for Visual Studio 2012 Update の vsupdate_KB2707250.exe、Microsoft ASP.NET Fall 2012 Update BUILD Prerelease、Type Script 0.8.1 をインストールした。 それぞれのダウンロード先は下記の通り。 Download: Visual Studio 2012 Update 1 CTP 4 - Microsoft Download Center - Download Details Download ASP.NET Fall 2012 Update from Official Microsoft Download Center Download TypeScript for Visual Studio 2012 from Official Microsoft Download Center 目的は特になくてなんとなくやってみようかなーぐらい。ASP.NET に knockout.js と Web API のテンプレートが追加されていて良い感じ。これでなんかネタ作れないかなー・・・。 あとは neue cc - Microsoft Fakes Frameworkの使い方 にて知ったんですが、Provide Microsoft Fakes with all Visual Studio editions – Customer Feedback for Microsoft に期待しています。 ...

November 27, 2012 · nnasaki

ソフトウェアテスト勉強会に行って来た

f:id:nnasaki:20121116215807j:plain ソフトウェアテスト勉強会~やってみよう!デシジョンテーブル&状態遷移~ - TDC - ニュース - 東北デベロッパーズコミュニティ 写真 は21歳誕生日を祝っての21個のイカリングスカイタワー写真です。 テスト勉強会は0回以降参加していなかったので、ようやく参加できた。講師は@nemorineさん。 デシジョンテーブルと状態遷移は結合テストと思い出したくない強化テスト(結合テスト以降でバグがいっぱいあるとやる)で作ったなーと懐かしながらやっていた。 ジョジョネタがところどころ出てきましたが、残念ながら不発ッ!学生もチラホラいるので、ついてこれなかったかしら。 デシジョンテーブルと状態遷移図(表)はJSTQBテスト技術者資格認定-シラバス(学習事項)・用語集-では「〜という役割である」という説明だけで、作成の仕方までは解説されていないので、実際に手を動かして作るのはとても参考になった。 いくつか覚えていることを箇条書きメモ。 デシジョンテーブル 入力条件(縦軸)は同値分析を行い、2のべき乗で増えていく条件を出来るだけ減らすこと。 条件指定部(横軸)の組み合わせも同様に圧縮できる。設計時には便利だが、テスト時はやり過ぎると試験項目漏れとなるので注意。 真偽値は綺麗に書く。バラバラに書くと網羅しているかパッと見分かりづらいから。 コツは入力条件が3つなら2**3 = 8通りとなるので、一番目の入力条件はYYYYNNNN、2番目の入力条件はYYNNYYNN、3番目はYNYNYNYNとして機械的に書く。 三番目の機械的に書くのは表にするとこんな感じ。Yを半分ずつに減らし(分割し)て書いていくのがポイント。自分は知らなかったので、おーなるほどーと思った。 入力条件 条件指定部 クーポン YYYYNNNN 平日 YYNNYYNN 学生 YNYNYNYN 状態遷移テスト 状態遷移図で条件漏れは発見しにくい。理解をしやすくするものとして、図を元に表を作ると良い。 UML の状態遷移図を使用しても良い 状態が遷移する間、初期状態からイベントをいくつか経由して初期状態に戻った時、イベントの同時実行等に注意する。 勉強会後の懇親会はほぼ全員参加で14人も集まった。 なんと昨日誕生日と明日誕生日というニアピンな人が二人もいたので、低音なハッピバースデーで祝った。 生搾りパイナップル絞りサワーが大人気で、うまかったけど、酵素のせいか飲めば飲むほど酔いが覚めるという意見もあり。 c#erいないすかね、という話をしたら「僕は.NETが嫌いなんでc++でゴリゴリですね」という強者もいて、なかなかc#使いには肩身が狭い世の中です。 次回は12月15日(土)にゲストを招いてテスト技法の勉強会を予定しているそうで、HAYST法を使ったりするようです。私は残念ながら既に先約があって行けません(とても行きたい!)が、皆さんは予定をあけておくと良いと思います!

November 17, 2012 · nnasaki

Parallels Desktop から BootCamp の Windows 8 が起動しなかった

f:id:nnasaki:20121114061951j:plain 問題 Parallels Desktop から BootCamp の Windows 8 を起動しようとしたところ、下記エラーとなった。 **Boot Camp パーティションのハードディスクを構成できませんでした。 ディスク構成エラーが発生しました。ディスクに対する読み取り/書き込み権限があることを確認して下さい。 f:id:nnasaki:20121114062034j:plain 詳細を押すと下記のメッセージが出た。 Error: PRL_ERR_DISK_GPT_MBR_NOT_EQUAL (0x80021065) f:id:nnasaki:20121114062137j:plain 解決策 rEFIt - An EFI Boot Menu and Toolkit をインストールして、MBR と GPT の不一致を解消すれば良い。 んで、試す前に注意を。 rEFlt はブート領域を書き換えるので、最悪 Mac が起動しなくなるリスクがあります**。USB メモリにインストールとかも出来るようですので、心配な人はそっちを試したほうがいいです。 リスクを理解した上で、私が行った具体的な手順は下記の通り。 1.rEFIt 0.14 (6.5M Mac disk image) をクリックしてダウンロードする 2.イメージをマウントして、Finder から rEFlt.mpkg をクリック 3.インストールを進めていく 4.再起動 5.Boot 画面が rEFlt になっていなく、Mac OS が起動 6.もう一度再起動する。わりとここが重要っぽいです。 7.Boot 画面が rEFlt になっていた 8.Start Partitioning Tool を選択 f:id:nnasaki:20121114053358j:plain 9.May I update the MBR as printed above? [y/N] とでるので、yを入力してエンター ...

November 15, 2012 · nnasaki

Android の自作ホームアプリでホームボタンが効かないときの対処

Android のホームアプリの情報って少なくてハマったので断片だけメモ。 ホームアプリは AndroidManifest.xml に<category android:name="android.intent.category.HOME"/>を追加すればいいだけ。 大体これでクリアできたんだけど、再起動後に問題があって、ホームボタンを押してもうんともすんとも言わない。正確にはイベント(onCreate()やonResume()等)が来ない状態となってしまった。 SDKに付属しているサンプルのホームアプリも同様の現象が起きるようだった。android-sdk-macosx/samples/android-16/Home/src/com/example/android/home/ こういう時はオープンソースの強みということで、デフォルトのランチャーのソースを見ることにした。https://android.googlesource.com/platform/packages/apps/Launcher2 結果、 AndroidManifest.xml の activity に以下が記載されており、自作ホームアプリに組み込むことでイベントが来るようになって解決した。 `android:stateNotNeeded="true" android:clearTaskOnLaunch="true" ` AndroidManifest.xml 詳細を見ると、clearTaskOnLaunch の効果があったのかなと思います。 こういうことはデバッガで追ってもわからないし、LogCat にも何も出ないし、Android Hacks にも載ってなかった。もうちょっと Android の基礎力が必要と感じました。

November 5, 2012 · nnasaki

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