December 12, 2008
ショッピングモールサイトであるカラメルの開発者を募集しています。
最初募集テンプレ的な募集要項を見たら、PHP経験必須とか、MySQL経験必須とか書いてあったんですが、思い起こすと僕がペパボ入ったときには、PHPの経験はなかったし、MySQLについてもとっても微妙な経験しかなかったので、そういうことは書くのをやめました。
なので別にJavaしかやったことありません、でも、VBしかやったことありません、でも良いかもしれないけど、とりあえず経験とは別に、ちゃんといろんなことに興味を持って、物事をフラットな見方ができる人が大歓迎。僕はエレガントなソースコードよりも、実現性を重視するので、職人的こだわりがある人は、お互い苦労するかも。
例えば、Webブラウザは結構、特定のサイトに対応するための個別コードが入ってるという話を聞いたことがあります。その話がきっかけで、特定の問題を全てロジックだけで解決しようとする考えをやめました。こういうのプログラマーの人嫌いだよね。できません、とか平気で言うし。労力対効果を考えて、お客様のご要望にお応えした方がビジネス上得策だと考えれば、即値対応も厭わないです。(もちろん、バカみたいにそんなコードが入りまくってるわけじゃないです。問題となるパターンが大体決まっていて、MVCだからミスも誘発せず、1カ所に統一できるからです。)
ただ今回の募集については、GETだのPOSTだのから教えているほど余裕はないので、現実的にはWebシステムの開発経験やDBの知識は求めることになると思います。
で、一方的に要求を書いても仕方ないので、カラメルが現状どんな感じで動いてるかというと、
システム的には、
Linux + PHP + MySQL(senna)が基本構成で、WebサーバもDBサーバも何台か冗長化されていて、いわゆる典型的なLAMPの冗長構成の手法で作られています。
フレームワークは、最近ペパボではZendを標準化していく方針だそうですが、カラメルは独自のMVCフレームワークを2つ使っています。2つにしたのは理由があって、理由の一つとしては、僕が2つになる事をあまり気にしなかったというのがあります。
出力段でSmartyを使ってるフレームワークは、所詮、ただのPHP + Smarytだろ!という考え方をしています。Javaのように型と継承、インターフェースを活用するが故に高度可するのに比べ、PHPは、原則的にハッシュをどう運び回すか?ということをやってるだけだし。それに、どちらのフレームワークも、使い勝手が良い軽量フレームワークなので習得は全然難しくないと思ったからです。
PHPとSmartyとPEARの意味合いが理解できてれば理解するのは簡単なもんです。一つは、Railsライク(Cake PHPライクと言うべきか)のEOというフレームワークで、オオヒダさんが開発したものです。モバツイッターもこのフレームワークで動いています。
もう一つはちょっと名前は出しませんが、こちらもPHPの独自フレームワークです。カラメルの開発の際に、開発者の人にできるだけ習得コストが低くてシンプルかつ柔軟なMVCフレームワークという条件で探してもらったのですが、結局、彼が作っていたフレームワークを採用しました。
EOがどちらかというとWebに特化したオートマ車的な構造なのに対して、こちらは、もうちょっとマニュアルカーに近いです。こちらはWebだけじゃない用途に使いやすく作られており、CLIのバッチ処理でも活躍しています。
余談ですが最近、一部でTokyoTyrantを使わせていただいたりしました。ある機能で、アクセス増加に対して問題が出てきたのが理由です。
積極的に、さまざまな技術を取り入れていく気持ちではありますが、興味本位だけで何かをやることはないので、新しいことをどんどんやりたいと思ってる人は、基本的にはさまざまな問題解決の機会で、実現性の担保の元で、どん欲に取り入れる意欲と瞬発力は必要かもしれませんね。TTを使おうと思ったのは、問題解決にTTが向いている内容だったことに加え、僕とサーバ管理の松尾君との間で、TTは短期間に実戦投入できそうだとコミットしからに他なりません。二人がそれぞれアンテナを広げていたからこそ実現したというのはあります。
って、そもそもの話なんですが、運営しているサービスは、カラメルというショッピングモールサイトです。
Color Me Shop!proというネットショップASPサービスのショップを集めたショッピングモールサイトです。楽天さんで言うなら管理機能を含めた各ショップの画面がColor Me Shop!proで、検索機能や特集などを提供するモールの部分がカラメルと言えます。
裏側はバッチのお化けみたいな感じで動いています。
当然、データ量が多いので、大量データ処理の経験ができます。
ちなみにそれ以外にもアクセス解析サービスなども管理しており、こちらはショップさん全体の大量のアクセス情報を処理しています。こちらもバッチのお化けみたいに動作しています。
検索型のECサイトですのでリコメンドであったり、検索連動型の何かなど、割とイマドキの技術は必要だよなぁと思っているので、こういうのをやってみたいという人には、結構、良い機会でしょう。
大きな規模のモールだと楽天さんの楽天市場や、DeNAさんなどがあると思いますが、少ない人数のエンジニアがサービス全体を見られて、トレンドの技術も追い求められるという意味で、結構貴重な経験ができるんじゃないかなと思います。
今回は、今後に対して開発者の増員という形で募集をしています。まずは、これから先に進むために必要な開発に携わっていただきたい人を募集します。
しかし僕等の日常の仕事は、新たに開発する新規機能開発もあれば、運用としての日常の改善サイクル、また、アクセス数増加やデータ増加に伴う改善作業の繰り返しです。大体、何かを作れば何かの問題が、、、みたいにいろんなことが順番にやってくるという状況で、全てを経験してもらうことになります。
技術しか興味ありません、新規開発だけしかやりたくないってのはダメだし、前に進むのはシラネ、言われたことの運用しかやりませんってのもダメです。
そこはカラメルというビジネスの「継続的発展」にコミットしてもらえる人材を求めます。うちは開発やサポートなどの職種に関わらず、どんどん事業発展のアイディア、提案にも参加してもらいます。この辺はチームみんなで話し合っています。
PHPの習得容易性を前提として、PHPやMySQLの専門知識というよりは、Webシステムの経験の方を意識してたりします。おそらく一番大事なのは、他人に対して負けず嫌いである必要は全くありませんが、プログラムやシステムの安定運用に対しては、負けず嫌いであって欲しいなぁと思っています。そういう人であれば、すぐに身につけられると思いますしね。
クライアントサイドは、今のことろややこしいJavaScriptとかFlashは僕がコードを書いてますが、やりたい and やれるベースでいくらでも今の作業は渡せます。特にFlashはツールを買わなくてはいけないので、そんなにやる気のない人にツールを渡す余裕などなく、もし未経験者ならコミットする意欲を見せてもらい、かつ実現することが重要。使う機会は提案してもらってそれがビジネスにプラスになるなら、どんどんやりたいですね。(そういうのは、できる人ベースで決まったりするので。)
いろいろ書いてしまいましたが、もう一度、面接ではこういうことを話したいと思います。
もしご興味をお持ちで、12末で今の会社を辞める、なんて方がいらっしゃいましたら、是非、ご応募ください。