個人プロジェクトの今後

Haskell, OCaml版を無事に実装し終えて、今後のことについて迷っている。
今考えられる個人プロジェクトは、大まかには2つである。

1. lisp 処理系
2. サーバー

まず、lisp 処理系について掘り下げてみる。
こちらについては、多言語実装と高速化、多機能化の3つを挙げることができる。
多言語実装では、いかに挙げる言語での実装を目標としている。

* lisp, scheme
* sml
* elixir
* rust
* c
* c++

まだまだ挙げようと思えば挙げられるが、有益な経験を得られると思えるものみに絞った。
多言語実装を通して、その言語に慣れ親しむのが主な目的である。
このプロジェクトに取り組む前は、動的手続き型言語(Ruby, JavaScript)でのみ
実装できただけであったため、その後に続くGo, Haskell, OCamlは得るものが多かった。
しかし、静的型づけ、関数型と歩を進めたあとでは、そのあとに続く言語での
得られるものは少ないのではないかという不安がある。
ただし、lisp自体の習熟は、なぜlispの生産性が高いと言えるのかをよく理解できていないため、
プロジェクトを進める価値はまだ十分にあると言えそうである。

以上の不安から、浅い部分で経験を積むのではなく、深いところに踏み込んでいくことを考えている。
その候補としては、処理系の高速化や多機能化が挙げられる。

高速化に関しては、ゼロ知識のため他のプロジェクトを読むのが主な作業になるだろう。
そこで得られた知見を自分のプロジェクトなり他人のプロジェクトなりにコミットして、
ベンチマークの成績を挙げられれば、わかりやすい励みになると思われる。

多機能化については、Peter Norvig実装から脱却して、ひとつのOSSプロジェクトへと成長させる
ことを意味している。ここでは、what's new に答えられるかどうかがプロジェクトの真価を
問われる部分かと思われるが、まずは既存の仕様を理解し忠実に実装するという点を目標としたい。
自分のレベルから考えて、それだけでも十分高度な目標であろう。

次に、サーバーについて考えてみる。
こちらについては、フレームワークの構築とサーバーそのものの実装が挙げられる。
どちらも、簡単なものを実装してみて、理解を深めるのが主な目的となっている。

フレームワークとしては、今まで触ってきたRESTful APIフレームワークの構築を考えていてる。
大まかな構成については理解できているので、実際に構築してみて不明確な点の洗い出しや
包括的な理解ができれば成功と言える。
このプロジェクトで難しいのは技術の選定である。どの言語やどのDB、キャッシュ機構、
そのほか有用なものは何かなど考えるべきことが多く、うまくまとめ上げられない。
一歩引いて、計画書を作り「とりあえず」そのとおりに進めるといったやり方で進めたほうが
よさそうである。

サーバー実装については、ふだんtomcatやapacheなどに頼っている部分の理解を目的としている。
TCP/UDPを生で取り扱い、ソーシャルゲームのRESTfulに縛られない技術を身につけるのである。
こちらもフレームワークで起こったのと同様の問題が発生しており、プロジェクトはあまり
具体的になっていない。
先日引越し作業で出てきた「オンライゲームの作り方」を参考に、Haskell/OCaml/Elixirなどで
実装してみるのが適切な目標かもしれない。

コメント

このブログの人気の投稿

git-svnでFILE was not found in commit HASH

神スクリプトの使い方 Codeforces編

JavaでIRCクライアント