| @雑談

福岡に引っ越したので、熊本では参加することが難しいIT系のイベントに行ってみた。ANTENNAというイベントで、公式サイトには「Tech系サービスの発信とネットワーキングイベントです」とある。そのイベントのVol. 1に行ってみた。

Abbyのwagaco、もぐらのmaysee、FusicのZENPREのプレゼンが行われた後は名刺交換会が行われた。社交性皆無だし名刺も持ってないので同行者と駄弁ってひたすら飲み食いしてるだけだったけど(BacklogやCacooのヌーラボの社長さんとはちょっと喋った)、みんな自社のサービスについて楽しそうにプレゼンしててすごくうらやましかった。参加者からマネタイズどうすんのみたいな鋭い質問に対して、ZENPREをやってるFusicの中の人はマネタイズより福岡から面白いツールを作って世界に発信していきたい、ということを言っていた。

『情熱プログラマー』の中にGitHubの共同創設者のTom Preston-Wernerの書いたエッセーが載ってる。GitHubが始まったときのエピソードで、マイクロソフトからの30万ドルのオファーを蹴ってGitHubを始めたときの話だ。また37Signalsのブログ内のBootstrapped, Profitable, & Proudという企画で、GitHubのもう一人の創設者、Chris Wanstrathへのインタビューが掲載されている。

そこでもGitHubを始めたときのきっかけとか、理念が述べられている。ZENPREについて言ってたFusicの人と同じで、お金のことより、Git自体が素晴らしくて、それを広めるためのハブを作ろうとした、マネタイズは後から考えた、と語っている。確かにGitHubはGitのチュートリアルが充実してて、自分も何度もGitHubのチュートリアルを読んでGitの使い方はもちろん、SSH接続のやり方も学んだ。こういうのとてもかっこいい。

GitHubは成功した会社だからそんなきれい事が言えるんだよ、と言われたらそれまで。そんなことは分かっている。でも自分がやってる仕事を楽しんで、誇りを持って取り組めなければちっとも楽しくない。金を稼ぐために夢や達成感や誇りを捨てるのか。世の中の役に立ちながら金も稼げて達成感を得るのが一番かっこいいじゃないか。

37SignalsのJason Friedはことあるごとにベンチャーキャピタルの出資を受け入れるな(Bootstrapped)、利益を出せるようになれ(Profitable)、と言う。ここはアメリカじゃないし、37SignalsやGitHubみたいに何もかもがうまく行くとは思えない。でも夢や理念を実現しようとしない人生はつまらない。酒を飲みながら、自分たちが作ったものに対して誇らしげにプレゼンしてた人たちがとてもうらやましかったし、その熱にほだされた。

勉強しよう。

| @ブログ

昨年末から今年の正月にかけてXREAで借りてたサーバーが障害に見舞われてデータがぶっ飛んだけど、なんと今週、DreamHostでも障害が発生してサーバー(budapest)が落ち、データがぶっ飛んだ。

Jekyllでやってるパソコンブログの方はGitとJekyllの組み合わせのデプロイ環境が最強すぎて一瞬で再開できたんだけど、 www.portalshit.net は正直結構大変だろうなぁと思ってた。ところがサーバーが復旧した翌日くらいにはちゃんとDreamHost側でとってたバックアップがコピーされ、自分では何もすることなくサイトが復旧してた。しかも、サーバー復旧後、一旦ユーザーディレクトリは空になってたので自分でドットファイルと tech.portalshit.net だけ再アップロードしといたんだけど、そちらはこちらでアップロードしたものが残され、 www.portalshit.net と cinema.portalshit.net の内容だけがバックアップからコピーされてた。DreamHost、やるやないけ。障害報告ページでいきなり「こちらにデータの復旧義務はない」とか高らかに宣言してるXREAとは大違い。

まじでDreamHostはSSHできるしPassenger使えるし、今回みたいな障害のときも頑張って復旧してくれるし、Railsっ子にも安心してご利用いただけます。商売には向かないと思うけどね。オヌヌメ。

| @技術/プログラミング

外タレのJekyllブログを見てると、シャレオツな感じでコードがシンタックスハイライトされてる。どうもPygmentsというやつを使うらしい。公式Wikiでも触れられていて、コードをハイライトさせたいときは jekyll --pygments しろや、みたいなことが書いてあるんだけど(Liquid Extensions - jekyll - GitHub)、そういうオプションつけてもコードは全然色つきにならず、「サギやんけ」とか思ってた。

しかしマニュアルをよく読むと、PygmentsってのはPython製のソフトで、こいつを別途インストールする必要があるらしい。なるほどそういうことだったのか。そういうわけで

$ port search pygments

してみたところ、MacPortsでは三つヒットした。

py-pygments @1.0 (python, devel)
    Python syntax highlighter

py25-pygments @1.0 (python, devel)
    Python syntax highlighter

py26-pygments @1.3.1 (python, devel)
    Python syntax highlighter

Found 3 ports.

しかしSnow LeopardにはPython 2.6.1が入ってるので、

$ easy_install Pygments

でもオッケーかも知れない。僕は職場に持ち込んでMacBookにはMacPortsから py26-pygments を入れた。そしたらdependencyが発動してPythonとかXorg何とかというもののダウンロードも始まり、 /opt/local/bin/python-2.6.5 が入ったが、長々と時間がかかった。※1

インストール完了後、これでシャレオツシンタックスハイライティングできるようになったと思い、意気揚々と

$ jekyll --pygments

してみたのだが、一向にハイライトされない。なんか「pygmentizeとか見つからないし」みたいなエラーが出る。なんでじゃ〜とイライラしながら公式Wikiを読んでると、次のような記述があった。

the pygmentize binary must be in your path

そうなのよ。 pygmentize-1.3.1 っていうバイナリファイルはあってパスは通ってるんだけど、 pygmentize そのものがないのよ。そういうわけで

$ sudo ln -s /opt/local/bin/pygmentize-1.3.1 /opt/local/bin/pygmentize

してやった。すると pygmentize というバイナリファイルにパスが通るので、めでたくシャレオツシンッタクスハイライティング環境が手に入った。ちなみにCSSはGithub互換のものを拾ってきて入れといた。

| @技術/プログラミング

このブログのCMSをMephistoからjekyllに変えてみた。

Mephistoは公式サイトつながらないし、Mephisto使ってた外国のGeek連中がここ一年くらいでこぞってJekyllに移行してるみたいなのでこのビッグウェーブに乗ってみた。

Jekyll = 静的CMS

しばらくJekyllの使い方が分からなくて格闘してたけど、やっと使い方が分かった。これは静的なCMSであって動的なCMSではない。Movable Typeに似てる。それをGeekなスタイルでやる感じ。

Rubyが入ってるサーバーはいらない

コメント機能とかはないのでサーバーでRubyが動く必要はナッシング。DBも使わないのでMySQLの設定とかSQL分との格闘も必要ナッシング。コメント欄が欲しい場合は DISQUS とかに外注すればOK。

ちょっと話題がずれるけど、DISQUSって便利そうですよね。他人のブログにコメント書いたあとってそのコントロール権みたいのはブログの持ち主に移行するけど、DISQUSみたいなサービスを利用すればコメントを書いた本人が過去の自分のコメントをトラックしやすくなる。ブログ主にしたってスパム対策とかもやりやすくなる。自前で自分のブログにコメント欄を持つって時代は終わったのかもね。いまはTwitterとかもあるし。

Mephistoからの移行について

Jekyllのgithubのwikiに移行方法が載っけてあるけど(Blog Migrations - jekyll - GitHub)、これわかりにくい。というかMephistoをMySQLで運用してないとスクリプトをそのまんまでは利用できない。結果から書くと僕はMephistoはSQLite3で運用してたので移行スクリプトを使えなかった。

一応MephistoのDBをSQLite3からMySQLに変更してコンバートすることも試してみたけど、DreamHost上では gem install mysqlplussudo 権限がないために実行できず(なぜかユーザーディレクトリへのインストールもはねられる)、ローカルのMacBook上ではActiveRecordとかその辺でエラーが出て(MephistoはRails 2.2.2以下じゃないと動かないみたい)、Railsのバージョンを下げるとかも試してみたんだけどエラーが出続けるので諦めてしまった。

そういうわけでして、記事数が16本と少なかったこともあり、ちまちま手書きでMephistoからJekyllに移行しました。

コメント欄の設置(DISQUSを利用)とかフィードの生成とかカテゴリーの表示とかができてないけど、暇を見つけていじっていく予定です。

全般的なJekyllの使用感

DBいらずだしシンプルでいいっすわ。XML-RPCとかAPIを使ってどうのこうのとかいった機能はないけど、テキストファイルをしこしこ書いて、 .markdown か .textile みたいな拡張子で保存して、 jekyll コマンドを実行するだけでhtmlファイルが _site ディレクトリに生成されて、これをアップロードするだけ。この手順を自動化するシェルスクリプト(tasks/deploy at master from henrik's henrik.nyh.se - GitHub)も公開されているので、これを使えばectoとか使うのと変わらん感じでお手軽にブログ記事を投稿できます。

Terminalからコマンドライン打つの好きな人とか、軽くてシンプルなブログを求めてる人にはうってつけだと思いますね。

| @技術/プログラミング

ポータルシットに前も書いたけど、CakePHPの命名規約ではDBにusersというテーブルがあれば、モデルクラスにUser、コントローラークラスにUsersController、viewsディレクトリにusersっていうのが存在するのを前提とする。これに慣れてしまっているので、Railsのやり方にはなんか慣れない。ModelでPeople、コントローラーでUsersControllerとしてても問題ナッシングなわけだ。むしろRailsではこういうのが普通? Rails使っててCakeをちょこっと触った人のブログにこういう感想があった。

コントロールとモデルが密すぎる。

CakePHPは、コントロール名とモデル名が密接すぎる関連を持っています。PostsControllerというコントロールを作ったら、必ずPostというモデルが存在しないと「モデルが見つからないエラー」になる。

Blog-side CakePHP わかりずらい3点

ふむふむ〜、ナルホディウスですぞ〜!!!

確かにCakePHPはモデルとコントローラーがガチガチになってて、あるコントローラーが他のモデルクラスにアクセスするときはいちいち

$use = array("Hoge");

とかしなきゃいけなかった。

最初の頃はモデル、コントローラー、ビューですべてが一対一に対応してるのですんなりMVCの流れを理解できたんだけど、今にしても思えばこういう考え方はすべてのコントローラーに対応するモデル(つまりDBテーブル)がなければならないというしがらみというか束縛を生じさせる。これでは自由な発想で開発できないし、下手をすると一つのコントローラークラスに大量にメソッドを書いてしまったりして、非常にメンテナンス性の良くないコードを量産してしまう公算がある。本当は機能ごとに細かくクラスは分けた方がいいはずだし、メソッドが一つしかないコントローラークラスがあっても良いはずだ。

そういうわけで、はやくこの辺のCake流の思い込みを排除して皆と同じようにrailsの手術を受けたいです。

| @ブログ

パソコンの話とかは tech.portalshit.net へどうぞ。ここはグルメブログになります。

| @雑談

「最近のポータルシット変わった」とかいうコメントをTwitterで何度か見かけたのでportal shit!は閉鎖することにしました。おちょくられるの嫌いなのであまり好き勝手なこと言わないでください。

というのは嘘で、パソコンっぽい内容は別のブログに書くことにしました。