2009年8月15日土曜日

MySQLに挑戦!!

今日は、休暇をとって家族と公園に遊びに行ったあとは、ビールを飲みながら「火垂るの墓」を見ていた。
ええ話ですねぇ...ちょっとウルウルしながら、久しぶりにブログでも書くかと...PCを立ち上げ、「火垂るの墓」とタイプすると、な、なんと、これって野坂昭如の原作なの!!しかも、その体験談で、事実は大分映画とはかけ離れたものだとか...
まあ、ええです。 それも作家の才能でしょう。

ブログはひさしぶりですが、仕事ばっかりしていたわけではありません。 ただ、業務にも関係があって、ブログに書けないようなネタばっかりだったので...
ここ、最近ちょっと色々と夏休みの自由研究にとりくんでますので、久しぶりにブログを書く気になったのです。

で、全体としてなにをやろうとしているかはともかく、MySQLに挑戦中です。
そもそも、Microsoft信者の僕は、SQL Serever派なんですが(英語ではシークエルサーバーって発音するんですよね。 それもなんかカッコいい。)、その、最終的に取り組もうとしているものの関係で、MySQLを動かさなくてはいけなくなったんです。
大体、ネーミングがイマイチだよね。なんて、思いながら、MySQL Community Server 5.1.37のWindows用MSIインストーラをダウンロードしてダブルクリックすると、なんとまともなエラーメッセージも出ずにインストーラが終了してしまう!!しゃあないので、ネットいろいろ調べると、どうも、5.1.35以降のインストーラにバグがあるらしいんですよね。 これだからMySQLなんてーのは... 仕方がないので、主導インストールに挑戦。

まずは、以下のサイトの、「Windows downloads」→「Without installer (unzip in C:\)」からコードをダウンロードします。
http://dev.mysql.com/downloads/mysql/5.1.html
で、それを適当なフォルダに配置するわけですが、僕の場合は、D:の直下に「MySQL」というフォルダを作成し、その直下にダウンロードしたZipを展開しました。
(ダウンロードサイトでは、C:と言っていますが、特に問題なかったです。)
次のステップとしては、「C:\windows」下に「my.ini」というテキストファイルを作成し、以下の内容を書き込みます。

[mysqld]
basedir="ダウンロードしたZipを展開した位置"
datadir="ダウンロードしたZipを展開した位置の中のdataサブフォルダを記述"
default-character-set=cp932
[mysql]
default-character-set=cp932

次に、コマンドプロンプトを立ち上げ、ダウンロードしたZipを展開したフォルダ内のBinフォルダ内で、「mysql.exe --install」とタイプし、実行。
「Service successfully installed.」となれば成功!!
これで、MySQLがWindowsサービスに登録されます。
「net start mysql」とタイプすれば、MySQLがサービスとして実行されます。
これで、とりあえずはMySQLのインストールは完了です。

次のステップとしては、管理用にGUIツールが必要です。 こちらは特に問題なくインストーラのダブルクリックでOKです。 以下のサイトの「Windows Downloads」から「Windows (x86)」をダウンロードして、ダブルクリックでOKです。
http://dev.mysql.com/downloads/gui-tools/5.0.html
MySQLもこんなGUIがあるんだねぇ...なんて、感心しながら、「Mysql Administrator」というツールをダブルクリックすると、「Could not find settings」とまたまたエラーが!!
ああ、頭に来る。

これまたネットで調べると、レジストリの「HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MySQL\ImagePath」というKeyに対して、「...\mysqld.exe MySQL」となっているのを「...\mysqld.exe --default-files="C:WINDOWS\my.ini" MySQL」としてあげればいいんですね。
これで、やっと無事動きました。

動いてみると、なかなかのものですね...

2009年4月19日日曜日

情報工学部会歓迎会


金曜は、会社を18:00に切り上げて、技術士情報工学部門の歓迎会へ...
歓迎会の前に理化学研究所の方がHPCに関して講演していました。なんと、格調の高い...すごいですね、Earth Simulator、消費電力6MWって...そういや、学生のとき、Crayのスパコン、液体窒素で冷却してるとか何とか言っていたような。FEMのデータを置きっぱなしにして結構課金されたりしたなぁ...

情報工学部門だからなぁ...ってシリコンバレーのノリで、ちゃらいジャケットにノータイで行ったらみんな(スーツというより)背広だった。皆さん、大手のITや電気メーカーの何とか部長とか室長とかの方もいて、ちょっとビビッてしまいました。でも、とりあえず名刺交換できたし、人脈を広げるという意味では良い経験です。

終って外に出ると、東京タワーのライトアップが...
そうか、IOCの評価委員来日の為のライトアップなんですね。

2009年4月12日日曜日

営業は関西人に任せろ...

今週は色々と忙しかったです...
仕事の関係で、関西出身の営業の人たちと取引先に出向きました。
しかし、関西人のビジネスは凄い...

「いやー、あのときは酔っ払っちゃってすごかったね」
「それで、xxさん、yyとやっちゃったんだよね」
「いやいや、3P...」

なんかよく分からん下ネタが延々と続くのだが、その中でも仕事上のポイントだけはしっかり抑えていて、話だけはついている。 まあ、そういった絶妙なやりとりも、気心知れた間柄だからというのもあるのだろうけど、つくづく人脈というのは大事です。

そして、金曜はパーっと以前の勤務先の同僚と飲みに行ったのですが、このブログ見てくれたのか、アクセスカウンタが上がってますねぇ。 新しいネタを載せなきゃ...

2009年3月20日金曜日

技術士第二次試験「口頭試験」受験必修ガイド


★★★★
これから技術士を受験する人の参考になるように、僕のやった対策を時間のあるときに紹介しておきたいと思います。
平成19年度の試験制度の変更から、口頭試験の合格率が下がっていて、僕の受けた情報工学部門だと、70%位の合格率なんですね。 それ以前は二次を通れば口答試験で落とされることはレアケースだったわけですから、口答試験対策の比重が上がったわけです。 ですが、二次試験の合格通知を受け取った後、結構のんびりしていたので、巷の口答試験対策講座とかは殆ど締め切っちゃっていて、打てる対策はこの本しかありませんでした。 とは言え、大分助けられました。 口答試験対策講座とかって結構高いから、コストパフォーマンスはある意味最高でした。 特に、口答試験での試験管からの質問例は結構参考になりました。 全部で100問弱くらいですが、それぞれに自分なりに回答を用意して、本番に臨みました。 口答試験は質問に対して考える間もなく反応しなくてはならないので、本質的に技術士としての適正があったとしても、練習しておかないと難しいですね。 ホントたすかりました。
あと、口答試験では、事前提出する技術的体験論文の出来も重要なのですが、論文に関しては、この本は提出後だったので、参考にすることは出来ませんでしたが、こちらの「若くして合格!技術士受験指導」にお願いしました。 こちらも低料金で添削お願いできたので、助かりました。

2009年3月16日月曜日

祝!!技術士二次試験合格


前回のアップデートから大分ご無沙汰してしまいました。
どうも最近忙しくて...

ところで、3月6日に技術士口頭試験の結果が出ました。
結果は見事合格!!

未だ、登録していないので、技術士を名乗るわけには行かないのですが、登録したらこのページも技術士のページって事にさせて頂きます。 今後、技術士試験向けにここに論述を載せるって事は無いですが、気の向くままに情報工学関連のトピックに関して論述を載せて行きたいと思います。

また、技術士試験対策に関しても、要望が多ければ載せてきますんで、興味のある方は書き込み下さい。

2009年2月8日日曜日

図解でわかる 半導体製造装置


★★★
図解でわかる 半導体製造装置 (単行本(ソフトカバー))
菊地 正典 (監修)

渋い本を読んでしまいました。
なんか、どうしても半導体ってどうやって作っているのか知りたくなってしまってですね。 この「図解でわかる」シリーズは、こういう用途には最適です。

だけど、半導体製造装置って、渋いですねぇ... 磨く・洗う...といった地味な工程の繰り返し... でも、ITってのもこういう技術に支えられているわけですね。 ムーアの法則とか言っても、こういうのを読んでおくと、イメージが沸くようになるので、まあ、読む価値はあります。

2009年1月25日日曜日

GARA yokohama


先日は、家の奥さんの誕生日でした。
なので、どこかに食事に行きたかったわけですが、子供がまだ小さいので、洒落たフレンチやイタリアンという訳にもいかず、ワールドポーターズに行くことにしました。
誕生日、ワールドポーターズはお奨めです。 )“ハッピー・エブリ・バースデー”と言うサービスで、2Fの受付に、その日が誕生日(前後1日まで可)だと言うことを証明するもの(免許証とか)を提示すると、駐車料金が終日無料+記念品(マグカップだった)+“バースデーパスポート”を貰えます。 この“バースデーパスポート”をショップorレストランで提示すると、色々なサービスが受けられます。
コールド・ストーン・クリマリーとか、トッピングのサービス+αで店員がスペシャルな歌を歌ってくれるらしい。 でも、ちょっとそれもねぇ... 周りの客に注目されて、恥ずかしいし、ケーキぐらいサービスって感で良いんですよ。と、このGARA yokohamaに入りました。 (家の奥さん、インド料理好きだしね)
コースを頼んで、大体出切ったところで、なかなかサービスのケーキが来ないなぁ...と、店員に催促すると、「今お持ちしますっ」、と、感じの良い店員。 しばらくすると、シフォンケーキを誕生日風にアレンジされたケーキをもった先ほどの店員を先頭に、後ろにインド人の店員が5人列を成して... 「お誕生日おめでとうございマース」 お、恐れていたことが...
 店員:「お名前はなんでしょうか?」
 奥さん:「結構です...」
 店員:「大丈夫です、ばっちり盛り上げますので」
 奥さん:「...XXXです。」
 店員:「みんな、しっかり盛り上げていけよ!! Happy birth day to you. Happy birth day....」
 (しかも、インドっぽく銅鑼を鳴らしてくれる。)
僕も、ここで恥ずかしがってもしょうがないので、一緒に盛り上げちゃいました。
変な汗、かいちゃいました。 :)
とても、雰囲気の良い親切なお店でした。
誕生日にはお試しあれ。

2009年1月21日水曜日

五輪書 (講談社学術文庫)


★★★

五輪書 (講談社学術文庫) (文庫)
宮本 武蔵 (著), 鎌田 茂雄

...と、なぜ突然こんな本を読もうと思ったかと言うと、剣法を極めた宮本武蔵の書いた本で、400年以上も読まれていると言うので、もしかしたら日本人として一生の内に一度は読んでおくべき本なんじゃないかと...

いや、まあ、本当に剣法の本でした。
ですが、この本から得られたことは。
- 形式にとらわれても、剣の道は究められない
- 訓練と実戦の積み重ねによってのみ臨機応変に対応する力を養える
- 目先の動きにとらわれず全体を見る

と、いうところなのでしょう。 こういう本を読みなれた人は、もっと別な得るものがあるのかも知れませんが...

流石に、完全に剣法の本ですので、どうなのかなぁ...

2009年1月19日月曜日

プロフェッショナルの条件


★★★★★

プロフェッショナルの条件―いかに成果をあげ、成長するか (はじめて読むドラッカー (自己実現編))

P・F. ドラッカー (著), Peter F. Drucker (著), 上田 惇生 (著)

久しぶりのブログです。
技術士口頭試験も終わり、ちょっと前に日経に広告の載っていたこの本を読んでみました。 とは言え、2000年のものですから、そう新しいものではありません。

かなりの高評価ですが、内容は題名からイメージするものとはちょっと違います。 歴史とここ最近の社会の状況から、これからの社会がどの様になっていくのか、また、個人はどういった生き方をすべきなのか、という事を述べた本ですが、何しろ説得力があります。 それは、2000年に書かれた本であるにも関わらず、ポスト資本主義社会としての知識社会を予言する内容で、起こりつつあった変化を適切に分析している点です。

ドラッガー、今後も数冊手に取ってみようと思います。

2009年1月8日木曜日

オブジェクト指向を家の奥さんに説明する

技術士口答試験、想定問題

「オブジェクト指向を一般の人でも分かるように説明してください」

まあ、ありえる質問ですよね。 Object Maniaを自称する身としては、これは綺麗に回答したい。
(ちなみに、まだ家の奥さんには説明してないです。)

こういうの、割と好きです。
自分の思考パターンとしても、物事を厳密に説明するのには向いていない構造をしている気がする。 なので、厳密性を排除して、分かりやすさを追求して良い説明は楽しい。

オブジェクト指向というのは、プログラミングやデータの表現の方式の一種で、クラスとインスタンス、カプセル化、継承、ポリモルフィズムといった代表的な概念をもっています。 これは、後の文章を読めば分かるように書いたつもりなので、あまり気にしないで読みすすめてください。

最近のソフトウェアは非常に複雑なので、このような考え方が必要になってきたわけですが、どのような場面で使われているか、Excelを例に説明してみます。
(始めに断っておきますが、本当にExcelがこういう実装になっているかは別です。 違うだろうなぁ、と思いつつも概念を理解するためにはこの説明がよいかな?と思いながら書いているところもあります。)

Excelでセルを右クリックしてプロパティを見ると、背景色を変えることができます。 この背景色を赤にすれば画面上でセルは当然赤くなります。 これがプログラムでどのように処理されているのか考える際に、オブジェクト指向でない場合、今選択されたセルの左上と右下の座標をなんらかの形で入手して、その範囲を赤く四角で塗りつぶし、その上にセルに記入されていたテキストを乗せるといったような処理になります。 ただし、実際には罫線であったりテキストのフォントは何か?大きさは?等考えなくてはいけないことは非常に多くなります。 ここで、セルの座標やフォントといった情報をどうやって管理するのか考える必要があるわけですが、配列のようなテーブルを用意してそこに格納しておくといったやり方でも出来るかもしれませんが、非常に複雑です。 オブジェクト指向のプログラムでは、セルに対する処理や処理に必要な情報は、セルと言うプログラムの塊の中に全て隠蔽してしまいます。 どういうことかというと、一つのプログラムの塊の中に、セルの背景色と一緒にセルの座標、フォント、フォントタイプ、フォントの大きさといった情報を全て入れ込んだ状態にしておき、そのプログラムの塊はそのセル以外のことは基本的に考えない形にしておきます。 そして、外部からセルの背景色を変えるよう指示があった場合、その処理はそのプログラムの中で行い、必要な情報もそのプログラムの中から集めて画面上でセルの背景色を変える一連の処理を行います。 このような考え方をカプセル化と言いますが、前の例と比較すると必要な情報の入手は格段に楽になります。

ところが、Excelのセルの場合であれば、セルは大量にあります。 それぞれのセルは背景色もフォントも異なります。 これをどう処理するかといえば、100個セルがあれば、100個似たようなプログラムの塊を作るのです。 しかし、Excelの場合どの程度のセルがあるかはじめから分かっているわけではありません(実際には分かっているのかも知れないけど、まあ突っ込まずに...)から、元となるプログラムの塊があって、それをコピーして100個のセルをつくります。 セルの追加削除があれば元となるプログラムからコピーして、新しいセルのプログラムを作ります。 この時に元となっているプログラムをクラス、100個のコピーで作られたプログラムをオブジェクトと読んでいます。

継承というのはこのクラスを定義する際のテクニックの一つです。 例えばセルで右クリックをすると、そこにはカット、コピー、ペーストといったようなコマンドが並んでいますが、これはテキストボックスでも同じで、行や列を選択しても同じです。 これらのコマンドはオブジェクト指向ではメソッドと呼ばれていますが、この様なExcel上の全ての選択可能な要素のクラス一つ一つにそれぞれメソッドを定義をしていくのは面倒です。 そこで、そういった様々なクラスで共通するメソッドはある抽象的なクラスで定義してしまい、セルやテキストボックスといったそれぞれのクラスはその抽象的なクラスを親としてその定義をコピーし、それぞれのクラスに特化したメソッドだけを差分として定義しようという考え方が継承です。

このようにオブジェクト指向ではプログラム上必要となる様々な要素をクラスとして定義し、それをオブジェクトとしてコピーする(これをインスタンス化するとも言う)ことによってプログラムを成り立たせているわけですが、クラスの種類が多くなってくると、不便なことも起こります。 例えば先の継承の例で、カット、コピー、ペーストは親のクラスで定義したメソッドを子で再利用できるという前提で話をしましたが、もしかするとセルとテキストボックスでは微妙に違った操作が必要になるかもしれません。 カット、コピー、ペーストだと分かりづらいので、削除で考えてみると、セルで削除とすれば上にシフトさせるか左にシフトさせるかといったことを聞いてきますが、テキストボックスで削除すればそんなことはお構い無しに削除です。 つまり同じ様に見えるメソッドでもプログラムとしては全く別物なわけです。 セルとテキストボックスの場合Excelで同時に選択することは出来ませんが、仮に可能だったとしたら、一気に削除!!と、したときにどのように動いて欲しいか...当然、テキストボックスは無条件に削除、セルはシフト方向をユーザーに聞く、という具合にそれぞれ別なプログラムを呼んで欲しいわけです。 プログラマーも同じで「このオブジェクトはクラスが××だから、このメソッド、このオブジェクトはクラスが△△だからこのメソッド...」なんてやっていられない訳です。 この様に、異なるクラスにおいて同じ様に見えて、実際には異なるメソッドを持っていたとしても、同じ様に見えるんだからとにかく実行してしまう。と、いうやり方がポリモルフィズムです。


と...どうでしょう?

正直、Excelの実装とはかなりかけ離れたものになってると思うのですが、一般的なオブジェクト指向の説明だと、車がスポーツカーとSRVに特化されて云々...車も飛行機も右に曲がりたいときは云々...と概念的な話から入って、そこからどうしてプログラムがオブジェクト指向なのかにたどり着く前に飽きちゃうと思うので、こんな説明を考えてみました。

2009年1月5日月曜日

SaaSに関して考える

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

私はといえば、技術士口答試験に向けて、自宅に篭って悶々と準備中の毎日でございます。
この不景気の中、纏めて休みを取ったものだから、家の奥さんは会社をクビになったんじゃないのかと心配しております。 そして、こうやってブログを書いていることを話したところ、「他の受験生に見られたら自分が不利になるんじゃない?」と。 いや、技術士の試験は絶対評価の筈だから関係ないはずなんだが... (そもそもこのブログ、Googleもヤフーも検索にかかってこないぞ。) そういや大学の時、レポートを書く際に同期にノートをコピーさせてあげたら、同期の方が点数良かったことがあったっけ...

今夜は2008年度技術士二次試験見直し中です。
(もちろん、このブログは模範解答を書いているつもりはなく、自分の考えを纏めるために書いているだけです...)
今日のお題は情報工学部門(午後) 情報システムデータ工学のI-1-1

I-1-1 SaaS(Software as a Service)とは何かを説明し、SaaSを導入することによって企業が得られるメリットと課題を述べよ。

割と興味のある分野なので、書きやすいです。
2008年12月31日に書いたブログに一部僕の考えを書きましたが、ここではASPとの対比で考えてみようと思います。
(ところで、ASPってActive Server PageとApplication Service ProviderでTrigramだぶってますね...同じIT業界の中でなんと言うセンスの無い... もちろんここではApplication Service Providerのことです。)

SaaSとASPの技術的相違
他にも、色々と要素はあるのかも知れませんが、僕が着目したのは以下の点です。

シングルシステム・マルチテナント
Google appsやGmailのようなオフィスアプリケーションでは問題にならないのでしょうけれど、業務システムにおいては、程度の大小はあってもユーザー企業ごとの要件の違いは不可避です。 ASPにおいてはユーザー企業(テナント)ごとの要件の違いはテナントごとにシステムリソースを個別に割り当てることで対応していましたが、結果として利用コストが高くなっていました。 SaaSでは、カスタマイズ要素をアプリケーションから分離することで、シングルシステムマルチテナントでありながら、柔軟なカスタマイズ性を実現しています。 代表的なのはSalesforceでしょう。 2008年12月31日にも予告しましたが、近日中に勝手に技術解説(公知の技術を営業妨害にならない範囲で)したいと思いますのでご期待を。


リッチクライアント
ASPが登場した時点でWebアプリケーションのユーザーインターフェースで使用できる技術は静的HTMLが殆どでした。 静的HTMLは表現力の面でWindowsアプリケーションと比較すると大きく劣るものでした。(だから、僕はWindowsアプリが好き) もう少し具体的に言えば、Webアプリケーション上に何かボタンがあったとして、そのクリックイベントに対して一々サーバーと通信し、結果として画面を再描画するため、レスポンスが遅く、しかも画面がちらつくというものでした。
が、JAVA ScriptとWebサービスによる非同期通信の組み合わせである、AJAX等リッチクライアント技術の登場により、WebアプリケーションであってもWindowsアプリケーションと同等の表現力を実現することが可能となりました。 このAJAXですが、具体的には以下のようなHTMLで実現されています。  分かりやすいように、重要な部分だけを抜き出してみました。



そして、これがAJAXの動きです。






①Button Aがクリックされるとイベントハンドリング関数aaaがコールされる


②aaa内では非同期通信用のオブジェクトxmlReqを生成する。 Internet Explorerの場合は、ActiveX ObjectのMicrosoft.XMLHTTPを、その他のブラウザではXMLHttpRequestというオブジェクトを使用する。 このxmlReqがサーバと通信を開始するが、ブラウザ上でユーザーがこの通信を感知することは無いし、HTMLページに対する更新も起こらない。(これがサーバーのレスポンスを待つことを不要とする操作性を実現しているわけであるが、同時にセキュリティ上のリスクにもなり得る。)


③xmlReq内にonreadystatechangeとしてコールバック関数を定義しておく、サーバーからの応答はここで定義された関数内でハンドリングする。


④コールバック関数からHTML内で更新すべき要素に対して更新処理をかける。 この処理はHTML全体のリフレッシュではなく、HTML内の一部に対するものであるため、画面のチラつきは起こらない。

Webサービス
以前、某学会でSalesforceの社長が言っていたのは、Salesforceの提供するWebサービスを利用することで、ユーザーはマッシュアップにより独自のアプリケーションを創造することができるという。

なるほどー

SaaSの導入によって企業が得られるメリット
1)初期投資の抑制
パッケージソフトウェアの導入では、システム導入に踏み切る際の初期導入コストが大きく、投資対効果を明確にしづらい場合、導入が難しかったわけですが、SaaSはハードウェアを含めて従量制を取ることが出来るため、初期導入コストを抑えることができ、開発リスクを抑えることが出来ます。
2)管理コストの削減
SaaSにおいては、サーバハードウェアのメンテナンス、データのバックアップ、ソフトウェアのパッチ対応等の管理業務がサービス提供側の責務となります。 サービス利用企業毎に専門の管理者を常駐させる場合、定常的に業務量が確保できなければ管理コストが高くつくことになりますが、SaaSの提供者側にとっては、専門の管理者が複数のサービス利用企業を管理することが可能であるため、業務量の平準化とノウハウの蓄積により効率の良い管理が可能であり、結果として質の良いサービスを低コストで提供できると言えるのではないでしょうか。
3)セキュリティの向上
管理コストと同様、セキュリティにおいても管理者の教育等、複数のサービス利用企業を一括で管理する場合、効率が良いと言えるのではないでしょうか。
(AJAXの場合、JAVAスクリプトの使用等、セキュリティ上のリスクが増す面もありますが...)

SaaS導入における課題
SaaS導入における最大の課題は、データや企業の業務プロセスの投影とも言えるアプリケーションが場所的にSaaS提供者側にあることに対する抵抗感の問題でしょう。 特にサービスが取り扱うデータがサービス利用企業の競争力の源泉であれば、その管理を第三者に委ねることに抵抗があるのは当然でしょう。 また、企業活動の根幹に関わる高い可用性を要求されるサービスであれば、そういったサービスを第三者に委ねることにも抵抗があるでしょう。 これらの問題は、技術的にはセキュリティと高可用性の問題であり、SaaS利用の拡大と共に実績によりユーザーの抵抗感が薄れていくことでしょう。 


これって、分譲マンションと賃貸マンションの話と似てるなぁ...
キャッシュフロー的には賃貸の方が得な筈なんだが、それでもやっぱりマンションが欲しい。