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

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

TDDBC_仙台02の課題 は 大阪 と同じです。「TDDBC C#」でぐぐると TDDBC大阪の課題をC#でやってみる ~ クラス設計とTDD という @biac さんの素晴らしい記事が既にあるのでやる意味が無い感じですが、自分なりに解いてみるのもいい勉強になるかなと思ってやってみました。 以降、何回かに分けて課題を進めます。 ASP.NET MVC4 を使用していますので、最終的には AppHarbor とかに公開して動くアプリにしたいと思います。 ### 開発環境 WIndows 8 Release Preview Visual Studio 2012 RC Professional(多分 Express でもOK) Team Foundation Service (TFS Preview) ASP.NET MVC4 MSTest Chaining Assertion ### まえおき #### Windows 8 を使用していますが、、、 XP でも同じことが出来ます。たまたま自分の環境が Windows 8 だったというだけです。 #### TFS Preview って? ソース管理+BTSです。git ではなく、VS と相性のいい TFS Preview を使いました。今は無償で TFS 同等の機能を利用できるので使いまくればいいと思います。 こんな感じでタスクを管理していました。 f:id:nnasaki:20120821012303j:plain #### MSTest って? VS に統合されている MS 謹製のテスティング[フレームワーク](http://d.hatena.ne.jp/keyword/%A5%D5%A5%EC%A1%BC%A5%E0%A5%EF%A1%BC%A5%AF)です。CTRL+R,Aのツーストロークでテストが実行でき、今の範囲のテストは 17ms で終わるのでほぼ一瞬です。全くストレスは感じません。 しかしながら、NUnit と比べると機能が見劣りするので後述する Chaining Assertion で機能補完しています。 ...

August 21, 2012 · nnasaki

Parallels Desktop で Boot Camp にインストールした WIndows8 がいつの間にかゲストOSとして起動するようになっていた

以前 Macbook Pro Retina ディスプレイモデル に WIndows 8 Release Preview をインストールする で KB Parallels が問題で Windows 8 がゲストOSのとして起動出来なかったんだけど、この間の Parallels のアップデート後起動できるようになっていた。先の KB は相変わらず更新されていないけど、私の Macbook Pro Retina, Mid 2012 では Boot Camp にインストールした WIndows8 Release Preview が起動できた。 Retina ディスプレイでは、Retina 非対応のアプリのように文字が汚いけど、なんとか動かせるレベル。Visual Studio とか使う分には困らない感じ。お試しでいれた VMWare Fusion では起動できなかったので、お困りの人は Parallels を試すと良いかもしれない。 ちなみに Parallels Desktop を使っているのに、わざわざ Boot Camp に WIndows8 を入れるメリットは何かと言うと、ゲームをやりたい時は Boot Camp で起動して最高のパフォーマンスで楽しめる。、Visual Studio を弄りたいときはわざわざ再起動させずにゲストOSとして起動させてサクっと楽しめる。 Boot Camp 領域のバックアップ方法を考える必要がありますが、おすすめです。今は Release Preview なのでバックアップしていませんが、追々考えなければなー。

August 20, 2012 · nnasaki