2006

1年をふりかえる

1年分の記事をざっと読んでみました。自分的ベストフレーズは、こちらから。 星野リゾートのやり方 — 今回のガツンと来た一言は、場作りの際に明確にすべき目標は「収益性向上」とか「売り上げ増加」とかではなく「お客様に喜んでもらえるサービスの提供」だということ、なぜならスタッフが仕事の楽しさを味わうのは自分のサービスを喜んでもらえたときであり、目標は人が基本的な性質において素直に共感できるものであるべきだから、ということ。 — ふと気づくと、また原価低減に一生懸命になっている自分がいますが、それは手段であり、「喜んでもらえること」のような目標を共有しないと、結局誰も付いてこれない。自分だって、他人に喜んでもらうために色々やってるのにね。プログラマは最下層にいるからこそ、全ての層の人に喜んでもらえるのだし。 そういう意味で、来年の目標も、「より多くの人に喜んでもらう」。 方法は「スピードを感じてもらう」。 やることは ・月1回イベント継続・他社との融合拡大 ・新情報の実装への落としこみを確実に実施(月1個アプリ作成) まずはこんなところから。 来年も良い年になりますように!!

大掃除から考える

掃除と○○が苦手な自分への言い訳・・・ — 今年も大掃除の季節がやってきました。 今年こそ部屋をきれいにしたい私は、掃除マネージャという人にアドバイスを求めました。 彼が言うには、この部屋は6畳なので、これまでの実績上1Kgのごみが出るはずなので、最後にごみの量を報告してくださいとのことでした。それによってちゃんときれいに掃除できたかどうかを判定してくださるそうです。 また、どれくらいの時間がかかりそうなのか聞かれたので、2時間くらいかと答えたら、1畳当たり20分で進むはずですが、そのペースで進んでいるか確認しますので、20分ごとに何畳できたか報告してくださいと言われました。 さて、掃除を始めましたが、いきなりまごついてしまいました。昔は掃除は上から、と言われたような気がしますが、とりあえず、1畳分の天井のすす払いをして、壁や桟のはたきがけをして、窓を拭いて、床を拭きます。30分くらいたってしまったことに気づいて1畳分終わったことをマネージャに報告したら、次の1畳は10分で終わらせるように言われました。 同じようにやっても30分かかりそうな気がするので、真ん中の壁の無い1畳をやることにしました。適当に天井をはらって床を拭いて10分で終わらせました。そこで報告すると、現在までのごみの量を聞かれました。まだ、ごみを寄せているだけなので量といわれてもちょこっとたまっているくらいとしか答えられません。ちゃんときれいになっていないんじゃないか、と言われましたが、確かにきれいになっている気はしませんし、だからと言ってこの時点でいったんゴミ箱に入れて量を図るのも無駄な気もします。 とりあえず、進めましたが、1畳ずつやっても隣の1畳がまた汚れるような気もします。ごみ1Kgというのもどんなごみの話をされているのか良く分からないので、最後にいらなそうな本を何冊か捨てることにして、1Kgということにしました。 何か、点々と埃が残っているような気がしますし、きれいになった気はしませんが、掃除マネージャは、1Kg集まったのなら、きれいになったと言えるでしょうね、と言ってくれました。部屋は見てくれませんでしたけどね。 — この物語はフィクションであり、実在の人物、団体、○○とは関係ありません。 ・・・イブの夜に何くだらないこと書いているんでしょうね。

M-1

個人的に一番期待の笑い飯は敗退。期待通りの流れだったのですが、こうなってくると最後の畳み掛けの一つ一つの質と言う感じですかね。 最後のチュートリアルの畳み掛けはすごかった。こんなとこにいるはずもないのに・・・最高! ライトニングトークスでもそうでしょうね。時間内に収め、かつ最後にリズミカルにページを繰りながら盛り上げて終わる。そうすると、聞いている人は、面白かったと言うことで改めて内容をふりかえってくれるので、伝えたいことがより深く伝わる、という感じではないでしょうか。 ということで、真鍋さんへ初トラバ。 コントとコンビ、まっいいか!

Fusion-VMware Virtualization for Mac

Mac OS X 向けVMWareも登場。 Fusion Beta Program via MOONGIFT オープンソース – Fusion – VMWare for Mac OSX Macworld Expo (Jan 9-12)に向けて、という感じでしょうか。 とりあえず、そこまでは我慢・・・。

パーシャルクラス

コンポジションを即実践しようとしてみました。 まずその前に、前回投稿後すぐに、当然触れるべきパーシャルクラスに触れ忘れたなと思い出しました。 パーシャルクラスはテーブルアダプタの機能拡張の文脈で出てくることが多いと思います。 例えば下記。 http://www.atmarkit.co.jp/fdotnet/bookpreview/vs2005webapp_07/vs2005webapp_07_04.html 自動生成されるソースを直接触ってしまうと、変更発生した場合に自動生成のやり直しができなくなってしまうので、別にしておこうと言うことですね。 で、これは自動生成だけでなく、自分で管理しきれないソース(他者から提供されるソースなど)についても同様に考えられるわけです。 話を戻して、コンポジションですが、一番の懸念点は転送メソッド記述の面倒さでした。 これもある程度自動化できるかなと思っていたのですが、それがいやだなと思うのが大量にプロパティばかりが存在するクラス。 例えば20行くらいの処理が書いてあるメソッドがあって、それを呼び出す転送メソッドを1行書くのは許せる気がするのですが、プロパティの場合は、ほとんど同じ量の記述を違う内容(プライベート変数の読み書きの代わりに元クラスのプロパティ呼び出し)で書かないといけないというのは、ストレスですし、単純に記載間違いのリスクも負いますし、やりたくない作業です。 で、パーシャルクラスを使う場合ですが、継承と同様カプセル化を壊すリスクがあります。 ただし、別のクラスではなく、プライベート変数にもアクセス可能なので、いざと言うときは逆に何でもできるという救いがあるような気もします。 また、コンポジションと違って、同シグニチャのままで拡張するということはできませんので、拡張時には呼び出し側も変える必要があるということになります。 まあ、単純ではないですが、まずはパーシャルを検討するという方向でやってみようと思います。

Effective Java プログラミング言語ガイド

実はずいぶん前に頂いた本ですが、やっと読みました。 Effective Java プログラミング言語ガイド Joshua Bloch ジョシュア・ブロック ピアソン・エデュケーション 2001-12-03 おすすめ平均 上を目指す人の基礎固め 脱初心者に必須 Effective C++とともに最良の書籍 JAVA言語を理解するための効果的な実践書です。 翻訳も良いと思う by G-Tools , 2006/12/16 題材がJavaというだけで、.NETプログラマーでも十分に役立ちます。 私のようなパンピー(一般プログラマ)では、スレッドの辺りはあまり使わないので飛ばしてしまいましたが・・・。 まず、自分的に一番ホットな内容だったのは、「継承よりコンポジションを選ぶ」。 元となるプログラムがあって、その機能を拡張するために継承を使うということを考える場合があると思います。 実は私も以前やったことがあり、どうもうまくいかないという感じがありました。ここでは問題点と解決法が明確に書かれており ・サブクラスはスーパークラスの実装に依存する→スーパークラスの変更でサブクラスの動作が不正になる可能性がある ・スーパークラスにメソッドが追加される可能性がある→サブクラスのメソッドとぶつかる可能性がある そこで、コンポジションを使いましょうということで ・新クラス(ラッパクラス)に元クラスのインスタンスを持つ ・転送メソッドで、元クラスのメソッドを呼び出す ・拡張したいメソッドだけを実装する という形で、元クラスのカプセル化を壊さないで実現するというわけです。 他でも読んだ記憶がありますが、継承はサブクラスがスーパークラスにis-a関係が成り立つときだけ使いましょうということです。 次にいいと思ったのは、「nullではなく、長さゼロの配列を返す」。こうしておけば、最初にnullチェックをせずにいきなりループ処理に入っても安全なわけですね。 あと、基本ですけどなかなかできていないこととして「メソッドのシグニチャを注意深く設計する」の中の「パラメータ型に関しては、クラスよりインタフェースを選ぶ」。余談ですが、画面コントロール(テキストボックスとか)をインターフェースの実装にできたら、記述が楽になるのかなと思ったり。 さらに、「ローカル変数のスコープを最小限にする」の中で、変数宣言は使用の直前で、と言われているのは、好まない人もいると思いますが(最初に宣言が固まっていたほうが見やすい)、直前の方が安全だと思いますし、さらにループカウンタは別に宣言するのではなく、ループ変数を使うようにする(For i As Integer = 0 To n みたいな宣言)というのも、使う変数を間違えないようにする等の効果が挙げられていてよいです。 というわけで、コンポジッションは即実践!

続Mac

今日は、Apple Storeへ。 パワポやエクセルを動かしてみたのですが、そんなに速さは感じなかったので、やっぱどうしようかな、と。DellもInspiron 6400だと、重さ以外は要求を満たしてくれるようですし、決定打がないのですよね・・・ それとは関係なく、Apple Storeというはなかなか面白いところですね。5Fでは、ネットを使えるスペースがあったり、4Fではミニシアターみたいなところで商品紹介プレゼンを見られたり。こういうプレゼンを見るとLT魂に火がつくのも良い刺激だったりして。 で、帰って来てなんとなくRSSチェックをしていると、Parallels Desktopのbuild 3036 Beta というのが、すごいことになっていると。 [気負わない日記 – とうとうMacとWindowsが合体か? アガテナ]3 やっぱ、ほしい~

WPF/E 来た!

ココログやってくれたな~ お知らせココログ 12-7 「12-5-12-7ココログメンテナンス」について その間に重大なニュースが! WPF/E来ましたね!! Download details “WPF-E” (codename) CTP for Windows (Dec 2006) via Nikhil Kothari’s Weblog WPF-E and Script# さらに、この人のScript#が面白そう。コードビハインドで書いてスクリプトは生成されると。やっぱその方がデバッグしやすそうだな。

新マシン欲しい

ちょっと最近VS2005(に限らずですが)が苦しい。 現状 VAIO Type B VGN-B90PS http://www.vaio.sony.co.jp/Products/VGN-B90PSY/ CPU:Pentium M725(1.60GHz) メモリ:512MB 解像度:1400×1050 重量:約2.3kg そこで、 ・CPUはCore2Duoにしたい ・メモリは2GB積みたい ・解像度はこのサイズをキープしたい ・重さはこれより軽くしたい という条件で探すのですが、・・・いや~、無い!! 候補1 MacBook Pro 2160/15.4 15インチMacBook Pro http://store.apple.com/0120-APPLE-1/WebObjects/japanstore.woa/wa/RSLID?mco=F7801ADF&nclm=MacBookPro http://www.apple.com/jp/macbookpro/specs.html △解像度:1440 x 900 △重量:2.54kg 候補2 ASUS VX1 Golden Edition http://jp.asus.com/news_show.aspx?id=4674 △重量:2.55kg △約40万円 候補3 VAIO type BX VGN-BX96PS・BX94PS http://www.vaio.sony.co.jp/Products/BX1/spec.html ×メモリが1GBまでしか積めない △重量:約2.6kg 候補4 DELL Inspiron 640m http://www1.jp.dell.com/content/products/productdetails.aspx/inspn_640m?c=jp&l=jp&s=dhs&~ck=mn&~ck=mn ×解像度:1280×768 △重量:2.42kg http://plusd.itmedia.co.jp/pcuser/articles/0611/06/news029_4.html 辺りを見て、MacBook Pro欲しくなってるんですけどね。 Parallels・VMwareの動向を見て、MAC・XP(VS2005)・Vista(Orcas)共存環境を手に入れるか・・・。