開発

サンプル・アプリケーション用の開発環境を始めましょう。ターミナル上で次のコマンドを実行します:

$ git clone https://github.com/hashicorp/otto-getting-started.git
$ cd otto-getting-started
$ otto compile
$ otto dev

全てのプロジェクトがこのように簡単に始められることが想像できます。

このコマンドの初回実行時、Otto が Vagrant を背後で使うためにインストールを求めるかもしれません。その場合、対象環境向けにある程度大きなイメージ(~350MB)をダウンロードするでしょう。これは1回だけのコストです。

何も無い所から開発環境を整えるまでの全てのプロセスは、およそ5分かかります。この命令は開発環境を始めるときに、定期的に実行することになるでしょう。そのため、ここでのパフォーマンスはあまり重要ではありませんが、Otto の将来のバージョンでは、1分以内に行えるよう劇的に速度を上げます。

レポジトリをクローン(複製)したディレクトリを確認すると、Otto に関するあらゆる設定が入っていることが分かります。簡単な例として、Otto は何らかの設定ファイルを必要としません。Otto はアプリケーションが Ruby アプリケーションであることを検出し、自動的に Ruby 開発環境を構築します。

何が起こったか説明する前に、アプリケーションを起動しましょう。

$ otto dev ssh
> bundle && rackup --host 0.0.0.0
...

それから別のターミナルで otto dev address を実行し、開発環境の IP アドレスを取得します。ブラウザで対象アドレスのポート 9292 を表示します。これを書いている私自身の環境は “172.16.1.137:9292” です。アプリケーションが動いて見えるでしょう!

<図:Who are you?>

それでは何が起こったのか順を追って見返しましょう。

コンパイル

始めに実行したのは otto compile でした。これは Otto の鍵となる魔法の手順です。Otto は環境と設定ファイル(もしあるならば)を調べ、アプリケーションの開発やデプロイに使うため、データをコンパイルして何十ものファイルに出力します。

先ほどの例では、otto compile によりアプリケーションが Ruby であることを検出し、デフォルトであるとみなします。次のステップでは、より正確に Otto の設定をするよう Appfile を記述します。

コンパイルの結果は ”.otto” ディレクトリの中で確認できます。次のように表示されるでしょう:

$ tree .otto
.otto
├── appfile
│   ├── Appfile.compiled
│   └── version
├── compiled
│   ├── app
│   │   ├── build
│   │   │   ├── build-ruby.sh
│   │   │   └── template.json
│   │   ├── deploy
│   │   │   └── main.tf
│   │   ├── dev
│   │   │   └── Vagrantfile
...

24 directories, 41 files

設定を全く行わなくても、Otto は他の百戦錬磨のソフトウェアの構築、開発環境、鯖の起動、アプリケーションのデプロイ等を行うための、多くの設定ファイルを作成します。

これが Otto の美しさです。簡単な入力とワークフローにより、Otto はアプリケーションの開発・デプロイを扱う上で、業界のベスト・プラクティスを用いてソフトウェアの信頼と正しさを管理します。あなたが必要なのは Otto の使い方を学ぶだけであり、残りの処理は Otto が行います。

詳細な情報はコンパイルの概念のページをご覧ください。

Note

”.otto” ディレクトリを直接操作する必要はありません。これは Otto が内部で使うディレクトリです。しかしながら、コンパイルの出力を参照することで、Otto がアプリケーションの開発・デプロイのためにどのように動作するのか確認できます。

開発環境の構築

コンパイルした後、otto dev を使って開発環境を開始します。

これはローカルに仮想化された開発環境を構築し、この環境内とアプリケーションを共有し、自分のマシンから接続できるように IP アドレスを設定します。

Otto はアプリケーションが Ruby であることを検出しましたので、全ての Ruby 開発環境が必要とする Ruby と Bundler もOtto は自動的にインストールします。

otto dev コマンドの最後で、Otto は開発環境がグリーンになった(訳注;利用可能になる)と説明を出力します。これらはまた、特定のアプリケーション・タイプにも調整できます。命令を PHP や Node 等に変更します。

Otto は設定ファイルが無くとも、コマンドをいくつか実行するだけで、これら全てを行えるのを覚えておいてください。Otto は問題なく動作します。

SSH と共有ファイル

開発環境にユニークなアドレスが割り当てられると、自分のマシンから利用できるようになります。Otto には otto dev ssh という素早く SSH ターミナルを開けるショートカットがあります。

このコマンドは自動的にローカルの開発環境にある SSH ターミナルに入るためのもので、作業用ディレクトリの中にあるファイルも設置します。ls を実行すると、レポジトリの内容が見えるでしょう:

$ ls
Gemfile     Gemfile.lock    README.md   app.rb      config.ru   views

また、Otto は開発環境とマシン間のフォルダを自動的に同期します。これにより、自分マシン上の自分のエディタでローカルに編集できます。そして、変更があれば開発環境に直ちに転送します。

Otto が同期するディレクトリは、デフォルトでは otto dev ssh を実行する場所です。

アプリケーション特定ソフトウェア

以前に言及したように、Otto は Ruby アプリケーションを検出し、Ruby と Bundler を自動的にインストールします。次のステップは、アプリケーション(``bundle``を使用)の依存関係のあるダウンロードと、アプリケーション(``rackup``を使用)の起動です。

$ bundle && rackup --host 0.0.0.0
Using rack 1.6.4
Using rack-protection 1.5.3
Using tilt 2.0.1
Using sinatra 1.4.6
Using bundler 1.7.6
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.
[2042-01-01 12:55:28] INFO  WEBrick 1.3.1
[2042-01-01 12:55:28] INFO  WEBrick::HTTPServer#start: pid=12965 port=9292

もしこの環境が PHP 環境であれば、PHP がインストールされます。もし Node であれば、Node と NPM がインストールされます。他も同様です。Otto は自動的にアプリケーションに対する開発環境を構築します。

開発環境のアドレス

Otto で作られた全ての開発環境には、マシンからアクセスできるようにユニークなアドレスが割り当てられます。otto dev address によって簡単にアドレスを確認できます:

$ otto dev address
172.16.1.137

表示されるアドレスは異なるでしょう。

前のステップでウェブサーバを起動していれば、そのアドレスとポート 9292(アプリケーションがデフォルトで開いているポート)を使い、アプリケーションの動作を見られます。

<図>

その他のコマンド

otto dev には様々なサブコマンドがあります。otto dev help を実行することで、全てを表示できます。

これらの命令がアプリケーション・タイプによって変わることに注意してください。現時点では Ruby 向けのコマンドはありませんが、将来は、Ruby コンソールを開き、自動的にアプリケーションを起動するなどの特別なコマンドが使えるのを想像してください。いずれ Otto が対応します。

次へ

このステップでは、Otto を簡単に使う方法を学びました。Otto で初めてコンパイルする経験と、設定ファイルが無くても(zero configuration) いかに Otto が動作するかを見ました。この時点では開発のみ扱っていますが、Otto の力を感じ始めてもらえると嬉しく思います。

次に、まずインフラを構築することから、このアプリケーションをデプロイするプロセスを始めましょう。