20
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Chromebookでの、CLI web開発の進め方

Last updated at Posted at 2019-01-06

開発マシンで用いられることも増えてきているChromebook。3万円ちょいで衝動買いしたが、フルHD 15インチディスプレイで重さ2KG以下、半日作業くらいはバッテリーだけでこなせるので、重宝しそう。

Chromebookは、近時、GUIアプリが動く仮想Linux環境(crostini)が提供されたことにより統合開発環境(IDE)も動くようになっている。だが、日本で安価に入手できるChromebookは、RAM容量が2GBまたは4GBといった構成となる(RAM容量が多く高速なCPUを積んだChromebookは、Amazon等を介して輸入することに)。そのため、コマンドラインインターフェイス(CLI)で少なめのRAMを活かした開発を行う方法をマスターしておいた方が良いよ、というエントリー。

Chromebrew

Chromebookで開発者モードに入った場合、はじめにChromebrewなるツールを入れることで、以下のような言語やツールが使えるようになる(バージョンは現時点のもの)。

gcc 7.3.0
python(2.7.15)
ruby 2.5.3p105
perl 5, version 26, subversion 1 (v5.26.1)
git version 2.20.1

2.7系のpythonはさておき、rubyやperlでは実用的に開発を行える気がする。
ここでは、GoやJavaといったコンパイル言語でweb開発を行う際のTipsを書いておく。

ポイントは、作業フォルダへの実行権限付与。

といってもポイントはただ一点。ChromeOSが実行権限を制限しているフォルダに権限をマウントすることだ。
以下、Java/Scalaを例に説明するが、他の言語でもそれぞれの環境に応じた同様のマウントを行う。

Javaについては、Chromeblewではまともにインストールできないようだが(コミュニティベースのChromeblewは、今のところ、Chromebookの開発環境を整える上ではさほど役に立たない存在と思っている、幸いGroovyベースのsdkmanによって任意のバージョンのJavaを手早く導入できる。
例えばJava8系の導入は以下のように行う。

sudo mount -i -o remount,exec /home/chronos/user/ 
curl -s "https://get.sdkman.io" | bash 
source "$HOME/.sdkman/bin/sdkman-init.sh" 
sdk list java 
sdk install java 8.0.192-zulu 

sudo mountコマンドによって、フォルダに実行権限(exec )を付与している。

実行権限の付与は、マシンの再起動の都度行う必要があるため、用いる開発環境に応じ、シェルにまとめておくと良い。
例えば、sbtを用いたScalaの開発では以下のようにしている。

runsbt.sh
sudo mount -i -o remount,exec /home/chronos/user/
sudo mount -i -o remount,exec /tmp
sudo mount -i -o remount,exec /media
cd /media/fuse/crostini_…/to/your/folder
sbt

実行例

地味だが、ScalaでのWeb API開発を例に説明しておこう。
gitから取得したソースコードはお試し実行してみる

git clone https://github.com/maciejmroz/akka-money-transfer-service
sbt run

コンパイルまでは問題なかったが、ディフォルトで指定されていた8080番ポートはChromeが使っているらしく使えなかった。localhostではポート番号を9000等に変更すると実行できる。

pythonのpip経由で導入したhttpieを使って検証しておこう

$ http POST  http://localhost:9000/transfer  from:=1 to:=3 amount:=40
HTTP/1.1 200 OK
Content-Length: 15
Content-Type: application/json
Date: Sun, 06 Jan 2019 06:00:40 GMT
Server: akka-http/10.1.5

{
    "status": "Ok"
}

無事動作している。

私が使う主なCLIツール

以下の通り。

HTTP client : curl, httpie
CLI editor : micro, spacemacs
JVM tools installer : sdkman(Java/Scala/Groovy)

このうちmicroとspacemacsはchromebrew経由で導入。
他にChrome拡張やAndroidアプリも使える。加えて、GUIツールもIDEを使っている(intellij)。ただし、Chromebookでは、GUIツールはDebianベースの仮想マシン経由での実行となる。ため、Debianゆえaptも使えるがRAM割当が少ないことには注意。格安ChromebookではCLIツールを使ってコツコツ開発するが吉。
なお、データベースは現状未導入だが、仮想マシンの方を使ったほうが楽かも。

Chromebookで富豪的な開発がしたかったら

Core i7 でRAM16GBというスペックを持つ Google Pixel Slateを個人輸入して使うが良いか。円高になってきたので、キーボードを入れても20万円以下だし。というか、私も買いたいので誰か先に買ってお試ししてくれる人現れないかな。

20
12
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?