Microsoft Surface 2でクラウド開発
こんにちは。エンジニアの佐藤です。 新しいオフィスになって気を良くしているのですが、ところで筆者はMS Surface 2 を使っています。Surface Proではありません。少し趣味的ではありますが、今回はこの話題をお届けしたいと思います。
Surface 2、この恐ろしく制約に満ちた環境
ご存知のとおり、このモデルは、既に製造中止になった「終わった」商品です。Surface 2のOSはWindows RTですから、Windows 8.1の標準機能とOffice 2013、それにわずかな「Windowsストアアプリ」しか使えません。EclipseやIntellij IDEAのようなIDEはおろか、GitもSubversionもNodeもPHPもありません。
突破口は1時間約1円のクラウドインスタンス
ですが、私は移動時間中にはSurface 2でソフト開発をやっていますし、一日これしか使わない日もあります。 突破口は、クラウドインスタンスです。筆者が使っているのはGoogle Compute Engine (GCE)の「f1-micro」Ubuntuインスタンスで、利用料金は1時間あたり0.009USドルから0.012USドル(使用量によって変わります)。1か月上げっ放しでも千円ぐらいです。このインスタンスを、「SSH+SFTP+WebDAV+Web」サーバーとして設定します。 (後述の「WindowsエクスプローラをWebDAVにつなぐ」参照) GitやSubversionなどが必要な場合は、これらもインストールします。(こちらについてはネット上に手順が豊富に紹介されていますので、割愛します。) こうすることで、ファイル管理ツール(Windowsエクスプローラ)とバージョン管理ツール(Git/Subversion)、ブラウザ(IE11)とMS Officeが使えるようになりました。あと少しです。
貴重な2つのWindowsストア無料アプリ
次はWindowsストアで以下のアプリをインストールします。いずれも無料です。
ソースコードエディタ:Actipro Software社 「Code Writer」
SSHクライアント:Stefan Podskubka氏「Remote Terminal」
Windowsストアアプリは残念ながら未だに充実とは言いがたい状態ですが、この2つは実用的だと思いました。欲を言えば、日本語入力に対応してほしいですが、現バージョンでも日本語の表示・貼り付けはできます。
<図1:Code WriteとRemote Terminalの画面例>
ついに本格的作業環境へ
これで、一通りの作業ができるようになりました。SSHクライアントでUbuntuインスタンスにログインし、PHPとMySQLをインストールしてLAMP開発を開始できます。 よくあるパターンでは、PowerPointの提案書を見て実装要件を確認し、エディタでコード記述。ブラウザで動作確認してOKだったらGitレポジトリにコミット、といった手順です。 ポイントは、画面を縦にすることです。縦にすると、スクリーンキーボードを表示してもアプリケーションの表示スペースが十分に取れます。ソースコードの見通しも良くなりますし、スクリーンキーボードが片手で打ちやすいサイズになります。
Salesforce開発は「Force.com CLI」を使用
通常のWeb開発はこれでなんとかなりますが、Salesforce開発を行う場合は、Ubuntuインスタンス側に追加でForce.com CLIをインストールします。
Force.com CLI はGitHubで「heroku/force」として公開されています。こちらは日本語情報が不足しているので少し解説したいと思います。
最初はUbuntuインスタンスにSSHでログインします。次にSalesforce環境にログインしますが、このときコマンドラインオプションでユーザー名とパスワードを指定します。
$ force login -u username@organization.com -p pa_ssword
ログインしたら、以下のコマンドでメタデータ(ApexクラスやVisualforceページなど)一式をダウンロードします。
$ force export
あとはテキストエディタでコード記述などを行い、以下のコマンドでSalesforceにアップロードします。
Apexクラスをアップロードする場合:
$ force push -n SomeClassName -t ApexClass
Visualforceページをアップロードする場合:
$ force push -n SomeVisualforcePage -t ApexPage
テスト実行は以下のコマンドです。
$ force test SomeTestClass
Salesforceには標準機能としてApexやVisualforceコードの記述をWebブラウザ上で行う機能があります。しかしソースコードをGitやSubversionのレポジトリなどで管理したい場合が多いですし、ソースコードエディタの操作性は、やはりネイティブアプリの方が優れています。
キーボード・マウスが使える場合は「CodeAnywhere」を利用
とは言っても、机がある環境ではキーボードとマウスを使った方が効率が高いのも事実です。前述「Code Writer」はタブレット向けUIのため、よくやる「広いディスプレイの左右のウィンドウに2ファイル同時表示」ができません。かと言って、Surface 2に「デスクトップ版」エディタの類はありません。 この問題を解決するのが、ブラウザ版IDEの「CodeAnywhere」です。(他にもいろいろありますが、筆者はこれが気に入っています。) サインインして、先ほどのUbuntuインスタンスにSFTPで接続するように設定します。
<図2:CodeAnywhere接続例>
IDEの操作性は十分実用に耐えるもので、先ほどの「広いディスプレイの左右のウィンドウに2ファイル同時表示」も、もちろん可能です。日本語入力もできます。SFTPで1サーバー接続するだけなら、無料です。
CodeAnywhereは米国にホストがありますので、Ubuntuインスタンスも米国リージョンのものを選んだ方が操作は快適です。
<図3:CodeAnywhere縦スプリット画面例>
WindowsエクスプローラをApache WebDAVにつなぐ場合の特別設定
ApacheをWebDAVとして設定する方法はネット上に豊富に紹介されていますので割愛したいと思いますが、筆者が引っかかったのは以下の設定です。
BrowserMatch "^Microsoft-WebDAV-MiniRedir/" redirect-carefully
この設定はWindowsエクスプローラをApacheのWebDAVに接続するための特別設定です。
Apacheの設定ファイル(部分)は以下のようになりました。
ServerName server03 ServerAdmin webmaster@localhost ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <IfModule mod_ssl.c> <VirtualHost _default_:4443> DocumentRoot /webdav SSLEngine on SSLCertificateFile /home/sato/CA/server03_crt.pem SSLCertificateKeyFile /home/sato/CA/server03_key.pem AddDefaultCharset utf-8 BrowserMatch "MSIE [2-6]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown BrowserMatch "^Microsoft-WebDAV-MiniRedir/" redirect-carefully DAVLockDB /home/sato/DAVLock <Location /> SSLRequireSSL Options Indexes MultiViews FollowSymLinks AllowOverride None DAV On AuthType Basic AuthName "sato's WebDAV" AuthUserFile /home/sato/passwd.dav Require valid-user </Location> </VirtualHost> </IfModule>
後はこのWebDAVにネットワークドライブとして接続します。
筆者が低スペックタブレットにこだわる理由
筆者がここまでタブレットにこだわるのは、第一に通勤時間を有効活用したいからです。 首都圏で勤務する筆者にとって、往復2時間を超える通勤時間の過ごし方は重要な問題です。この間はまず座れないのでノートパソコンは使えませんし、スマホの画面サイズでは辛いものがあります。 もう一つは、経済的合理性です。 クラウドコンピューティングの発達により、手元にハイスペックの環境を用意する必要性は減少しています。リソースはなるべくクラウドで利用し、手元のコンピュータは軽く薄くした方が、荷物も軽くなりますし、出費や生活空間の圧迫が小さく済みます。 今回ご紹介した手法はOSを問わず適用できます。テキストエディタとWebDAVクライアント、ファイルマネージャ、SSHクライアントがあれば、AndroidでもiOSでも容易に適用可能でしょう。
コメント