つまみ食い候補の技術の概要を整理した
公式やググった結果をまとめてみたレベルで何が一番面白そうで、心のハードルが低いか確認します。
Apache Drill
Apache Drill - Schema-free SQL for Hadoop, NoSQL and Cloud Storage
スキーマフリーなデータを扱うためのSQLクエリエンジンで、1/10時点で最新のバージョンは1.4で安定版が出ています。NoSQLもHadoopもファイルもクラウドストレージもSQLで扱おう、という意欲的というか魔改造感すら漂っているのが素敵です。公式サンプルのSQL、FROM句にファイルのフルパスが書いてあってそれだけでもクラクラしましたが、調べてみたらjsonファイルのJOINなんかを試している人がいて、違和感が仕事をしすぎてクラクラします。
スキーマフリーとは言え、CSVファイルはちょっと辛そうなので、jsonファイルをなるべく使うようにすれば、クエリベースでほぼすべてのデータを操作できるようになるのではないかという妄想がはかどります。DrillのJDBCドライバもあることですし。これは、私のチームが無双するためのプロダクトかもしれないですね。
パフォーマンスは知らないけど、自信はあるみたいです。が、インメモリデータベースっぽい雰囲気もするので、要求されるメモリがきになるところです。バイナリを対象サーバにインストールして使うみたいなので、初めからリソースはあることが前提かもしれません。クライアントとして提供されているのは、ShellとWeb ConsoleとJDBC/ODBCドライバ。
その他情報:
F♯
MS開発の関数型 + オブジェクト指向のマルチパラダイム言語です。MSの言語なので、.NET Frameworkの言語と相互運用が可能、クラスライブラリの利用も可能となっています。仕方ないことですがMSの公式読んでると言語機能の方向性がScalaとかぶるので、始めるハードルは低いかもしれませんが流れがベタすぎやしないかと。
Mono向けに移植されたコンパイラがあるので、Mac OSやLinux上でも開発可能です。Macでの利用に関することも公式で整理されていて、Xamarin Studioインストールすれば使えるとのこと。追加プラグインとかいらない感じが楽ですね。
Use F# on Mac OSX | The F# Software Foundation
Rust + Redox
RustとRedoxはまあセットでやった方が面白いかな、と。
Rust
Mozillaが開発しているプログラミング言語です。LLVMでコンパイラが構築されてるとのことで、厳密には違うでしょうけど、LLVMってJavaVMとかと似てるイメージでいいのかな?
強い静的型付けで、関数型 + オブジェクト指向のマルチパラダイムです。影響を受けた言語にC++とかHaskellとかLispとかErlangとか入ってて怖いですね。この辺はF#とかともかぶってます。ただ、traitベースだったりパターンマッチングがあったりするのはやはり嬉しいです。システムプログラミング言語とあるので、ミドルウェアとかOSとか安全性やパフォーマンスに考慮したものを作るのに適した言語なのかもしれません。実際にOS作るプロジェクトが走ってますね。
公式の機能説明でわからないところがありました。どちらもメモリ管理に関わるところみたいですが、シンタックスとかに影響するのかどうかまではわかりません。
- zero-cost abstractions
- move semantics
- guranteed memory safety
使ってみないとわかんないですね。IntelliJのプラグインもあるっぽいので、ある程度馴染んだツールを使って遊べそうです。
Redox
Rustで書かれたOSですね。ブログやニュースのフィードが2015年10月からだから比較的新しいプロジェクトのようです。Githubで関連するすべてのソースが公開されています。
で、この原則を読むとRedox独自の設計思想として everything is URL
というものがありました。詳細は以下。
使ってみないとなんとも言えませんね。。。
GithubプロジェクトのREADME読むとスクリーンショットがあって、すでにGUIがあるようです。もちろん安定版のリリースはしてないのでQEMUやVirtualBoxで使うこと前提の流れとなっています。Rustをやってからソース読んだりマニフェスト読んだりするとよりわかるようになるかなあ。
Crystal
Rubyに影響を受けたシンタックスを持つ、型の省略記載も可能な静的型付き言語という捉え方の言語。ネイティブコードへのコンパイルをするんですね。中間言語に翻訳する言語が多くなってる印象があるので「珍しい」と思ってしまいました。個人的には引数と戻り値の型は明示しておくに越したことはないと思う方なのでRubyの不満が解消されそう。
公式の日本語翻訳サイトがありますね。情報の追いつき度合いがよくわかりませんが。
入りはぜっちゃんの合同勉強会の資料があるので、そっちが参考になります。
まとめ
今の所Rustに一番惹かれております。Apache Drillはチームで試してみた方がいいかな、と思ってチームのチャットルームに放流しています。