« March 2007 | Main | May 2007 »

2007.04.29

プログラマが就職・転職する前に、発注者が仕事を頼む前に読むべき本

4274066568 Ship It! ソフトウェアプロジェクト 成功のための達人式ガイドブック
Jared Richardson William Gwaltney Jr. でびあんぐる
オーム社  2006-08-26

by G-Tools

僕自身は仕事でプログラムを作成する機会はないのだが、元請として発注する側に立つ機会は多いので、少しでも彼らの「言葉」を知っておこうと読んでみたのだが、読んで少し怖いと思った。

いわゆるCVSやSubversionなどのソースコード管理ソフトあたりの話から始まり、テストハーネスやレビュー、そして毎日のミーティングなどに話が及ぶのだが、それぞれの説明が怖いほど具体的なのだ。

ある状況、それは特別レアではなく、むしろ頻繁に起こりそうな状況で、ソースコード管理ツールを使っていなかったら、どうなっていたか、ということまで書いてあるわけだ。

プログラムに限らず、いわゆるITの世界は、「個人」の能力により効率が数倍ではなく数百倍まで開くのだが、それと同じことが「組織」にも言えるわけだが、それによって同じ能力のプログラマが幸せになったり不幸になったりする。

タイトルに「プログラマが就職・転職前に」と書いたのは、悪いほうの組織に入ってしまって不幸にならないよう、就職・転職前に、どういう環境だと不幸になるのか、という具体例を頭に入れておくのもいいのではないか、という意味で。

「発注者が仕事を頼む前に」と書いたのは、まさしく僕の立場もそうなのだが、仕事を頼む先の見極め方を知る方法として、現場の雰囲気を少しでも知るため(最近は開発者以外は打ち合わせ卓までしか入れてくれないところだらけだし)読んでおくといいと思う。

もちろん、俺が組織を変えていく、皆の仕事を効率よくしていくのだ、という志の高い人が読むべきなのは言うまでもない。というか、本当に、そういう人に読んでほしい。

海外モノ特有の言い回し(大聖堂とか)も、この本では嫌味でなく、おせっかいなぐらいに丁寧な実現への筋道まで示してくれている。

| | Comments (0) | TrackBack (0)

システム最適化RPGというジャンルを考えてみた

連休の野望のひとつが、ヤズマットと戦いながら掃除する、というささやかなものだった。

ヤズマットって何かって?

最近になってファイナルファンタジー12を始めたのだが、その中に出てくる敵。ゲームをクリアするためには必ずしも倒さなくてよい敵なのだけど、乗りかかった船みたいな感じで戦っているところ。

で、ゲームで「戦う」というと、ボタン連打とかしか想像できないほどゲーム童貞な俺だったが、このゲームは「XXに弱い敵→XX」とか「体力>XXパーセントの見方→XX」みたいにガンピットというコマンドを用意しておいて、敵と向かい合うと、設定したとおりに戦うという仕組みになっている。

なので、ヤズマットと戦う場合も

・こいつはXXが弱点なので、XXで戦う
・誰か死んだらXXを使って自動的に復活させる
・体力がなくなっても、復活させてる間に攻撃されるので
 3人のうち2人は死ぬまで戦いっぱなし

とか設定して戦い(実際には、最初は敵の特性がわからないので、設定も試行錯誤)、リーダが死んだとか、手を出す必要がある箇所以外はCPUが勝手に回ってて、数分おきに画面を見るだけとなる。その間に掃除でもしようかと。

というか、それぐらいヤズマットを倒すのは時間がかかるのだが、ちょっと別の武器を試したりしてるうちに、サーバやネットワークの最適化のために設定を書いているような気分になってきた。

それならいっそ、システム最適化を前面に出したゲームなんて面白いんじゃない?と思ったわけだが、作るとしたら、どんな感じになるんだろう。

1.最初は社内のボトルネック探しから

 社内システムを担当しているという設定で、営業担当などのトランザクションを処理できなかったら苦情ポイントが溜まるストレスフルなステージ。

 安っぽいスイッチであれば交換していい。そういえば、お金はどうしよう。情報化の予算は定期的に増えるとして、特別予算獲得みたいなイベントは面倒だろうな。

 人事異動とかが中ボスみたいなイメージで定期的にやってくる。大抵は優先順位とか気にしないが、たまに結婚して姓が変わったり、離婚して姓が戻ったり、といった絶妙なアカウント管理もこなさなければいけない。(偉い人のアカウント処理をミスすると大ダメージ)

 設定方法などは人に聞くという、RPGのクラシックな手法でもいいかもしれない。ただ、いじわるな質問をする先輩とか、ギブテクを要求する先輩とか用意しておく。

 WindowsサーバのActiveDirectoryみたいに、他のアカウント管理と統合して大幅に効率化したり、いろいろ自動化させてスケジュールに5連休をぶちこめたらクリアとか。

2.不正侵入とか社内の脅威(情報漏洩)とかを突き止める

 同じく社内システム担当だが、今度は不正侵入と戦う。いろいろな種類の脅威にファイアウォールの設定を変更したりして対応するのだが、少し対応すると大幅にパフォーマンスが落ちたりして、そこでも苦情ポイント。

 あと、これもActiveDirectory絡みだが、USBを認識させないとか、不満が爆発しない程度に苦情ポイントを稼ぎつつ、情報漏洩みたいな信頼性のポイントを下げていくというバランスを保つ。このバランス感が、最初に配属する会社の属性(仕事の内容とか)によって違ったりすると、リアルで面白いかも。

 で、コツコツと予算が溜まって指紋認証とか入れることができて、プライバシーマーク取得できましたってゴールは現実的すぎて寒いかな。

3.Webサーバ(ロードバランサなし)

 外部(お客様)向けシステムに転属となったが、安いサーバで、いかに大量の要求を処理するか、といったステージ。

 最初のうちは、企画担当が変なマーケティングを展開し、システム担当に相談なしに動画をアップしたりするのをサーバ増設できるまではkeepaliveとかRequestPerChildとか焼け石に水な対処で何を乗り切る。アクセス解析も、情報量は多いが処理が重いソフトを入れるか、処理も軽いソフトを入れるか、とか、そんな細かい選択を淡々とこなす。(ログでDNSを引かせないとか)

 途中から、マーケティング担当に事前に聞くことができるようになる(それまでは前触れもなく苦情が来て、エラーメッセージしか見ることができない)とか、画像ファイルは別で処理させるためサーバを1台増設とか、できることが増える。ゲームなので5年リースみたいなサーバも感覚的には30分でリース更改になるみたいなデフォルメは必要だろうな。

 どのあたりが、クリアできるポイントだろうか。Yahooに紹介されて落ちる、いわゆるYahoo!アタックにも動じないとか、そんな感じかな。

4.Webサーバ(ロードバランサあり)

 より大規模なシステムを任され、使う機器も大規模になってくる。個人的には未体験ゾーンなので想像もできないが、データベースも冗長構成にしたり、いろいろあるんだろうけど、できればシナリオベースで、どんな機器を入れたからOKということではなく、実際にPS3あたりのマシンパワーでスループットをシミュレーションしてゲームに反映されると「プロも勉強になるゲーム」になるだろうか。(競馬のプロが競馬のゲームをするような感じ)

そう、誰か作るとしたら人生ゲームみたいに起業家をもてはやして、お金持ちでハッピーエンドみたいなのじゃなく、現場で機器を操るドラマを変な脚色なしでお願いしたいなぁ。というか、そういうゲームって、ないんですかね。

--

そうそう、書いてる間にヤズマット君は討伐できました。(掃除は終わってない)

ネットワークセキュリティHacks―プロが使うテクニック&ツール100選
ネットワークセキュリティHacks―プロが使うテクニック&ツール100選アンドリュー ロックハート Andrew Lockhart 渡辺 勝弘

オライリージャパン 2005-01
売り上げランキング : 70388

おすすめ平均 star
star天空から鳥瞰的に見渡す『神』となる楽しさを秘めている
starセキュリティ対策カタログ

Amazonで詳しく見る
by G-Tools

Linuxサーバ Hacks 2 ―コネクティング、モニタリング、トラブルシューティング
Linuxサーバ Hacks 2 ―コネクティング、モニタリング、トラブルシューティングBill von Hagen Brian K. Jones 菅野 良二

おすすめ平均
stars読み物としても楽しめる
starsハイアマチュアのサーバ管理者へ

Amazonで詳しく見る
by G-Tools

| | Comments (0) | TrackBack (0)

2007.04.16

気の利いたExcelマクロの作り方

一時期、Excelのマクロ(VBA)はウィルスの温床みたいに言われていたが、信頼できる配布元であれば、実に強力で、かつスピーディに作れるため、このところ多用し始めている。

しかし、スピーディに作れるからといって手を抜きすぎると、知らない人が使う時に面倒な事になる(いきなりスクリプトの編集画面が出てパニックを起こす)ので、押さえておくべき要所をメモしておく。

1.シートに使い方が載っている

最近はツールメニューから選んでいるスクリーンショットを貼り付けている。使い方を書いたシートは枠線を消しておくと表計算っぽくなくてポイント高い。

2.長くかかる処理はステータスバーに進捗を表示する。

C言語などで作れば一瞬で終わる処理もExcelの手にかかると、まるでフリーズしたかのような様相を呈する。これについては、

 Application.StatusBar = "第1段階 作業中"

などと1行書いておくだけで、とりあえず安心できる。ただしマクロの最後に

 Application.StatusBar = false

と書いておかないと、ステータスバーが元に戻らなくなるので注意。

なお最後にfalseではなく、処理時間を表示すると、特大ファイルを処理するのを思いとどまってくれるという効果を期待できる。(しばらくステータスバーが元に戻らないが)

 StartTime = Timer
 '''処理'''
 FinishTime = Timer
 MsgBox "処理時間:" & ((StartTime - FinishTime) Mod 3600) & "秒"

3.エラー処理している。できれば、フォーマットのチェックする別マクロを用意する

別のファイルを処理するマクロというのが、多分、最も需要があるのだと思うが、たまにとんでもない形式のファイルを処理させようとしている方々に遭遇する。そういうときに適切なメッセージを送らないとスクリプトの編集画面が出てきてパニックを起こすので、せめてOnError Go Toは必須にしておく。

詳細はこちらのURLで。

http://support.microsoft.com/kb/213637/ja?spid=1741&sid=361

4.定数や動作条件はシート上で設定する

これは最近、思いついた。

それまで、ソース上にdebug=trueとか書いていたがExcelの場合、シート上の値を拾ってこれるので、シートで説明つきで定数を定義する。

動作条件についてはInputBoxなどで選択できるようにしてもいいかもしれないが、Excelのマクロで前回の処理内容を記憶させて、というのは大技の部類に入ると思うので(よく知らないけど・・・)、シートをiniファイルっぽく使うのが楽な気がする。1のテクニックとあわせてもよい。

5.印刷プレビューで終了

これも最近、思いついた。

処理終了後にMsgbox("終了しました")っていうのは、よく見るが、マクロ終了後に必ず印刷するようであれば、印刷プレビューまでマクロで持っていくのが親切だと思う。次の一文を書けばよい。

 ActiveWindow.SelectedSheets.PrintPreview

もちろん、印刷プレビューが不要な場合は、4のテクニックでユーザ自身が設定変更できるようにする。

--

あと、いろいろあった気がするが、また別の機会に。

--

そういえば、おすすめの本って、ないんだよなぁ。。。

| | Comments (0) | TrackBack (0)

2007.04.15

以下に携帯RSSリーダーに関する愚見を述べる

携帯RSSリーダーを考える際、第一選択は既読管理であるという考えは今も変わらない。

しかしながら、現実には僕自身がそうであったように、気付いた頃には未読の山ということが、しばしば見受けられる。

その場合には、

・既読管理したいコンテンツはLivedoor Readerで、既読管理しないようなコンテンツは、はてなRSSをログインしない状態で、と使い分ける。

・Yahoo!Pipeなどで加工した状態でRSSリーダに流し込む。天気予報など1日1コンテンツしか更新されないフィードを幾つか「朝に読む」とまとめてみたが、クリック~更新回数が短縮されてなかなかよい。

・自分でログインするRSSリーダは本当に自分の読みたいものだけにして、時間つぶしや「読めたら読む」なコンテンツは他人のRSSリーダから読むことにする。

といった方法が考えられるが、残念ながら携帯だけではなくPCを使わざるをえない時点で、満足のいく結果には至っていない。これからのRSSの飛躍はRSSリーダー以外のツールにかかっている。僕は君がその一翼を担うギークであると信じている。能力のあるものは、それを正しく行使する責務がある。

遠くない未来に、目にする情報の大半を携帯RSSで取得できることを信じている。

なお、自ら携帯RSSリーダのヘビーユーザでありながら、未読の山に生まれて息も絶え絶えであることを心より恥じる。

白い巨塔 DVD-BOX 第一部
白い巨塔 DVD-BOX 第一部唐沢寿明 山崎豊子 江口洋介

おすすめ平均
stars石坂浩二が凄い
starsオモシロいけど・・・
stars日本のTVドラマの最高傑作
stars笑顔の裏で高度な言葉のコミュニケーションによる互いの権力の牽制
stars見る人を引き込む力は第一級

Amazonで詳しく見る
by G-Tools

| | Comments (1) | TrackBack (0)

2007.04.04

カッコ悪いExcelの作り方

疲れてるときに遭遇すると格別な効果をもたらすExcelのテクを集めてみました。あまり関わりたくない相手に贈りつけてもいいかもしれません。

印刷ボタンは自爆装置
・印刷が一枚に収まらず、大量の計算用紙を生成する。
・白黒印刷すると読めない色遣い。
・ページが振られてない。20ページもあるのに。
・行タイトルが指定されていないので、2ページ以降は何のデータかわからない。

見やすさに気を配れていない例
・全角半角が統一されてない(関係ないが古川ブログもひどい)
・フォントが不揃い。大きさも書体も
・情報量と列の幅があってない
見やすくしてるつもりかもしれない例
・セル結合の乱用でコピペできない
・線をよく見たら、セルの枠ではなく図形描画で書かれたものだった。

探してほしくなさそうな情報
・ファイル名がローマ字、しかも間違っている。bessi.xlsとか
・ファイル名とタイトルと中身と合ってない
・シートが何枚もあるのにシート名がデフォルトのまま
・かと思うと白紙のシートが何枚もある

会議が盛り上がるExcel
・更新日の欄があるが、誰も更新せず、常に誤った日付。そして会議はこの欄のツッコミから始まる
・担当者の欄に名前を書かれた人が口々に「俺じゃないだろ」
・優先度の欄にAと優先と1がある。何から始めればいいのさ。
・一覧の内容が揃ってない。作業項目の欄なのに課題が混ざっていたり

実話
・パスワードを作った本人が思い出せない。そのファイルが開けないと誰もログインの仕方を知らないのに
・ファイルのプロパティに関係ない会社の人の名前が書かれている。多分、何も考えずに下請会社の作ったファイルを再利用したのだろう
・金額の欄に1e6と書かれた見積書。まあ伝わらなくはないが

怠惰も美徳(僕はこうしている)
・印刷ボタンは非表示にしてプレビューボタンを押すことにする。
・日付は入力しない-ヘッダに自動挿入させる
・項番は振らない-枠線を印刷する
・タイトルは入力しない-ファイル名をヘッダに表示
・利用者情報はイニシアルだけにする。誰が使い回すかわからないため
・セル結合は使わない
・全角半角交じりはJIS関数またはASC関数で、どちらかに統一する。

| | Comments (0) | TrackBack (0)

« March 2007 | Main | May 2007 »