クラウドベースの統合開発環境「AWS Cloud9」超便利ッス。


岩石です。

来週はもう師走。出雲国にお集まりになった神様達もお帰りになられ、いよいよ冬の雰囲気となってきました。寒いのが苦手なので後数ヶ月は我慢の季節ですが、一番辛いと予想している通勤時間は防寒対策をしっかりして音楽を楽しみたいと準備を始めています。

エディタ何使ってる?

みなさんはコードや文書を作成する際にどのようなエディタを使用されてますか?VimEMACSなどシェア争いが話題になるものもあれば、最近ではATOMVisual Studio Codeを使われる方も多いと思います。NetBeansEclipseなど開発などのプラットホームとして利用されるものもありますし、RubyMineのように特定の用途に向け特化されたプロダクトもあります。

今回紹介するのはAmazon Web Services(以下AWS)が提供するサービスの一つであるAWS Cloud9(以下Cloud9)です。Cloud9はいわゆるエディタそのものでは無く、エディタのインターフェースと実行環境を一緒にした統合開発環境(IDE)です。

AWS Cloud9

AWSが提供されるサービスですのでやはりクラウドベースです。実はCloud9は弊社社員から 「超イイっす!!」 と教えてもらい使うようになったのですが、使い慣れてしまうとこんな便利な物をなぜ今まで使わなかったのかと感じてます。

Cloud9は実際にはLinuxサーバの上で動作します。AWS以外のクラウドやオンプレミスの環境にLinuxサーバを準備し、Cloud9から接続し利用することも出来ますが、今回はEC2を利用することで手軽に利用する方式を前提に書きます。

Cloud9の環境はAWSマネジメントコンソールから作成します(以下「環境」という言葉の区別のためにCloud9の実行環境のことをenvironmentと書きます)。environmentの名前、プラットホームに使用するOS(Amazon linux か ubuntu18.04)、使用するEC2のスペック等を指定しenvironmentをローンチします。

EC2の上で動作するので課金が心配ですが、基本的にEC2の課金体系と変わりません。ブラウザでアクセスをするとインスタンスが起動し、ブラウザのウインドウやタブを閉じて設定した時間(デフォルトは30分:最短時間)経過すると自動的に停止します。

当然ですがAWSの各サービスとの連携や接続などについて親和性が高く、AWSを使用する上ではとても使い易いのですが、その他の一般的な用途にも使いやすい機能があります。

Cloud9の良いところ

Cloud9を使ってみて良かった点です。

操作端末の環境に依存しない


画像の表示も可能。ファイルのアップロードはドラッグ&ドロップで。

クラウド上で動作しブラウザでアクセスして操作しますので、操作する端末の環境には依存しません。これは非常に大きなメリットだと感じています。最近は開発だけで無くデプロイや運用の業務でも開発ツールが必要な場面が多いです。操作端末にそのツール類を準備する必要があるのですが、Cloud9のenvironmentに準備しておけば操作端末に必要なものはブラウザだけとなります。

実際にはAWSの基盤で動作するためネットワークも高速です。Dockerのイメージをビルドしアップロードする時など手元のインターネット環境で行うより快適に行えます(しかも自分の操作端末に大きな負荷はかかりません)。マシンスペックやOSを気にすること無く目的の作業を行えます。まだ試したことが無いのですがChromeBookやiPadなどでも使えるのではないでしょうか。

いつでもどこでも

操作端末の環境に依存しないということは事務所でも出先でも、また自宅のPCからも同じenvironmentを操作することになります。継続的な作業やOSS開発のような業務活動ではない開発などにとても向いていると思われます。ログインや環境操作などのイベントはAWS CloudTailで記録できます。またAWS SNS等と連携しログイン通知を行うこともできます。

カスタマイズできる

WebツールでありながらキーバインディングをVim風・Emacs風・Sublime風に変更したり、テーマを変更したりするなどのカスタマイズが可能です。さらに言語ごとの表記対応や実行環境との連携設定など多くのカスタマイズに対応してます。

必要に応じスペックを変更できる

Cloud9はEC2のインスタンスで動作しますので、必要に応じてCPUやメモリのスペックを変更することができます。またストレージの容量についても通常のEC2インスタンスでの要領と同じやり方で増やすことができます。

遠隔ペアプロ・モブプロできる

AWSの権限管理はIAMで行います。Cloud9のShare機能において、このIAMで作成されたユーザを用いて共同作業者を増やす事ができます。IAMユーザ毎にRW(Read-Write: 編集可能)、R(Read-Only: 閲覧のみ可能)を割り当てる事ができます。

各ユーザのログイン状況も確認できますし、各々が編集した内容は随時更新され、誰がそのような編集を行ったかも表示されます。グループチャット機能も備わっているのでプログラミングだけでなく様々なプロジェクトで利用出来そうです。

必要な構成毎に環境を切り替えることができる

目的毎にenvironmentを分けて構築し複数のenvironmentを使い分けることができます。
例えば

など使い方は様々ですが、いろいろな要件を一つのenvironmentに混ぜないことでシンプルかつコンフリクトの発生しにくい環境を作ることができます。

Cloud9で困ること

メリットと比較すると 全く問題には感じていません が、強いて挙げると次のような内容があります。

インターネット接続が無いと使えない

残念でもあり、あたりまえのことですがインターネット接続が無い場合使用する事はできません。

お金がかかる

非常に残念ですが、前述の通り使用コストが発生します。具体的には下記の費用が発生します。

AWSさんのページでt2.microを1日4時間程度、月20日使用した場合月額 USD2.05(¥110/USDのレートで¥225.5)と試算されている例があります。
料金 - AWS Cloud9 | AWS
快適さなどをふまえるとこれぐらいは問題無いかなと思って使用しています。

欲しい機能

現時点でも満足度高くIDEとしての機能は十分な気がします。
今後望むとしたら次のような内容(主に実行環境に対する要望)になります。

スペック変更はCloud9画面から行いたい

前述の通りスペックの変更は任意に行えますが、要はEC2のスペック変更やEBSの容量拡張の作業となります。せっかくの統合環境ですし例えば運用中のシステムを間違って変更してしまうなどのミスを防ぐことを考えると、Cloud9の画面から変更ができると嬉しいです。

動作するホストの更新は自動でやって欲しい

実際にはLinuxサーバの上で動作しているため、そのサーバのOS更新などを行う必要がありますが、ユーザの間隔としてはIDEを触っているだけなので更新するという感覚を持ちにくいと思われます。課金を抑えるためにも無駄に起動させたく無いので更新が後回しになる気がします。何らかの仕組みで自動更新を実現して欲しいです。

オンプレのsshサーバを利用する場合など実現が難しい機能ですが実現できると良いなと感じます。

まとめ

Google Cloud Platfomeをお使いの方なら「Cloud Shellと同じ?」とお感じかもしれません。出来ることはほとんど同じです。目的がCloud ShellはGCPのサービスを使うためのもので、Cloud9は開発のためのものという違いがあり、Cloud Shellは無料で使用出来ますがAWS Cloud9は有料です。Cloud9ではスペックの変更や共同編集などもできるので、共同の編集基盤としての利用にも使えそうです。

ツールのWeb化が進んでいるので高機能で重たいPCを持ち運ぶ必要がなくなってきました。Adobe CC ツールもどんどんクラウド対応しタブレット端末用でも快適に使えるようになってきているそうです(※未確認)。

インスタンスの管理もAWS Systems Managerでできますし、益々iPadのセルラーモデルが欲しくなってきました!


My Redmine

こちらの記事もオススメです!
コーディング作業で使用しているVisual Studio CodeとVim
開発業務でVSCodeとVimを使っています。VSCodeは動作が軽くて使いやすいのが良いです。
RubyWorld Conference 2019に出展しました
RubyWorld Conference 2019にPlatinumスポンサーとしてブースを出展。プレゼント企画としてクイズに挑戦していただきました。
Redmine互換課題管理システム「RedMica」 リリースの狙い
今日使える明日のRedmine「RedMica」!Redmineの次期バージョンで利用できる新機能をいち早く利用できるのが最大のメリットです。
OSC 2019 島根でのプレゼン発表へ向けての準備と工夫したところ
OSC 2019 島根でプレゼン。スライド作成で工夫したところを紹介します。
GitHubにView customizeプラグインによるRedmineのカスタマイズ事例集を公開しました!
view customizeを使ったRedmineのカスタマイズ事例を公開しました。
ファーエンドテクノロジーからのお知らせ(2019/11/13更新)
2019年11月 オライリー本の全冊公開日のお知らせ(もくもく勉強会も同時開催)
ファーエンドテクノロジーが所蔵するオライリー本(全冊)公開日のご案内です。公開日には「もくもく勉強会」も同時開催します。
「FAREND NEWS」2019年第6号 発行
広報紙「FAREND NEWS」2019年第6号を発行しました。弊社サービスの運用・サポートに携わっているスタッフや弊社の取り組みをご紹介します。
Redmineの最新情報をメールでお知らせする「Redmine News」配信中
新バージョンやセキュリティ修正のリリース情報、そのほか最新情報を迅速にお届け