ソフトウェア開発」カテゴリーアーカイブ

Mac?

MacBook Air 11インチ欲しい!

冒頭から何を言い出すんだと言われるとちょっと困るんだが、”はてな”がキャンペーンでブログを書けば抽選でMacが当たると言うので書いてみることにする。

WindowsとMacと私のこれまで

大学時代は、個人ではWindowsPCを持っていたのだがサークルで所持していたのがMacだったので、実際にはMacのほうが使用量は多かった。
ただ、研究室のPCはMacではなくWindowsPCだったので大学4年以降はほぼWindowsということになる。会社でももちろん大多数の人がそうであるように、Windowsだ。
実際問題、職場で使うPCに関して言えばよほどの働きかけがない限り自分でOSを決めることは難しいと思う。ただ、個人で持つPCに関して言えばそんな制約は実際のところないはずだ。にもかかわらず、家のPCもWindowsPCを使っている。

Windowsを使う理由

日常的にWindowsを使う利点は、細かい設定や機能を実際に自分が使うことで知るようにしているからだ。仕事でももちろん使っているのだけど、お客様からソフトウェアと直接的には関係ない質問を受けたりもする。お客様からしてみたら「プロなんだからちょこっと教えてよ」的な軽いノリなんだけど、ときとしてこれは答えに詰まる場面がある。
自分で日常的に使っていると、自分にとっての不便な点は調べてなんとかしようとするので、その”救える幅”を広げることができる。
もちろん、そんなことはまれなうえに万人に言える話ではないのであくまで私としてはだ。
ただ、お客様に限らず友人や親類に至るまで使っているPCが圧倒的にWindowsが多い以上、そこに対する知識を持っていることは役に立つ確率は高い。
だからこそ、知ってる人が少ないMacをやっていればより役に立つよ!って話はもちろんあって、もっともだと思うんだけど、別にそれを生業にしているわけでもないしね。。。

Macに興味が出てきた?

正直言ってMacには興味がなかった。
性能だとか使い勝手に関してはそれほど気にしてなかったんだけど、「Mac素晴らしい。まだWindows使ってるの?」みたいに見下したような言い方をする人がチラホラ見えたことが原因。
少数派に見られがちな少数派カッコいい的な話にうんざりしてしまった面が強いともいえる。まぁそれらは人の問題であってMacの問題ではない。やはり、Macを使わなきゃいけない場面がなかったというのが大きいのかな。

ところが、それはそれとしても興味が出てきたのはやっぱりiPhoneの影響だ。
もちろんiPhoneはWindowsPCとも連携できるのだけど、Macとであればもう少し色々できるのではないか?と思ってしまう面もある。これは想像。
単純に長年Macを離れていることもあるので、今どうなっているんだ?って言うのもある。
でもまぁ、やっぱり一番気になっているのはiPhoneアプリ開発じゃないかな?iPhoneアプリってMacじゃないと開発できないんだよね、基本的には。正直そういう戦略を取るのってどうよって気がしないでもないが、まぁそれはそれだろう。
実際に開発している時間なんてあるのか?と言われればなかなか答えに窮するところはあるが、それでもやってみたいものはやってみたいものだよね。

ってわけでください(笑)

仮想化への道

今月の日経SYSTEMSに富士フィルムで行われた基幹システムの仮想化に対する取り組みが紹介されていた。

仮想化そのものは大変有用で、私も検証環境や社内での客先環境を模すのに良く使用している。実機を使用しなくてよいというこの利点にはかなり恩恵を受けている。なかったらと思うとちょっと怖いくらいだ。
ただ、富士フィルムの例でみられるように実際の基幹システムに仮想化を取り入れるには実のところ、未だに多くの問題を抱えている。
私が感じる一番の問題は、アプリケーションのサポートだと考えている。これは私自身がアプリケーションを作成するベンダーの立場であり利用する立場でもあるからだとは思う。

アプリケーションのサポート

私が仕事で主に使用しているデータベースはOracleなのだが、Oracleは仮想化上での動作をOracleVM以外ではサポートしていない。実際のところ、VMWareやVirtualPC。Hyper-Vでも動いてはいるのだけど、障害時を考えると少し怖いものだ。Oracleも決してバグの少ない製品とはいえない事はこれまでも身をもって知っているし。
いくつかのアプリケーションベンダーの仮想化に対する対応はマチマチ。いくつか細かい違いはあるようだけど

  1. 物理環境で再現出来たらサポートします
  2. 仮想環境が原因だったらサポートしません

という2種類が多いように思える。字面の問題のように見えるが、前者はユーザー側で確認をするのに対して後者はベンダー側で確認をするというスタイルだ。
比較的容易にインストールさせる事が可能なソフトウェアであれば前者で問題ないだろうが、大規模なシステムであった場合にはそもそもインストールが困難なので後者が選ばれると思う。ただ、ここで問題になるのがベンダー側の対応。サポートの仕方はベンダーで異なるだろうが、おおむね

  1. 現象の再現確認
  2. 再現結果からの調査・修正等の対応
  3. アナウンス

のような流れになると思う。ここで問題になるのが、ベンダー側の環境で再現しなかった場合にそれが”本当に仮想化が原因”かどうかの判断をどうつけるのかではないだろうか。実際のところ、物理環境であっても現象によっては必ず再現するとは限らなく、いくつか複数の要因が重なって初めて発現する問題もある。また、仮想化が原因であるというのであれば、ベンダー側で仮想化環境を構築して検証を行う必要が出てくる。
となると、ベンダー側はユーザー側が使用している仮想化ソフトに対しての知識や、環境を用意しておく必要が出てくる事になってしまう。サポート部隊の涙目が見えてきそうな話だ。おそらく、そもそもの仮想化ソフトを限定しているのかもしれないが…。実際のところ、どうなのだろうか。気になるところだ。

ちなみにWindowsは以下の仮想化環境でサポートをしているようだ

  1. Cisco WAAS Virtual Blades 4.1
  2. Citrix XenServer 5 Embedded Edition
  3. SUSE Linux Enterprise Server 10 SP2
  4. VMWare ESX 3.5 Update 2
  5. VMWare ESX 3.5 Update 3
  6. VMWare ESXi 3.5 Update 3
  7. Xen Server 5

http://www.windowsservercatalog.com/svvp.aspx?svvppage=svvpsupport.htm

上記一覧にOracleVMがまだ入ってない事を考えるとWindows+Oracleの環境で公式のサポートを得る事は難しいという事か。いずれにしても、綱渡りである事に変わりはない。

<2009.03.07追記>
コメントに情報をいただいていますが、OracleはWindows,Linux以外の環境ではサポートを表明しているようです。
http://www.oracle.com/technology/products/database/clustering/certify/db_virtualization_support.pdf
HP-UXやAIXは正直私は触ったことがないです。Solarisくらいかな・・・。Oracleの利用目的から考えるとこれらを選択肢に入れるのはいいかもしれませんね。私はその前にこれらOSの知識を手に入れないと不安でしょうがないですが…。
でも、たとえばHPのnParそのものはWindowsやLinuxもサポートしているのになぜHP-UXのみに限定しているのか。そしてOracleVMではそのWindowsやLinuxをサポートしているのか。
このあたりは企業戦略が見え隠れしているような気がしなくもないですねぇ。純粋に信用していないだけなのかもしれませんが。

ではどうするのか

さて、困った。どうしたものか。
仮想化環境を提供しているベンダー。VMWareやMicrosoft。Oracleもまたそうなのだが、これらの中でどこかが明確な方針を出してくれれば少しは動きやすいとは思うのだけれど、現在のところ主だった動きはないように思う。サポートの手厚さでは24時間サポートを打ち出しているOracleVMが手厚そうと言えば手厚そうだ。
シェアで言うと先行していたVMWareが大きいのではないかと思う。
いずれにしてもベンダーがいくつかのアプリケーションベンダーを巻き込んでサポート体制の新しい枠組みを作っていかなければいけないのではないかと考えている。望むならば申し出のあったアプリケーションベンダーに対して仮想化環境を提供。検証するための枠組みを作っていって欲しいと考えている。
もちろん、星の数ほどあるアプリケーションベンダーそれぞれに対してそのような事が可能かどうかというと、無理があるのかもしれない。かといって仮想化に対するユーザーのニーズというものはこれからも増え続けて行くわけで何かしらの対応をとっていかなければいけないだろう。

SilverLight Songs

いつもどおりネットを徘徊していたら、こんな記事を見つけた

Silverlight – The Song
http://weblogs.asp.net/dwahlin/archive/2008/04/27/silverlight-the-song.aspx

Silverlight開発チームを混ぜての作品。ちょっとした「New Relase」だ。ちゃんとプレーヤーもSilverlightですね。

正直少しうらやましいと思った。実際の開発現場がどうであるかはわからないが、これくらいの遊び心を上が持っているというのはそれだけ下のモチベーションも上がるかもしれない。。。(って、それはどういう人によるのかもしれないが)。何にせよ、開発の現場は明るいに越したことはない。どーんよりとした雰囲気の中で開発を行うよりは厳しくとも明るい雰囲気の中で開発を行うほうが効率は上がるし、変に精神的なトラブルを抱え込んで会社に出てこなくなる奴が減ると思う。

もちろん、マネージメントの立場から言うと「納期や品質を守ってこそ」のものである事は確かなのだが。会社対会社。社内の人間関係。様々な問題はあるけれど、開発者にとって何ができるのか。どうなりたいのか。考えていかないとね。

視覚マーケティングのススメ

ウジトモコさん著、視覚マーケティングのススメを読んだ

視覚マーケティングのススメ (アスカビジネス)
ウジ トモコ
クロスメディア・パブリッシング
売り上げランキング: 23182

視覚マーケティングとは

「デザイン」というものを考える上で、ただ単にデザイナーに”いいものお願い”って頼むのではなく、マーケティングをすることで、効果的なデザインが出来上がる。マーケティングをせずに作ったデザインはマーケット上での効果は期待できないという考え方だ。

言ってしまうと、当たり前の話なんだけど、その当たり前のことを細部にまでできているかというとなかなか難しいことだ。一般に、製品を企画する段階では間違いなくターゲットとなるユーザーを設定するだろう。そのターゲットは年代に寄るものかもしれないし業界・業態によるものなのかもしれない。必然的に製品のパッケージや広告・キャッチコピーに関してもそれを意識したものが考えられる。
また、企業のロゴになると自分たちが顧客・ユーザーに”どう思われたいか”を意識して考えられるだろう。
ただ、それが本当にできているのだろうか?製品やサービスの細部。個々のパーツにまで落とし込めているだろうか?

意識されているもの、されてないもの

おそらく、パッケージや広告が表に出てきやすいもの。お菓子や化粧品に代表されるようなものに関してはこのいわゆる”視覚マーケティング”はできているのだろう。化粧品みたいなものは明らかに年代を意識して製品を作っている部分もあるので特に意識されているのではないかと思う。
ただ、ソフトウェアの分野はどうだろう。もちろん意識しているソフトウェアもあるだろうけど、明らかに”機能重視”でデザインに関してはおざなりに済ましてしまっている部分はある。特に基幹系のシステムに関してはその色は強いのではないだろうか。
もちろん、これらのソフトウェアに関しては機能は第1に重要視されるものだと思う。ただ、複数ある基幹システムの候補からどれが選ばれるか。ユーザーの立場で”どれを使いたいか”を考えてみるとその要素の一つにデザインがあってもおかしくないと思う。また、そういう意味で”ファン”を作った製品はエンドユーザーからは根強く支持されたりもする。つまり、デザインによるブランディングができているのだろう。
また、個人のブランド。パーソナルブランディングに関しても意識の差は大きいように感じられる。本書でもその具体例として名刺が取り上げられているところからもそれは感じられる。
最近、セミナーや勉強会に顔を出すようになって様々な方と名刺を交換する機会をいただいている。私は個人名刺を所有していないので会社のを使っているのだが、多くの人は個人名刺を持参している。自分自身をどう見られたいか。どういう人間だと印象付けたいのか。この名刺の目的は何か。考えられた名刺もあるしまずは作ってみたというものもある。私自身、個人名刺に関してはほしいと思っているので、どう思われたいのか?どう表現するのかは大きな課題の一つだ。まずはそこを見つけ出さないことにはデザインも始まらない。

ソフトウェアのデザイン

私はソフト屋なのでどうしてもソフトウェアにあてはめて考えてしまうのだが…
ソフトウェアの分野。先にあげた基幹系システムに関して言うと確かにデザインはいい加減なものが多い気がする。いや、実は結構頑張っていたりもするソフトもあるのだろうけど、VBフォームの延長線をいまだにたどっているソフトも割りと残っていたりする。
シンプルな作りなのがいいという業界もあるだろうし、スタイリッシュな物が好まれる業界もあるだろう。ただ、私自身が最近必要と思っているのは、要するに”スタイル”的なデザインではなく”ナビゲーション”を意識したデザインというものだ。これのいい方法が思いつかない。そういう事が得意なデザイナーもいるんだろうけど…、業界やユーザー層に踏み込んでまで考えられる人は少ないように思う。あ、それは発注側の担当ですか。
以前ペルソナを用いる手法に関する本を読んだ

ペルソナ作って、それからどうするの? ユーザー中心デザインで作るWebサイト
棚橋 弘季
ソフトバンククリエイティブ
売り上げランキング: 21263

まだペルソナに関しては試行錯誤段階で効果は不明だけど、実際に作ってみたペルソナが本当にあっているのかというのはわからない話。結局ウジさんの本にあるようにユーザーへの聞き取りのようなことをしなければいけないのだろう。
試行錯誤。試行錯誤の日々は続く

iTunes取り込み中に・・・困ったぞ?

これまでノートPCで管理していたiTunesを購入したiMacへ移動しています。

曲に関してはB’zを始め私がよく聴く曲がかなりの量取り込まれていて、それほど容量の大きくなかったノートのHDDを圧迫してしまっていたのも一つの理由です。
また、これまで取り込んでいたには取り込んでいたのですが、いくつかの曲で音が飛んでいたりして取り直したいと思っていました。

f:id:krote:20110610000402j:image

という訳で一日2~3枚くらいのペースで保持しているCDを徐々に取り込んでいます。
今回は、「そういえばこんなCD持っていたな~」って言うのを意識して取り込んでいるので、通勤中に聞く音楽がとても楽しい。懐かしさにあふれています。

大学時代によく聴いた曲
友人から勧められて買った曲
高校時代に聞いていた曲
ライブに行って聴いた曲

懐かしいです。

最新の曲はというとさっぱりわからないので一向にラインナップは増えていかないのですが、それでもずいぶんと楽しめるものです。

と、取り込んでいる最中に問題が。

f:id:krote:20110610002413j:image

大量の8cmシングルCDです。

これ、若い人はもしかしたら知らないかもしれない。でも、以前のシングルCDはほとんどこれだったんですよね。
多くのCDドライブはCDの真ん中を固定する方式をとっているのであまり気にしなくてもいいかもしれませんが、iMacのようにスロット式のCDドライブだとこのサイズのCDを読み込むことが出来ないんですよね。
ずいぶんと前に、8cmサイズに対応していないドライブへ読み込ませるためにアダプタを買ったには買ったのですが、使用頻度の少なさから捨ててしまったんだよなぁ。まさかこんなところで必要になるとは・・・

Amazonで見るとだいたい500円くらい。うーんどうしようかな。
もう一度アダプタが無いか探してみようかな~

うーん、思わぬ落とし穴だ

audio-technica AT6621 CDシングルアダプター
オーディオテクニカ
売り上げランキング: 2880

安全なWEBアプリケーションの作り方

ふと思うところがあって手に取ってみた

体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践
徳丸 浩
ソフトバンククリエイティブ
売り上げランキング: 16127

WEBアプリケーションそのものの開発には関わっているものの、自分自身がそのすべてを作っているわけでもないし、そもそも対象としているシステムが「基本的に社内で運用」という前提が付いているので、少し弱い分野。
これまでもセキュリティ系の書籍は読んだことはあって、脆弱性のいくつかは確かに知っている。
ただ、項目を知っているのとそれの対応が正しく取れる。また、”ぜい弱性を指摘できる”と言うのはイコールにならない。
たぶん、どれだけ経験したのか?と言うことが、やはり一番なのではないか。

単純に目次だけを見るのであれば、先日第5版が発表されたIPAの「安全なWEBサイトの作り方」で十分に範囲を抑えていると言える

安全なWEBサイトの作り方 (IPA)
http://www.ipa.go.jp/security/vuln/documents/website_security.pdf

安全なSQLの呼び出し方 (IPA)
http://www.ipa.go.jp/security/vuln/documents/website_security_sql.pdf

・・・・
なんか、目次にてるな・・・。
と言うか、よくよく見てみるとSQLインジェクションの例題なんて全く同じだし

って、こっちの作成にも徳丸さん絡んでるじゃん(笑)
そりゃ似たようになるよね。

WEBアプリケーションの作り方

当初、本書を手に取ったのは純粋に”セキュリティ対策”的な意図だった。
そういう意味で、本書ではVM環境を用意して実際にぜい弱性を体験できると言う素晴らしい教材だと思う。

ただ、一通り読んでみて思ったのは、タイトル通り「WEBアプリケーションの作り方」何だな、ってこと。
純粋なコーディングに限らずWEBアプリケーションに関わる周辺技術を含んで説明されている。
もちろん、これを読んだからと言ってWEBアプリケーションが作れるか?と言うとまず作ることはできない。
ただ、網羅的に周辺技術に対して”セキュリティを意識して”学ぶことができると言うのはいいなと思った。

先に書いたとおりぜい弱性との戦いは経験もある程度あると思う。
今ある技術の裏をどうすればつくことができるのか?と言うのは繰り返し行われてきたことだし、昨今の新技術目白押しの状況下においてはそれぞれの対策が必要になるだろう。
どこまで柔軟に考えることができ、幾重にも予防線を張っておくことができるか。

セキュリティを意識するうえで、まず最初に読む本としてちょうどよさそうだ。

PDC2009の報告がされています

XAMLプログラミング WPFアプリケーションの概要と開発の著者でもある川西さんのブログでPDC2009の報告が上がっていました

川西 裕幸のブログ
http://blogs.msdn.com/hiroyuk/archive/2009/11/18/9924120.aspx

PDCとは

PDCはProfessional Developers Conferneceの略で、マイクロソフトが米国で開催しているソフトウェア開発者向けに開かれているイベントです。
日本ではパシフィコ横浜で年に1,2回似たような開発者向けのイベントはありますが、実際に開発をしているMSの担当者と話が出来るわけではないので、必然的に密度というものは違ってきます。
あ、MSの担当者がいても日本人の場合言葉の壁が高すぎる気もしますが…最悪コードで会話をするしかないですね(笑

気になった点

ムーアの法則がこれまでのクロック数からコア数に…ってことからかやはり並行処理(Concurrent)や並列処理(Parallel)に関する話題が取り上げられていますね。
WindowsAzureが今回の目玉!って何かに書いてありましたが、さすがです。川西さん。ほとんど触れていません。
情報がどうしてもとぎれとぎれになっているので、全容はつかみきれはしませんが、

  • MSRではCuzzとFeatherLiteを開発
    • Cuzz: 百万回に1回のバグを見つけるツール
    • FeatherLite: 軽量なデータ競合検出

百万回に1回のバグを見つけるツール…って。どういう条件でどういう内容のバグを見つけるんだろう。
ううむ、ちょっと気になるな。ツールもさることながら、バグが気になるぞ

テストしましょう

いつも拝見させていただいているオルタナティブブログで坂本さんが、あるプロジェクトでの逸話を紹介していた

トラブルが発生するときというのは、なぜだか同一の会社に重なります(坂本史郎の【朝メール】より)
http://blogs.itmedia.co.jp/shiro/2011/04/post-5da5.html?ref=rssall

お客様の要望は結構果てしなく、それでいて「本当のところどうしたいのか」がはっきりしていなかったがゆえに、当初想定していた以上の工数がかかってしまうことは結構ある。
マネジメントがうまくできていないだけということも言えなくはない。
実際問題、最初の納入以上にその後の改修のほうが大きくなってしまうなんて言う話もある。

結構大変

ここで紹介しているエピソードは、最終的に乗り越えるわけですが、企業としては心中するわけにはいかないので難しい判断を迫られることも多いと思う。

ただ、その中でお客様の話として出ている

お客様からの要望は全て入れる必要はないです。
ただ、入れたものに関しては充分にテストしてほしいです。

異常形テストケースの割合は、テストケース全体の半分くらいが適当ではないか。
そういう考え方を徹底してほしい。
今は受け入れ側の素人テストで問題をあぶりだしているが、これはプロである
メーカーとして実施してほしいです。

と言う言葉にはちょっとハッとさせられた。

もちろん、それだけのテストを行う必要があると言う認識のもとでのプロジェクトを組まないといけないのはあるけど、そもそも”実装する”と決めたのであれば、その出所がなんであれお金をもらっているプロとしてのスタンスで臨まなければいけない。

まだまだ、自分自身でちゃんと出来ているところまで行っていない。
積み重ね、積み重ねて出来るところまで持っていかないといけないと、改めて思った。

IE6よさらば

お客さん先の環境で、IE6上でイマイチ原因のわからない障害が起きていた。環境としては

  • WindowsXP SP2
  • InternetExplorer6 SP2

であった。XPはいいとして、IE6か~。ってことで、とりあえず内容を確認して再現確認を取ろうとするも、社内環境では再現しない。客先でも以前からIE6を使っていて、最近発生し始めた障害のようで、単純にIE6が原因とは言えないんだけど。。。
環境が原因である可能性が高いのならば環境を変えてしまえばいいんじゃないか?と安直に考えて、お客さんに「IE7にしようよ!」って薦めるための材料を集めようと、IE6のサポート期限をうたっているページを探そうとしたら変なものを見つけた

IE6 NoMore
http://www.ie6nomore.com/

「IE6はもういらない」――Web企業が撲滅キャンペーン
http://www.itmedia.co.jp/news/articles/0908/06/news031.html

ITMediaの記事が8/6なのを見ると、実にタイムリーな内容だったみたいだ。
企業向けのWebアプリケーションを提供している企業にとって、OSをインストールしたときに自動的にインストールされているIEへの対応はかなり重要な項目。ただ、IEのバージョンへの対応は意外と面倒でそれにかかる開発コストというのは馬鹿にならない。それを考えると、思わずキャンペーンにもろ手を挙げて参加したくなるが、やはりそう簡単でもないだろう。
実際のところ企業の中ではいまだにWindows2000が現役で動き続けている。WindowsNTすら動き続けている。Windows2000ではIEは6までしか動作させることはできないし、WindowsXPもインストール当初はIEは6だ。
自社のシステム上、特に問題がない限りわざわざバージョンを上げる必要がないと考えている企業は多い。バージョンアップに伴う情報システム部門の費用もばかにならず、”そんな事をする暇があるなら別の仕事をしろ”って感じに今の御時勢はなってしまうのかもしれない。

バージョンを上げればセキュリティ的なリスクがすべて解消するというわけではもちろんないが、更新の止まったアプリケーションを動かし続けるリスクは企業であればちゃんと認識する必要はあると思う。
IE6撲滅キャンペーンも、開発者側のリスクに対して焦点を当てるのではなく、セキュリティ的なリスク等に対して焦点を当てて薦めていったほうが、頭の固い人にも少しは受け入れやすくなるんじゃないだろうか。。

ここまで書いて、そんな意識があるのであればすでにバージョンアップしているんだろうなぁと思った。
あ、問題解決してないや