C++幼女先輩

プログラミング成分多め

年末~年始の開発 Elixir phoenix、node express、ruby rails 調査

あけましておめでとうございます

年末~年始にかけて、自分で作るゲーム用にサーバ開発の調査をしていた
色々な選択肢があり C++で作る:経験あるし可能だが、初心者のメンバーがいるので今回は却下
JavaPlayframework:前に作って経験があるし Java8等も使ってみたいが飽きたので
Ruby on RailsPythonPHP・・: サーバ運用コスト考えると遅いサーバは費用が辛いので却下
ErlangHaskellClojure:趣味に走りすぎか
Scala:ビルド長い
C#:まだMicrosoftロックインははやい
Go:言語的にちょっと・・

で、結局
Rails: ほとんどのフレームワークRailsライクなので基礎としていつか勉強させるべきだ
Elixir:そこそこ速いらしい。堅牢性は十分。これからのWeb言語の候補
node:そもそもC10Kはnodeが解決すべきであった。言語の堅牢性が悪いが ES6 Babelを使えばかなり回避可能である

の3本に絞った

Rails

一応最初に Railsを調べた。というのは最も日本語情報もありコミュニティが発達していたからだ
あっさりDockerを作り簡単なAPIを作った
一旦中断

Elixir

Alpine Linuxから Elixir環境をビルドしてくるDockerを作ってみた。とりあえず上手くいった
ところが、mixパッケージの依存関係なので、本体バージョンなどの制約があり
色々なバージョンを選べるよう、他人のイメージを使っている
バージョンFixできたらAlphineで1から作りたいところ

現在は、やはりmixパッケージの依存関係で mongodbのライブラリがうまくビルド出来ず
いろんなバージョンを試したり、情報をあさっているところ
正直辛い・・ nodeでいいや という気持ちになってきている

また、最も有名なmongoライブラリ exredisは、findやsave時にエラーか成功かを取れない
という問題もあり redixを使おうと思っている
まだビルドエラーなんだけどね・・

node

ここ数年のJavaScript業界はカオスで情報収集怠っていたが、ふと名案を思い付いた
node+express に対し ES6で記述しBabelすることは必須と思っているが
Webpack等でワンソースにして minifyかけると、実行速度も上がり 素晴らしいはず
そして 通常開発Dockerと ビルド済Dockerを別にすれば Dockerイメージも極小になるし最強ではないかと

方針はなんとなくたった
Builderイメージとrunnerイメージを作り
Builderイメージは 普通に expressで新規プロジェクト作り lebabでES6に変換し開発をする
そして 自動的にBabelしてWebpackしてminifyし Runnerイメージで実行
ただし 色々と躓きポイントがあるので、1個ずつ検証中だ

とりあえず今は普通の Expressでmongodbの設定を試している
データベース指定でconnectすると固まるので 原因をさぐっているところ

あとは オートリロードが出来ていないので不便

そして最大の問題が BuildとRunを別Dockerにして実行させるやつ
ES6対応ともいう
はやくES6使いたい