エンジニアには、UNIX系とPC系の2種類がいる
川上量生(以下、川上) そうそう、このへんでちょっとドワンゴの技術力についての話もしておきたいな、と思ってたんですよね。
—— ああ、以前、最近プログラム言語のC++に力を入れているというお話を聞いて、おもしろいなと思っていました。いまってウェブサービスの開発言語としてはRubyとかPHPが主流なわけじゃないですか、そこでC++というのは、やっぱり動画のサービスをつくっているからなんですかね?
川上 いや、うちはもともとC++が好きなんです。というか、うちのエンジニアはC言語かC++しか書けなかったんですよ。
—— それ、めずらしいですよね(笑)。
川上 めずらしいでしょう。うちはさらに、ある時期までPerlが書ける人がひとりもいなかったんです。だからウェブサービスを始めた当初、CGI ※1 を全部C++で書いてたんですよ(笑)。
※1 CGI:ウェブサーバーがウェブブラウザからの要求に応じてプログラムを起動するための仕組み。どのような開発言語でも使用できるが、実際はPerlなどがよく使われる傾向にある
—— ええー! CGIは普通、保守が楽なスクリプト言語で書きますよね。C++だといちいちコンパイル ※2 しないといけないし、めちゃくちゃめんどうじゃないですか。
※2 コンパイル:プログラミング言語を用いて作成したソフトウェアの設計図(ソースコード)を、コンピュータ上で実行可能な形式(オブジェクトコード)に変換すること
川上 だって、みんなPerlとか知らないんだもん(笑)。楽だからC++で書いてたんですよね。
—— じゃあ90年代後半に着メロのサービスを始めた時も、C++で動かしていたんですか?
川上 そうですよ。一応、Apache ※3 は使っていましたけど、まず携帯電話会社ごとのHTMLの仕様の差を吸収して、便利な独自タグ言語を実装したプロキシサーバー ※4 をC++で書いて、その裏でApacheを動かしていました。
※3 Apache:ウェブサーバーソフトウェアのひとつ。フリーソフトウェアとして無償で公開され、ボランティアのプログラマの手によって開発が続けられている
※4 プロキシサーバー:内部ネットワークからインターネット接続を行う際、高速なアクセスや安全な通信などを確保するための中継サーバー
—— 通信の基礎的な部分から、全部C++を使ってスクラッチ(自社開発)でつくっていたと……。
川上 ゲーム機用のライブラリを作っていたときは、シリアルポートの制御からソケットまで全部書いていました。もともとうちは、ネットワークゲーム用のサーバーをつくってた会社なんですよ。あれはC++で書くので、そもそもサーバーというのはC++で書くものだろう、と思ってるんです。
—— なるほど(笑)。
川上 プログラマって、2種類いるんですよね。いろいろな分け方があるんだけれど、ひとつはUNIX ※5 系の文化を源流とするプログラマとPC系の文化を源流とするプログラマという分け方。
cakesは定額読み放題のコンテンツ配信サイトです。簡単なお手続きで、サイト内のすべての記事を読むことができます。cakesには他にも以下のような記事があります。