クリアコードではMozilla・メール・検索関連を中心にソフトウェア開発を行っています。徐々に認知されてきたおかげで、声をかけてもらえることが増えてきました。しかし、大変残念なことにリソース不足ですべてのお話に応えることができないのが現状です。
そこで、現在、プログラミングが好きなソフトウェア開発者を1名募集しています。応募方法などはリンク先を参照してください。ただ、リンク先では「Mozilla・メール・検索関連」で使うことが多い技術にはあまり触れていないので、ここで簡単に紹介します。
Mozilla関連
Mozilla関連ではJavaScript・C++・XULなどを使うことが多くなります。アドオンを開発する場合はUxUを用いた自動テストを作成しながらの開発になります。
また、Firefox/Thunderbird本体のソースコードを読んで問題を解析するなど、突っ込んだ調査をこともあります1。このような作業の場合、すべてのソースコードを把握していることよりも、把握していないソースコードでも的確に問題を解析できる技術が重要になります。このような技術はフリーソフトウェアの開発に関わっていると身につきやすい技術ですね。ふだんのフリーソフトウェアの開発で身につけた技術を役立てることができます2。
メール関連
メール関連ではC・Rubyを使うことが多いです。ベースシステムに近い部分なので、シェルスクリプトを使う機会も多少はあります。
Rubyといっても、ふつうではないRubyの使い方が多くなります。メールシステム自体はパフォーマンスが要求されることが多いため、より速度がでるCと密に連携したり、より並行処理に向いた処理方法3を採用したりします。milter managerがまさにそのようなことをしています。
Ruby on Railsなどフレームワークの上で開発する場合は、いかにうまくフレームワークと連携するかが重要となりますが、このような使い方の場合は新しく最適な解を切り開いていくという違った技術が必要になります。
検索関連
検索関連でもC・Rubyを使うことが多いです。速度を犠牲にしないためにCと密に連携する部分はメール関連と同じですが、作業範囲はもっと上位のレイヤーまで広がります。高速な検索サービスを提供するWebアプリケーションやWeb APIの開発をする場合はRackやRuby on Railsなど、RDBを用いたWebアプリケーションでも使われている技術を利用します。
速度をカリカリにチューニングする検索エンジンの改良からリッチなユーザインターフェイス・APIの開発までシステム全体に関わることになるため、幅広く技術を活かすことができます。また、業務の中で技術の幅を上のレイヤーにも下のレイヤーにも広げていくことができます。
検索に関してはgroongaの開発者である森さんが書いた「検索エンジンはなぜ見つけるのか」がおすすめです。検索について優しく書かれているので検索に関してあまり知らない人でも理解を深めることができます4。
https://amazon.co.jp/dp/4822284611
まとめ
ソフトウェア開発者を募集しているので、業務で必要になりそうな技術を紹介しました。クリアコードではこれらの技術を身につけるにはプログラミングが好きであることがとても重要な要素だと考えているため、応募資格はプログラミングが好きなことだけとなっています。
また、クリアコードでは業務で開発したソフトウェアはできるだけ自由に利用できるようにしています。業務で価値のあるソフトウェアを開発し、それをさらに広く自由に使ってもらいたいプログラミングが好きな人は応募してみてください。