2014.08.01
2014年夏、カヤックは、Go言語を積極的に推進していきます。
カヤックは今後、積極的にGo言語を推進していくことになりました。7月末までのGo言語での実績一覧です。
https://github.com/kayac/alphawing
https://github.com/kayac/parallel-benchmark
https://github.com/acidlemon/go-dumper
https://github.com/fujiwara/zabbix-aggregate-agent
https://github.com/fujiwara/go-zabbix-get
https://github.com/fujiwara/go-redis-setlock
https://github.com/shogo82148/androidbinary
https://github.com/mix3/go-irc
https://github.com/mix3/go-ikusan
https://github.com/mackee/kuiperbelt
その意図をわかりやすく伝えるために思い切って、社内のエンジニア向けに発信されたメッセージをそのまま掲載するカタチにしました。
社内の技術者のメーリングリストに流れたもので、メンバーからの質問とそれに対する回答も載せてあります。
なぜカヤックはGo言語で行こうと言い出したのか
まず、最近いろいろな人と話をしていて、カヤックは外部のエンジニアから「Perlの会社」と思われているのではないかという気がしてきました。
でも、実際そうではありません(よね?)
例えば、2013年のコーポレートサイトのリニューアルのときには、6月27日にリリースになったばっかりのRuby on Rails 4.0に真っ先に対応して6月30日にコーポレートサイトをリリースしました。リアルタイム性の必要なWebSocket案件ではNode.jsを使います。また、お客さんの要求にあわせてPythonやPHPを使うこともあります。このように、サーバーサイドだけでも5つ以上の言語を利用しています。
フロントエンドに目を向けると、まずHTML5に特化したフロントチームがいます。
スマートフォンのネイティブ開発チームとしてiOS/Android/Windows Phoneのクライアントアプリを開発するチームもいます。
また、3D技術やデバイス技術を用いて今までにないユーザ体験をエンドユーザーに提供するチームもいます。
このように、カヤックはとにかく手広くいろんな言語や技術をカバーしている会社です。
言語でいえば、JavaScript/Objective-C/Java/C/C++や、シェーダーまで入れればGLSL/Cgあたりまで出来る人がいます。
そんな多様なエンジニアが在籍しているカヤックですが、最近外部から「Perlの会社」と思われているという話を複数の社員から聞きました。
もしかすると、例えば「今更Perlやりたくない」とかで採用の応募を敬遠してる人が少なからずいるのではないかと考えています。
実際のところ、そんなにPerlを重要視しているかというとそんなことはなく、現在は採用時にこれまでどの言語をやっていたかという言語キャリアは重視していません。せいぜいJavaやC/C++のような堅めの言語を使っている人は堅めの言語でも使いこなせるんだね、ということである程度安心感があるかなーという程度で、それよりもカヤックで面白く働けそうかという点を重視しています。
過去に目を向けると、カヤックに在籍していた/現在在籍している、国内でもトップレベルに位置するエンジニアの多くがPerlエンジニアであったことは事実です。彼らの功績なくして今のカヤックはありませんでした。それを否定するようなことをするつもりは今後もまったくありません。
ではなぜ「Goで行こう」と言い出したか。
平たくいうと、そろそろ最新の言語にチャレンジしたいじゃん! ってことです。その言語としてGoを選びました。ただ、道具としてのプログラミング言語には個人の考え方や好みがあります。各自がLispやJavaやScalaなどにチャレンジするのもそれはそれでOKです!
GoはC言語のように型がはっきりしている言語です。いわゆる静的言語ですが、型推論があるので、そんなに書くときに修行のような苦痛を受けるような言語ではありません。最近出てきた言語らしく、マルチコアを使いこなす並列性や、Webとの親和性の面で大きくアドバンテージも持っている言語です。
もちろん、全面的にいろんな言語を捨てて全員がGoを書きましょう!
ということを強制するつもりはありません。言語は道具であり戦っていくための武器です。ですから、今ある武器を捨てる必要はないのです。ただ、武器はたくさんあった方がいいので、みんな追加武器を装備して欲しいということです。
このような理由で、現在カヤックとしてGoをこれから積極的に利用していきたい言語として選び、ちょっとしたツールやWebサービスなどに利用して来年以降サービス開発に利用していきたいと思っています。書けなくてもいいけど読めるようにはなっていて欲しいです。
Goは読みやすい言語ですが、チャネルという独特な並列処理の概念があります。最低限そこを理解して読めるようになっていてほしいです。
あえて挑戦的な表現で言いますと、これはみんなが下克上するチャンスです。今、PerlやRubyやPHPなどでレールに乗って開発しているみなさん。
Goにはまだレールがありません。これからみんなでつくります。
この取り組みは、ぼくや藤原さん、庄司さんや藤田さんに
さえノウハウがほとんど無い状態からのスタートとなります。
おじさんたちも全力で手探りしながら進んでいきます。おじさんたちがフロンティアを開拓していくのは、それはそれで本人的にも楽しいものです。しかし、若者がポッとやってきておじさんたちを出し抜いていくという流れのほうがよりおじさんたちにも刺激になります。
そんなわけで、これを読んだみなさんにお願いしたいのは、Goに取り組んでおじさんたちを出し抜いてGoの第一人者になるような勢いで協力してほしいということです。
もちろん、我々も手を抜く気はありません。一緒にチャレンジしてくれる人たちには与えられるだけのものをすべて与えるつもりで進んでいきます。
これはクライアントワーク/Lobi/ゲームといった事業に関係なく進めていきたいと思っています。皆さんのご理解とご協力を よろしくおねがいします。
よくある質問とその答え
Q. Perl/Rubyを捨てるんですか?
A. 捨てる気は全くありません。今後も適材適所で使っていきます。
Q. Goはまだ時期尚早なんじゃない?
A. オレたちチャレンジャーなんだし、挑戦する気持ちを忘れるな!
Q. Go嫌いなので退職します
A. ちょちょっとまって、それは相談しましょう。
Q. いろんな言語を使えるのが好きでクライアントワークを
やっているのですが、今後はすべてGoで開発しないとダメなんですか?
A. 今まで通り、好きな言語(or クライアント指定)でOKです! 好きな言語の一つにGoが入ってくれると、嬉しいです。
こちらもどうぞ。
2014年夏、カヤックは、「UI部」を発足します。
http://www.kayac.com/news/2014/07/ui
2014年夏、カヤックは、SEOのスペシャリストを募集します。
http://www.kayac.com/news/2014/07/seo