冥冥乃志

ソフトウェア開発会社でチームマネージャをしているエンジニアの雑記。アウトプットは少なめです。

follow us in feedly

つまみ食い候補の技術の概要を整理した

公式やググった結果をまとめてみたレベルで何が一番面白そうで、心のハードルが低いか確認します。

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なんかを試している人がいて、違和感が仕事をしすぎてクラクラします。

qiita.com

スキーマフリーとは言え、CSVファイルはちょっと辛そうなので、jsonファイルをなるべく使うようにすれば、クエリベースでほぼすべてのデータを操作できるようになるのではないかという妄想がはかどります。DrillのJDBCドライバもあることですし。これは、私のチームが無双するためのプロダクトかもしれないですね。

パフォーマンスは知らないけど、自信はあるみたいです。が、インメモリデータベースっぽい雰囲気もするので、要求されるメモリがきになるところです。バイナリを対象サーバにインストールして使うみたいなので、初めからリソースはあることが前提かもしれません。クライアントとして提供されているのは、ShellとWeb ConsoleとJDBC/ODBCドライバ。

その他情報:

www.slideshare.net

F♯

F# Software Foundation

MS開発の関数型 + オブジェクト指向のマルチパラダイム言語です。MSの言語なので、.NET Frameworkの言語と相互運用が可能、クラスライブラリの利用も可能となっています。仕方ないことですがMSの公式読んでると言語機能の方向性がScalaとかぶるので、始めるハードルは低いかもしれませんが流れがベタすぎやしないかと。

Mono向けに移植されたコンパイラがあるので、Mac OSLinux上でも開発可能です。Macでの利用に関することも公式で整理されていて、Xamarin Studioインストールすれば使えるとのこと。追加プラグインとかいらない感じが楽ですね。

Use F# on Mac OSX | The F# Software Foundation

Rust + Redox

RustとRedoxはまあセットでやった方が面白いかな、と。

Rust

www.rust-lang.org

Mozillaが開発しているプログラミング言語です。LLVMコンパイラが構築されてるとのことで、厳密には違うでしょうけど、LLVMってJavaVMとかと似てるイメージでいいのかな?

強い静的型付けで、関数型 + オブジェクト指向のマルチパラダイムです。影響を受けた言語にC++とかHaskellとかLispとかErlangとか入ってて怖いですね。この辺はF#とかともかぶってます。ただ、traitベースだったりパターンマッチングがあったりするのはやはり嬉しいです。システムプログラミング言語とあるので、ミドルウェアとかOSとか安全性やパフォーマンスに考慮したものを作るのに適した言語なのかもしれません。実際にOS作るプロジェクトが走ってますね。

公式の機能説明でわからないところがありました。どちらもメモリ管理に関わるところみたいですが、シンタックスとかに影響するのかどうかまではわかりません。

  • zero-cost abstractions
  • move semantics
  • guranteed memory safety

使ってみないとわかんないですね。IntelliJプラグインもあるっぽいので、ある程度馴染んだツールを使って遊べそうです。

Redox

www.redox-os.org

github.com

Rustで書かれたOSですね。ブログやニュースのフィードが2015年10月からだから比較的新しいプロジェクトのようです。Githubで関連するすべてのソースが公開されています。

www.redox-os.org

で、この原則を読むとRedox独自の設計思想として everything is URL というものがありました。詳細は以下。

github.com

使ってみないとなんとも言えませんね。。。

GithubプロジェクトのREADME読むとスクリーンショットがあって、すでにGUIがあるようです。もちろん安定版のリリースはしてないのでQEMUVirtualBoxで使うこと前提の流れとなっています。Rustをやってからソース読んだりマニフェスト読んだりするとよりわかるようになるかなあ。

Crystal

Crystal

Rubyに影響を受けたシンタックスを持つ、型の省略記載も可能な静的型付き言語という捉え方の言語。ネイティブコードへのコンパイルをするんですね。中間言語に翻訳する言語が多くなってる印象があるので「珍しい」と思ってしまいました。個人的には引数と戻り値の型は明示しておくに越したことはないと思う方なのでRubyの不満が解消されそう。

公式の日本語翻訳サイトがありますね。情報の追いつき度合いがよくわかりませんが。

Crystal

入りはぜっちゃんの合同勉強会の資料があるので、そっちが参考になります。

zephiransas.github.io

まとめ

今の所Rustに一番惹かれております。Apache Drillはチームで試してみた方がいいかな、と思ってチームのチャットルームに放流しています。