富豪的プログラミングは死語か

富豪的プログラミングという言葉を最初に知ったのは、10年以上前だ。

簡単に言えば、
それまでコンピュータ資源を効率良く使うことが重要課題だったプログラミングを変え、
効率よりも、コードの見やすさ、メンテナンスのしやすさ、ユーザーの使い勝手を優先させるということだ。

10年以上前ですら、こんなことが言われていたのだから、
今はこんなことはほぼ当たり前になりつつある。

プログラミング言語の進化により、
プログラマがメモリ管理を意識することはほとんどなくなった。

もちろん、実装の仕方によっては、
超メモリ効率の悪いクラスを作ることはできる。

しかし、今は実行速度を優先してメモリ効率には目をつむる、
あるいはそんなことを考えていないことも多い。

ただ、おそらく今でも組み込み系のソフトウェア開発の現場では、
メモリ効率をかなり意識したプログラミングをしているのかも知れない。

オレ自身は組み込み系の開発現場を経験したことはないが、
そこで働く人と話をしたことはある。

「C++なんていうメモリをバカ食いする言語はとても使えない。」

という言葉が今でも頭に残っている。
現在のプログラミング言語全体から見れば、C++は意識的にメモリを節約できる部類の言語だ。
ただし、STLなんかを使わない限り、メモリ管理はかなり煩雑になりがちだ。

ガーベッジコレクションが当たり前となり、
かつ富豪的プログラミングが当たり前となった現在、
メモリはまるで無尽蔵にあるかのごとくプログラミングが行なわれている。

富豪的プログラミングは死語になったかも知れないが、
だからといってメモリの節約を全く意識しなくていいわけではないだろう。

WordPressプラグイン開発 – WordPressは本体の設計がクソ

WordPressのプラグライン開発をし始めてしばらく経つ。

で、さらに色々とわかってきたのだが、
WordPressは本体の設計がクソだ。

なんか、前にも同じようなことを書いた気がするが、
知れば知るほどクソだ。

いや、簡単な処理をちょっと加える程度なら、
これでもいいのかも知れない。
というか、逆に楽だろう。

でも、
そこそこちゃんとした機能を実装しようと思うと、
とたんに面倒なことになる。

元がMVCのような役割別にクラスが設計されておらず、
機能別(ユーザー編集なら、user-edit.phpとか)にクラスやファイルが別れている。
クラスならまだいいほうで、
グローバル変数とグローバル関数のオンパレードだったりするので、もうぐちゃぐちゃである。

そうだなぁ。
Windowsで例えるなら、MFCが誕生したばかりで、
MFCとWin32APIを組み合わせてプログラム書いてるみたいな感じ?
っていつの時代や!

世に出回っているプラグインも大半がそんな感じで作られているのも、
そういった本体の設計方針が深く関わっていると思う。

しょうがないので、
開発しながら、WordPressの仕組みを理解しつつ
自分なりのフレームワーク的なものを作り込んでいくしかないのが現状。

開発に無駄に時間かかるなぁ、と思う今日この頃。

いやぁ、でも一説にはWordPressは全世界の4分の1のサイトで採用されているとも言われているので、ビジネスチャンスはめちゃくちゃあるんだよなぁ。
競合も多いけど。

ウザいリファラースパムを排除する方法

Google Analyticsをよく見る人なら、
最近のリファラースパムの猛威っぷりに辟易していることだろう。

以前は、
OSや言語が「not set」になっていることが多かったので、
そういったアクセスにフィルタを適用しておけばほぼ除外できた。

しかし、最近はスパマーもこれに対応してきていて、
ちゃんとOSや言語の値がセットされており、
ご丁寧にブラウザまできちんとセットされている。

立ち上げて間もないサイトや、
普段からそれほどアクセスがないサイトにとって、
リファラースパムは正確な統計を取ることを邪魔する存在でしかない。

まぁ、データを見れば大体スパムだとわかるのだが、
上記のように、さも正規のアクセスのように見せかけられると、
完全な対応が難しくなってきた。

しかしウチの場合、
リファラースパムの大半はロシアからのアクセスだ。

そこで、ウチは全て日本語でやっているし、
もうロシアからのアクセスは全てカウントしないという方針にすることにした。

ロシアに住む日本人からのアクセスは無かったことになるが、
まぁあっても少数だろうから良しとする。

「アナリティクス設定」→「フィルタ」→「フィルタを追加」でフィルタを以下のように追加すればOKだ。

ga_filter_russia

同じ要領で、

フィルタ フィールド:言語設定
フィルタ パターン:not set

フィルタ フィールド:OSのプラットフォーム
フィルタ パターン:not set

みたいなフィルタを複数追加しておくとよりいいだろう。
こういうのは最近あまり引っかからなくなってきたけどね。

Ruby誕生20周年

先月、Rubyが生まれて20周年だったとのこと。
ソース → 20 Years of Ruby

ご多聞にもれず、オレのRubyとの出会いは、
Ruby on Railsだ。

15分でブログアプリケーションを作る、という動画に興奮したもんだ。

「これからはRubyだ!」なんつって、
通勤の満員電車の中で、立ちながら分厚いRailsの本を読みふけった。
それと並行してRubyの仕事を探し始め、
運良くRubyの仕事(もちろんRails関連だ)にありつけた。

今では当たり前になった、
Webアプリケーションフレームワークは、
Railsによって生まれたと言っていいだろう。

当時は世間にWebアプリケーションフレームワークは懐疑的に見られていた。
特に速度面での指摘が多かった。
今となっては笑い話のネタにしかならないが、
オレは絶対にWebアプリケーションフレームワークがスタンダードになると思った。

RubyがメジャーになったのはRailsのおかげ

人によっては反論する人もいるだろう。
だがRailsによって、Rubyが一気にスターダムに駆け登ったのは紛れもない事実だ。

Railsがなければ、Rubyがあれほど急速に普及することはなかっただろう。
上のリンク先にも、やはりRailsの登場が出てくる。

一方で、Rubyという素晴らしい言語があったからこそ、
Railsが生まれたのも事実だ。

オレも、スクリプト言語の中でRubyが一番好きだ。
まあ、Pythonはちょこっと調べたことがあるだけだし、
他に使ったスクリプト言語といえば、PerlとPHPぐらいではある。

ともあれ、
Rubyという言語は美しい。
作ったのが日本人だけに、日本製らしい機能美がある。

PHPがごった煮だとすれば、
Rubyはすき焼きといったところか。
よくわからん例えでMatzに申し訳ない。

Matzとはどういう人物か

Rubyの産みの親は、
Matzこと、まつもとゆきひろ氏である。

実は、Matzと飲みの席で一緒になったことがある。
たしかメンバーは6〜7人ぐらいだったか。

Matzがフェローとして入っていたRubyの現場(ここまで言ったらわかってしまうなw)で、
正社員でもない単なるフリーランスのオレを社員が誘ってくれて、
飲みの席に参加させてもらった。

一言でいうと、
Matzはいい人だ。

まったく偉そうなところがなく、
純粋に技術が好きなエンジニアだ。

当時、Railsの台頭により、ある意味Rubyよりも目立っている状況だったが、
「それはそれでいいんじゃないですか」みたいな感じで
Matzは状況を冷静に見ていた。

もともと有名になりたくてRubyを作ったわけではないからだろう。
オレには、MatzがRubyという言語にほぼフルタイムで関われる状況に幸せを感じているように見えた。

今後のRuby

最近のRailsは、当初のシンプルさが失われて
ムキムキのキン肉マンになってしまったように感じるのはオレだけか。

とはいえ、
Rubyの良さの1つである柔軟性から、
RubyはDSLとしての活用が目立つ。

ChefやVagrantなど、
システム開発業界をリードするツールの多くで、
Rubyが採用されている。

これからも、コードに美と手軽さを求める技術者によって
Rubyという素晴らしい言語は使われ続けるだろう。

20周年おめでとう。Ruby。

慢性的なメモリ不足に悩まされていたが、Safariをやめたら解決した

これまで、MacではずっとSafariを使ってきた。

特に不満を感じていなかったからだが、
ここへきて、やたらとメモリを食うことが鼻につくようになった。

システム開発をし始めると、
ブラウザで大量のタブを開いたり、
IDEを立ち上げたり、
仮想環境を常時起動しているからだろう。

現在主に開発に使っているのは、
iMac Mid 2011で、メモリは16GB積んでいる。

これで、しょっ中メモリ不足になるのだからたまらない。

Windowsでは日頃FireFoxを使っているのだが、
MacではSafariが最も美しくHTMLがレンダリングされることもあり、
Safariを使っていた。

しかし、Safariを使っていると、
メモリリークを起こしているんじゃないかと思うぐらい、
ガンガンメモリを消費していくので、
いい加減イライラしてきた。
ページング起こしてるんじゃないかというぐらい動作も遅いしね。

Chromeに変えたら、メモリの消費量が安定した

というわけで、
とりあえずブラウザをChromeに変えてしばらく運用してみた。

するとSafariの時とうって変わり、
メモリが足りなくなるということがほぼ無くなった。

正直、Googleの製品はバタ臭いところがあるので
あまり使わないのだが、(Webサービスは除いて)
動作もすごく軽快で、サクサク開発できるようになった。

やっぱりWebKitを捨てて、Blinkに移行した成果なのかねぇ。
Blinkではかなりコードをスリムにしたらしいし。

ただねぇ、ブックマークのフォントがなぜか小さいのが気になるんだよな。
こういうところがバタ臭いんだよね。
エンジニア臭がするっていうのかね。

でも、開発にはすごくいいブラウザだ。
ていうか、「ITエンジニアならChromeだろ」とか言われそうだな。うん。