はい!今やってます!

Work Pertly, Live Idly

Phoenix × Elixir × MariaDB × Dockerでjsonを返すAPIを開発する (1日目 : Docker環境構築編)

PhoenixとElixirでAPIを開発したい。
Macのローカルに開発環境を立てる。

boot2dockerを落とす

http://boot2docker.io/
1. パッケージファイルが落ちて来たら流れに沿ってインストール
2. boot2dockerのアイコンをクリックして実行

パラメータ設定

$(boot2docker shellinit)

Dockerプロセス確認

docker ps

Docker Hubのアカウントを作成する

https://hub.docker.com/

Docker Imageをpullする

docker pull centos  

centosは適当です。ただしOfficial

Docker Imageを確認

docker images

Dockerコンテナ作成

docker run --privileged -d -i -t --name=${Container_Name} -v ${Host_Path}:${Container_Path} -p ${Host_Port}:${Container_Port} ${Image_Id} /sbin/init
例1) : docker run --privileged -d -i -t --name=api -v $HOME/work/docker_related/workspace:/var/www -p 8080:80 6ffc02088cb8 /sbin/init
例2) : docker run  --privileged -d -i -t -e "HOSTNAME=api" -e "TZ=Asia/Tokyo" --name=api --link=mariadbmaster:mariadbmaster -v $HOME/work/docker_related/workspace:/var/www -p 8080:80 6ffc02088cb8 /sbin/init

コンテナ一覧を確認

docker ps -a

ミスった時用コンテナ破棄コマンド

docker rm `docker ps -a -q`

bashでログイン

docker exec -it api bash

今日はここまで

こちら ( Phoenix × ElixirでAPIを開発する (2日目 : 開発環境構築編) - はい!今やってます! ) に続きます。

【Apiary】WEBベースのAPIプロトタイピングツールを使ってRestAPI開発を効率化する

敬愛するサービスが僕がずっと温めてきたアイデアと同じ機能をリリースしました。 かなり未来のある機能だと思っていたのでショックですが、将来開発力で負けない為にスピードを出せるように技術の方磨いていきたいと思います。


以前RestのサービスをJavaで書いてHerokuにあげて、MySQLにデータ突っ込んでという方法で書いていたのですが、 フロントの要望が固まらぬままAPIを書いていても楽しくないというか、2,3個書いたところで完全に飽きてしまったので、 RestのAPIプロトタイピングツールを調べて導入してみたいと思います。 認証周りまで作り込めるのは期待せずに、Deleteできればラッキーぐらいの気持ちで幾つかツールを探してみました。


API Blueprint - API Documentation with powerful tooling
ちょっとコンセプトが理解できていないのですが、 APIのドキュメントまわりやモデリング言語、WEBプラットフォームの提供等多岐にわたるようです。

中でも特に心奪われたのがApiaryというサービス apiary.io WEBベースでドキュメント化、プロトタイピングが出来る事、 プロトタイピングしたAPIをそのままhttpで呼び出せるのがいい感じです。

これがエディター f:id:yuji_ueda:20150930010310p:plain

これがドキュメンテーション f:id:yuji_ueda:20150930010331p:plain

これがインスペクター f:id:yuji_ueda:20150930010353p:plain ※左上のURLにパスを繋いでを適当にリクエスト投げればコールできます。

jsから呼ぶだけのAPIの為だけにローカルでWebサーバ立ち上げたくないな〜と思っていた矢先だったのでかなり心惹かれました。 期待以上のものが見つかりました。

早速これで設計していきたいと思います。


その他ちらほらプロトタイピングのようなものを発見したので覚え書き程度に。

RAML - RESTful API modeling language
RamlはYamlベースのモデリングランゲージ。 0.8ですが、モデリングしたファイルを仕様書として共有できるのがいいですね。

Swagger | The World's Most Popular Framework for APIs.
Swaggerも似たような形ですが、 ツール周りが整備されているのがいいですね。

後次点で簡単なjsonplaceholder。 こちらはnpmで提供されています。 jsonplaceholder.typicode.com

Macのターミナルを乗り換える

日の目をみない記事の下書きが80を超えました。 このままゴミになってしまうのはもったいないので、しょぼいのも出していきたいと思います。

--

MacBookProがメイン端末となり早3週間、 サーバオペレーションの拙さが笑えない感じになってきたので、 デフォルトのターミナルを変えたいと思います。 特にやりたいのはPoderosaでやってたキーブロードキャストとホストをクラスタリングしてオートログイン

キーブロードキャストができるってのでひとまずiTerm2を選択 teohm.com

やる時はこんな感じ f:id:yuji_ueda:20150929010227p:plain

ホストのクラスタリングはどんな感じかなぁと調べたらAppleScriptで書けば行けそうですね〜
[BKRAFT/Articles] - Automating iTerm2 with Applescript