仕様書をExcelで書くな

過去に仕様書と名の付くものをいくつも見てきたし、書いてきた。

この手のものをどう書くかは、自分の所属する組織がどういう流儀に従っているかが最重要で、個人の趣味はどうでもいいことはよく知っている。

そして、今まで自分が所属した組織では、MS-WordWikiのいずれかだった。

その他に外部のレビューアーとして見てきた仕様書も多数あるが、その多くはExcel方眼紙だったと思う。
まあ他人が書く分には自分にそれほど被害がないので、(色々な意味で)すごいな、と思っていただけだった。

しかし、ついに俺もExcel方眼紙デビューしなければならないかもしれない状況になってきた。
それは心の底から嫌なので、仕様書をExcelで書くべきでない理由を考えてみた。

  • 画面での見た目通りに印刷できない
    • Excelって、なんかずれるよね?
  • セルからはみ出た文字列が隣りのセルの下に隠れる
    • で、隣のセルを別の場所に移動することになる
  • 1セルに表示可能なのは1024文字まで
    • で、セル内改行を使わずに行単位にセルを分けるもんだから、書きづらいし、修正が大変
  • スタイルを統一できない
    • 書式のコピペが大変!
  • 章や段落の見出し番号が手動設定
    • 文書構成変えることになったら目も当てられない
  • 図表番号を自動生成できない
    • まあ、章番号を手で振るついでに、図表番号も振ればいいですね!?
  • 文書が構造化されない
    • これも後で修正が大変になる要因
  • 目次を作成できない
    • だって構造がないし
  • 文書内を参照できない
    • だって構造がないし

改めて考えてみると、つまりはExcelだと最初の文書作成のときだけは何とかなるけど、その後の修正に耐えられないということだね。で、修正が面倒だからやらなくなって、コードとドキュメントの乖離が発生すると。

さて、Powerpointで仕様書を書くのはどうなんだろうか?
上記の理由で明らかにPowerpointにも当てはまるのは「見出し番号」と「目次を作成できない」くらいなもん。
図表番号は、スライド番号がそれだと思えばいいわけだし。
しかし、その見出し番号だけでも重罪。
あとは、よくスライド内にテキストボックスをペタペタ貼るけど、それで構造が壊れるしね。

Powerpointだと、仕様書をプロジェクターで映しながらレビューできるのがいい! というのは、認めなくもない。
でも、Wordのページ設定を横向きにして、全画面表示すればいいんじゃないのか?

まあとにかく、俺はWordが好きなわけじゃないけど、仕様書を書くということについて言えば、ExcelPowerpointよりははるかにまし。

Heroku-jaでLTしてきた

今日、Heroku-ja Meetup #1というイベントで、人生初のLightning Talkなるものをしてきた。

と言っても、どうしても話したいネタがあったわけではない。
参加者募集への応募に乗り遅れてしまい、ATNDで申し込んだ時には補欠30人待ち状態で繰り上げは絶望的だったけど、それでもどうしても参加したかったのでLTの空き枠に立候補した次第。

いちおう社内では数少ないRails経験者ということで、Heroku案件は俺のものだ! という思いもあり、だからといってHerokuに特別詳しいわけでもないので、ぜひHerokuの世界の皆さんとお近づきになりたかったのですね。

しかし、はっきり言って人様のお役にたてる内容のLTなどできやしないので、ノリと勢いで行くしかない!

幸い最近の仕事でちょっとだけHerokuを触る機会があったので、それをネタに下らないストーリーを仕立てあげました。
いちおうスライドを公開しておきます。

http://www.slideshare.net/yebihara/ss-8534925

あと、どうやらUstの録画もあるようです。

LT後に話した人たちはみんなとても優しく、「よかった」「楽しかった」と言ってくれたのには感謝の限りです!
もうこちらとしては恐縮するばかりで「お粗末なプレゼンでスミマセン・・・」状態でしたよ。

いつからか時間の使い方が実に下手になってしまって、仕事以外に時間を割くということができなくなっていたんだけど、最近はかなり復活してきて、これからは仕事以外の場所にも積極的に顔を出していこうかなと思っています。

次は初心に戻ってデータベース/SQL系で何かしゃべるのもいいかな。

PFIのことと、SFDCのことと

明けましておめでとうございます。
約1年ぶりのエントリーとなりました。

いろんな意味でビミョーなタイミングでの報告になるのですが、昨年末をもってPreferred Infrastructure(PFI)を退職し、今年からsalesforce.comで働き始めることになりました。

PFIはとても良い会社です。本当に優秀な人たちがたくさんいて、僕は今まで知らなかった世界を知ることができました。同時に僕は自身の真の競争力と限界も知ることになり、その結果、自分とPFIはgood matchではないと思うようになりました。

PFIが今後も着実に成長を続けていく点については、疑う余地はありません。自分から辞めると言っておきながらも、それをPFIの一員として経験できないのは、実に惜しいことです。けれども、自分がその成長にどのように、どれくらい貢献できるだろうかと考えると、正直あまりエキサイティングではなく、年齢的にも新しいキャリアを探すのであれば今がギリギリだという事情もありました。

いずれにせよ、そんなワガママな理由にも関わらず、温かい言葉で送り出してくれたPFIの仲間達には感謝の気持ちでいっぱいです。今後は外部から応援しながら、PFIの成功を楽しみに見守りたいと思います。

一方、salesforce.com(SFDC)。

クラウド」がバズワードかどうかは知りませんが、それが意味するところは本質的な価値を持つものだと強く信じています。もうクラウドコンピューティングへの流れは止まらない。とすると、次の10年、20年を考えた時に、それを知らないのはキャリア的にあまりにマズすぎる。

職探しの方向性はこれで決まり。

で、SFDCという会社は、7、8年くらい前に初めて知って興味を持ち、製品紹介セミナーに参加して「これは大成功する」と確信して以来、ずーーーっと動向が気になっていたんですね。というか、ファンですね。ユーザーとしてももう5年くらい使っています。

現在の業界においてリーダーと見なされており、将来性も文句なし。自分の持つスキルと、Job DescriptionのRequirementsとの適合度合いもえらく高かった。

というわけで、今回の転職理由の4割くらいを説明できました。
それ以上聞きたい人は、転職祝いを企画してください。

それにしても入社直前のタイミングでのDatabase.comとHeroku買収の発表は驚いた。データベースは自分のこれまでのキャリアの中でも中心的な分野だし、PFIではここのところずっとRails開発やってたのよね。

なにはともあれ、今後はSFDCの一員としてがんばりますので、どうぞよろしくお願いします。

それでは1年後にまた。

ActiveScaffoldすごい

最近はすっかりRuby屋さんになっています。
特にRuby on Railsを使っとります。
中でもActiveScaffoldというプラグインが素晴らしい。管理用にデータベースのマスターメンテ画面を作るくらいの用途だと、ほぼノンコーディングでとてもリッチなWebアプリを作ることができる。
きれいに正規化されたRDBとの相性は抜群で、テーブル間のリレーションを、自分では全く作る気にならないようなAjaxインターフェースで操作できるのである。(作る気になるならないの前に、そもそも作れないのだが)

そんなActiveScaffoldの日本語のまとまった情報というのは非常に少ない。自然と英語の情報を参照することになるのだが、実はこれがかなり混乱している。

本家の最新情報はここにまとまってます。
http://wiki.github.com/activescaffold/active_scaffold/

一方、activescaffold.comというサイトもあります。しかし、こっちは見てはいけません。サイトがメンテナンスされておらず、情報が古いのです。

これは最近のActiveScaffold MLで何度も何度も問題になっています。さらに、ActiveScaffoldでググると、こっちが上にランクされてしまうというのも罠です。

まあ、なんでこんなことを突然書くかというと、実はこんな議論があるからなのです。
http://groups.google.com/group/activescaffold/browse_thread/thread/24f1f4557594d40c

つまり、みんなで本家のほうにリンクを張って、ページランクでactivescaffold.comよりも上位になるようにしよう! ということです。

正直言って、この日記は被リンク数がゼロに近いので、ここに書いてもGoogleのランキングに与える影響は非常に小さいのですが、気持ちだけでも協力ということで。

NetBeansでSVN接続

ここのところRailsアプリケーションを作っているのだが、色々と仕組みを覚えるために、あえてLinuxシェル + viのみの非常にプリミティブな環境で開発してきた。
さて、開発がひと段落して、自分もRailsに慣れてきたので、そろそろ便利ツールを使ってみようかと思った。

環境的にはこんな感じ。

で、NetBeansのインストールまでは特に問題なかったのだが、SVNに接続するところで一苦労。

まずはメニューから、チーム > Subversion > チェックアウト、を選択。表示された画面にはリポジトリのURLを入力するボックスがあるのだが、今の開発環境のSVNには、sshでないとアクセスできないので、

svn+ssh://ホスト/パス

みたいなURLを入力する。すると、「トンネルコマンド」という入力エリアが現れる。画面のサンプルに従って、

plink -l yebihara -i "C:\Documents and Settings\yebihara\My Documents\ssh\myhost\privatekey.ppk"

と打ち込んで「次へ」をクリックするのだが、次のようなエラーが起きてしまう。

org.tigris.subversion.javahl.ClientException: Network connection closed unexpectedly

最初はコマンドラインの書き方が悪いのかと思って色々試してみたが、どれもだめ。
そこで見つけたのがこのページ。
http://nucleus.panasocli.cc/index.php?itemid=425
plinkwが何なのか分からんが、とにかく試してみる。そしたら、このぺーじのようにうまくいったー!、ということはなく、相変わらずエラーが出るんだけど、次のメッセージが見えるようになった。

Unable to use key file "C:Documents and SettingsyebiharaMy Documentssshmyhostprivatekey.ppk" (unable to open file)
FATAL ERROR: Disconnected: No supported authentication methods available

ん? ファイルパスから"\"が消えてる!?
ということで、パス区切りを"\\"に変えてあげたらうまくいったのでした。

plink -l yebihara -i "C:\\Documents and Settings\\yebihara\\My Documents\\ssh\\myhost\\privatekey.ppk"

ちなみに、オフィシャルWikiにはこんな情報もある。
http://wiki.netbeans.org/FaqSubversionSSH
けど、別にconfigファイルを直接書き替えなくても大丈夫だった。GUIからトンネルコマンドを指定できるようになったのは、もしかしたらNetBeansの最近のバージョンになってからなのかもしれない。

(追記)
チェックアウト時に指定したトンネルコマンドが、後でチェックアウトしたワークスペースを更新(svn update)したりするときに使われないっぽい。
オフィシャルWikiに書いてあるとおりに、configファイルを書き換えれば更新できたけど・・・。

あと、"\\"の件は、configファイルにコメントで書いてあった。Unix-likeに"/"を使ってもいいらしい。

plinkだと、SVNにアクセスするたびにコマンドプロンプトの黒画面が出てきてうざいけど、plinkwにしてあげると何も表示されなくて気持ちいい!

LinuxコマンドラインでURLエンコード

お仕事メモ。
ちょっとした事情により、Linuxコマンドラインで手軽に文字列をURLエンコードしたくなった。

ruby -r cgi -e 'puts CGI.escape("URLエンコードする文字列")'

これだけ。

シェルでマルチラインコメント

仕事中に「シェルでマルチラインコメントはどう書くんだーっ!」という叫び声が聞こえてきたので、考えてみた。シェルって、Bシェルとかbashとかね。

cat << EOF > /dev/null
export VAR1=1
export VAR2=2
export VAR3=3
EOF

意外とできるもんだな、とか思って我ながらご満悦だったんだけど、やっぱりもっとスマートな方法を思いつく人はいるのであった。
http://www.geocities.jp/geo_sunisland/tips.html#tips-2

でも、どっちにしても気持ち悪いので、viでこんなコマンドを打つほうが趣味だ。(3行目から5行目をコメントアウトする例)

%3,5s/^/#/

シェルばんざーい!