merさんのブログ

YEOMAN Advent Calendar 19日目:generator-graybullet-cordova を紹介します

このブログエントリは YEOMAN Advent Calendar 2014 の 19 日目の記事、generator-graybullet-cordova の紹介です。18 日目の記事は yoheiMune さんの [フロントエンド] スキャフォールド機能を提供するYEOMANに入門するでした。

最近 C# を離れて Apache Cordova を使うようになりました。

Windows 8 は世界が変わる

Windows 8 が多分今年発売されると思うんですが、多分世界が変わると思います。

スタートメニューがどうたらとか言っていますが、一番の問題は Metro スタイルアプリです。Windows 7 以前では動作しないんですね。旧来のデスクトップアプリケーションのほとんどはそんなことはなく、ちょっと前までは Windows 2000 での動作をうたったアプリケーションも多かったくらいです。

こういう状態なので、ほとんどのベンダーは Windows 8 でしか動作しない Metro スタイルアプリではなく、デスクトップアプリケーションで提供すると思います。

ここで「もし、Metro スタイルアプリが主流になったら」を考えてみます。

何がおきるかというと、事実上 Windows 7 以前の OS が過去の遺物と化すのです。

例えば、「うちのパソコンなんか調子悪いんだけど」でパソコンに詳しい若者を連れてきても、「デスクトップの使い方わかんない」で終わるとかですね。操作方法を教えてもらおうにも全く違うわけで。

逆に「もし、Metro スタイルアプリが主流にならなかったら」を考えてみます。

今と同じですね。でも、このときはおそらく、コンシューマ向けの端末の市場を iOS や Android に奪われているでしょうね。

積み本リスト

去年までに読めなかった書籍のリストです。それ以前に買ったものも含まれています。

モジュール指向とオブジェクト指向と

tag: 

ちょっとモジュール指向について書いてみます。

オブジェクト指向の書籍などで、よく「オブジェクト指向を使えば再利用性が高まる」といったことが書かれていますが、意外となぜ? というのが分かりにくい気がします。そのあたりを軽く説明してみます。軽くないですけど…。

実はオブジェクト指向というのは手法です。目的ではありません。そこに注意です。

本来なら、手法を模倣するだけで目的を果たせるというのが理想です。お菓子作りで使うクッキーの型抜きがいい例だと思います。まるい均一な大きさのクッキーを作りたければ、まるい型を使えばいいわけです。(生地とか焼きむらの話はこの際無視して!) この場合、「まるい均一な大きさのクッキーを作る」が目的で「まるい型を使って抜く」は手法です。この手法は誰でも同じ目的が果たせます。

それに対して、手法を模倣するだけでは目的を果たせないものも多いです。例えば自動車を使えば (手法) 遠くまで行く (目的) ことができますが、そのために覚えなければいけないこと (手法の学習) はたくさんあります。目的が VIP を安全にかつ快適に目的地まで運ぶことに変わったら、更なる手法の学習を要求されます。

TortoiseHG や VisualHg で TortoiseMerge を使う

tag: 

最近はもっぱら Subversion じゃなくて Mercurial を使っているのですが、使い慣れたせいか diff/merge は TortoiseSVN 付属の TortoiseMerge が使いやすいです。というか、やっぱりどのバージョン管理を使っても diff/merge は同じもの使いたいです。

まずは TortoiseHg で TortoiseMerge を使う方法です。

TortoiseHg の設定の TortoiseHg のところに、"3-way マージツール" と "GUI 差分表示ツール" で "tortoisemerge" を選ぶだけ! 調べまわって、mercurial.ini いじって苦労してうまくいかなかったのに、こんなに簡単にできるなんて…。

VisualHG で TortoiseMerge を使うのもあっけなかったです。

とても便利なデコンパイラ dotPeek

ReSharper で有名な (と言ったら Java 系の人から叱られそうですが) JetBrains 社が .NET Framework 用のデコンパイラを dotPeek を作ったようです。

.NET Framework 用デコンパイラは .NET Reflector が有名なんですが、有償版のみになるとのことで、買わないとなあと思ってた矢先、dotPeek が出まして。いやまあ、さんざんお世話になってるので、$35 くらい払っても全然かまわないのですが。

というわけで、dotPeek の特徴を翻訳してみます。

またまた! ブログをホストしているサーバーを移行しました

今までこのブログは ServersMan@VPS を利用していましたが、結構いろいろなトラブルがあったので引き揚げることにしました。

一番安いプランなので、メモリ不足で動作不能に陥るのはまあ我慢するにしても、DTI VPSの大部分がオープンプロキシになっていた件についての件はちょいといただけない。

代わりに契約をしたのはさくらの VPS です。こちらの方が劣る点としては IPv6 がないことくらいかな。いまだに IPv6 には手を出していないので問題ない。いや、手を出したいんですけどね…。

先月のうちに契約や準備は済んでいたんですが、忙しくてなかなかすすめられず。なんとか今日移行完了しました。あともうちょっといくつか引っ越ししていないのがあるので、それを移動させれば完了です。

今のところ順調です。心なしか ServersMan@VPS よっか速い気がします。値段は倍くらいになったけど、それでも 980 円/月だし、まいっかーってかんじです。

VisualHG 1.0.0 で右クリックメニューが表示されない

Visual Studio 用の Mercurial のアドオンの一つ、VisualHG なんですが、1.1.0 になってから、ソリューションエクスプローラーで右クリックメニューに VisualHG 関連のメニューが出なくなるという問題がでました。(私のところでは、です)

まあ、当然のごとくえらく困るわけです。

ちょっと調べたらありました。1.1.0: Context menu and automatic SCC detection broken? で同じような現象で困っている人たちが。

deinstall all VisualHG versions
remove all VisualHG keys starting with dadada00 in the regestry
reinstall VisualHG 1.1.0
now it should work

ええと日本語にすると、

[Effective C#] 項目35 イベントハンドらよりもオーバーライドを優先すること

本当に日が空きました。一月から新しいお仕事です。難易度がむっちゃ高いので復習の意味も込めて Effective C# の紹介再開です。

本日の Effective C# は「項目35 イベントハンドらよりもオーバーライドを優先すること」です。

たとえば、Form が開かれた時の処理を、Form.Load イベントに登録するか、または Form.OnLoad() メソッドをオーバーライドするかの二種類の手段があります。

デザイナで作業しているとついついイベントで処理していますが、これはけた方がいいというお話です。理由として以下のものがあげられています。

プログラムの作成は足し算でやる

tag: 

プログラムの作成は足し算でやるべきだというのがここ数年思っていることです。まあ、自分で導き出した結論ではないのですが。

足し算というっても数学的な足し算じゃなくて、レゴブロックみたいな感じでしょうか? 機能追加は新しいパーツを別途作って追加することで行います。ということは、外すのも別の機能への差し替えも簡単なわけです。

当然、こんなことしなくても、ソースコードを直接修正すれば、機能追加も機能削除もできるんですが。

「ソースコードを修正するとバグが生まれる」という原則を考えたら、ソースコードへの修正は最小限にとどめたほうがよい。だからと機能追加というのは、ソースコードの修正ではなく、追加によって行うべきというのがあるんです。

まあ、この手の話はいろんな本に書いてあるんですが、正直よくわからなかったですが、いろいろと仕事でプログラムを書いてるとなるほどなーと思うようになったわけです。

もともと動いてたのは動いているわけですし、機能追加でソースコードを修正しないなら、原則として今までの部分は確実に動くわけです。バグがあってもどっちが原因かわかりやすいし、一時対策として機能追加分を外すのも簡単です。

ページ

RSS - merさんのブログ を購読