株式会社Murakumo

Articleprepare インターンシップ採用決定で勉強支度金3000円プレゼント

[職種]エンジニア [業界]IT

【マジの研究開発】分散DBMSをフルスクラッチ!!

株式会社Murakumo
インターンするか迷ってる?だったらまずはJEEKインターンに登録しよう!

○注目ポイント

  • 1・2年生歓迎
  • ベンチャー
  • 少数精鋭
  • 正社員雇用有り
  • 時給1000円以上
  • 交通費支給

○職種

  • エンジニア

先進的な分散DBMSをフルスクラッチで作り上げる研究開発プロジェクトに参加していただきます。現行の主力製品を置き換える、次世代ソフトウェアの研究開発となります。

能力があればインターンもアルバイトも社員も関係ない、マジの研究開発です。

○給与

時給2,000円〜3,000円
交通費支給

○応募資格

1. 新しいデータ構造やアルゴリズムを、自ら工夫して作り出すことが楽しくて仕方ない方
 例:計算量をオーダーのレベルで改善する新しいアルゴリズムを見つけた
 例:世界最速/最大規模/最強の〇〇計算/〇〇シミュレーションプログラムを作った

2. C言語を日常的に使用しており、「C言語については一家言ある」というような方(C++でも可)
 例:読みやすく、バグの出にくいコードを書かせると右に出る者はいない
 例:規格書をよく参照していたら、規格の不備を見つけた
 例:いまだにC言語が根強く使われ続けている理由について、他の手続き型言語や関数型言語と比較しながら自分なりの考えを述べることができる

3. 日本語の技術情報だけでは飽き足らず、英語等の技術情報からも積極的に新しい知識を仕入れている方
 例:良い本だと思って洋書を購入して勉強したら、何年か後に邦訳が出た
 例:ネット上で良い英語の記事を見つけたので、著者の了解を得た上で翻訳して公開した

以上の条件1〜3は、この募集において重要なものから順に並んでいます(例については必ずしもそうではありません)。全ての条件を完璧に満たしている必要はありませんが、より重要なものをなるべく高いレベルで満たしていることが求められます。

また、現実的には本当に新しいアルゴリズムを見つけたり、本当に世界最速のプログラムを作ったりすることは(場合にもよるとはいえ)困難ですが、何をどう頑張った結果、最終的にはここまでできた、のような「経験値」も重視いたします。

※全ての開発はLinux上でC言語を用いて行います。従いまして、Linux and/or コマンドラインに慣れていることが望ましいですが、必須ではありません。また、開発のためのマシン等はこちらで用意いたします。

○勤務地・最寄り駅

〒153-0061
東京都目黒区中目黒1-1-45 AS-ONE 中目黒 2F
TEL 03-3589-6745 FAX 03-3505-3363

東急東横線/東京メトロ日比谷線 中目黒駅
JR山手線/東京メトロ日比谷線 恵比寿駅

地図はこちら

○企業情報

  • ○ DBMSを作ると人生が変わる

     DBMSを作ると人生が変わる

    「プログラマとして一生に一度は作りたい大規模ソフトウェアは、OS、コンパイラ、そしてDBMSである」という一つの考え方があります。OSやコンパイラの自作に興味を持つ人は多いと思いますが、DBMSについてはどうでしょうか?

    この募集を書いている私自身、かつてはDBMSについては全く興味がないといった状態でした。ところが、Murakumoにアルバイト(当時)として採用され、DBMS開発チームで働き始めたことによって、みるみる認識が変わっていきました。「広さにおいても深さにおいても、これほど実装技術の追求しがいのあるソフトウェアはなかなか無いぞ」と、年を追うごとにその開発にのめり込んでいったのです。

    DBMSはいわば「超複雑な高機能データ構造」であり、様々なパターンのデータアクセスに伴って大量のストレージI/Oやネットワーク通信が発生します。これをいかに効率よく行うかというのは、何十年ものDBMSの歴史の中で常に最先端の問題であり続け、未だに日夜改良の努力が重ねられています。

    また、DBMSはOSとアプリケーションの中間に位置するミドルウェアと呼ばれるソフトウェアであり、高いパフォーマンスを出すためにはOSを深く理解し、OSと緊密に連携することが不可欠となります。あるいは、万能のDBMSというものを作ることはまずできないため、世の中のアプリケーションは一体どういった機能を(潜在的に)必要としているのかを注意深く観察・選別し、それをDBMSの実装として落とし込むといったことも必要になります。

    さらに、DBMSの操作の大部分は問い合わせ言語(いわゆるSQLなど)を通して行うため、DBMSは言語処理系を内部に含んでいます。近年プログラミング言語は百花繚乱の様ですが、問い合わせ言語については化石状態のものが広く使われ続けているのが現状であり、かなりの改善余地が残されています。

    結局のところ、DBMS作りは「全部入り」の経験なのです。胸を張って「自分はDBMSを実装できます。」と言えるようになれたとしたら、人生どこへ行ってもまず困ることはないはずです。

    (写真は512台のサーバ上で現行製品の分散DBMSを動かしている様子です。)

  • ○ トップを目指せば技術はついてくる

    作るからには、世界のトップをとらなければ意味がありません。分散DBMSに限らず、これはMurakumoの方針であり、私の(Murakumoに入る前からの)個人的な信念でもあります。

    トップをとるにはどうすればいいでしょうか? 実は、次の二つのステップを踏むだけでいいのです。
     1. 未解決の問題のうち、最も重要なものを見つける
     2. それを解決する
    こうすることで、この問題を解決した分散DBMSは世界に一つだけなので、自動的にトップであることになります。そしてトップであり続けるには、これらのステップを何度も繰り返すだけでいいことになります。

    はたして、分散DBMSは「開発困難ソフトウェア」の代名詞の一つと言ってよく、1.のステップが難しいのはもちろんのこと、2.のステップでは既知であれ未知であれ数多くの難関が待ち構えています。だからこそ、その開発は豊かな技術資産をもたらす宝の山なのです。抽象的な概念を対象としたアルゴリズムからC言語での具体的な設計テクニックまで、数学的なものからCPUのアーキテクチャに関わるものまで、ありとあらゆるタイプの技術を習得し、発明し、組み合わせ、徹底的に磨きあげることによって、やっとのことで解決にこぎつけるのです。そこには一切の妥協が存在しないかわりに、漫然とプログラミングを続けていたのでは決して得られない、深い喜びが待っています。

    ここで有名なフレーズを思い出しておきましょう。そう、『鏡の国のアリス』における赤の女王の台詞、「全力で走り続けなければ、一つの場所にとどまることはできない。("[...] it takes all the running you can do, to keep in the same place.")」です。そしてこの台詞には続きがあります。曰く、「別の場所にたどり着きたければ、少なくともその2倍の速さで走らなければならない!("If you want to get somewhere else, you must run at least twice as fast as that!")」と。すなわち、全力で走り続けなければトップにとどまることはできない上に、トップ以外からトップになるためには少なくともその2倍の速さで走らなければならないのです!(※原文はProject Gutenbergのテキストより引用)

    それはともかく、トップを目指し続けることによって、つぶしがきく技術や高度な技術をどんどん身につけていくことができるのは間違いありません。

  • ○ 必要なのは、多様な仲間だ

     必要なのは、多様な仲間だ

    トップアスリートは一人で練習を積み重ねてきたからトップになれたのでしょうか? トップ棋士はどうでしょうか? 音楽家はどうでしょうか? 研究者はどうでしょうか? そしてエンジニアは?

    答えは、ほとんどすべての場合においてNoでしょう。同じトップを目指す者同士の集団に属することによって、先輩から教えられ、同期と競い合い、後輩に追い上げられ続けたからこそ、トップになれたのです。一人で、あるいは取り立てて上を目指しているわけではない集団に属して何かに取り組んだとしても、残念ながらかなり低いレベルで成長が止まってしまう場合がほとんどでしょう。

    DBMS開発はチーム競技です。最高のDBMSを作るために世界中の開発チームがしのぎを削り合い、メンバーが技術を磨き合っています。その中でMurakumoが戦い続けるためにも、互いに信頼し合える仲間が必要なのです。

    そして仲間には多様性が必要です。高い多様性は切磋琢磨のスピードを上げ、逆境が訪れたときにそれを乗り越えるための底力にもなります。ですので、全体としてはトップを目指すチームである必要はありますが、個々のメンバーについてはかなり何でもありだと思っています。
    ・抽象的な思考が得意な人
    ・具体的な問題に手を付けるのが早い人
    ・頭はすごく切れるが集中力もすぐ切れる人
    ・根性で何とかする人
    ・トップとか正直どうでもいいが、与えられた仕事は責任を持って遂行する人
    ・そんなんじゃトップはとれないからこっちのやり方に変えろと主張する人
    などなど。様々なタイプの人たちが集まることによって一つのチーム文化が醸成され、その中で互いに切磋琢磨し合っていたらいつのまにか世界最高のDBMSができていた――という夢のようなシナリオがあってもいいとは思いませんか?

    もしこのような夢に乗ってくださるのであれば、プログラミングを始めて20年、MurakumoでDBMS開発に加わってから13年の私が、責任を持ってみなさんの成長の手助けをいたします。そしてみなさんからの刺激を受けて、私自身も成長したいと思っています。

    (写真はこの募集を書いている私こと、次世代分散DBMS開発リーダーの近藤です。文中の年数は2018年1月時点。)

絶対受かるESの書き方、面接テクニック講座

おすすめインターンシップ・インターン求人情報

株式会社ZEALS

マーケティング

【広告の概念を変える!】会話型広告という新たな分野に挑戦してみたい方必見!

株式会社DiverFront

企画

【空きコマのリモートも可!】ゼロから学ぶライティング・ディレクター業務大募集!

株式会社フィッツコーポレーション

営業

【1・2年生大歓迎】メーカー 兼 商社の営業を通じてビジネスを体感する!

株式会社グローバ

営業

【成長保証型インターンシップ!!】商談相手は社長の実践営業インターン