サーバ上でスクリプトを書くとき何を使いますか?

vimにする? Emacsにする? それとも…?


先日こんな状況になりました。

Google Cloud Storage上の6000個のテキストファイルをBigQueryに6000個のテーブルとして投入したい

6000個のテーブルってなんだよって思う方も多いかもしれませんが、
ビックデータ界隈だとよくある通常業務の一つで、これぐらいの業務は日々発生する雑務の一つです。

普段なら自分の端末でファイル名からテーブル名に変換する簡単なスクリプトをサクッと書いて、
実行しながら別の開発業務を行うところですが、
今回は先日知ったCloud ShellのCode Editorを使って書いてみました。

Google Cloud Shell とは

Google Cloud Platformで提供されているShell環境です。
参考URL:https://cloud.google.com/shell/docs/features

アカウント向けの無料の開発用インスタンスという位置づけで提供されています。
Java, PHP, Node, Python2と3, Goなどの言語が入っていて、
gradleなどのビルドツールやpip, Composerなどのパッケージマネージャなども入っていて
5GBの無料ストレージ付きのまさに至れり尽くせりインスタンスとなっています。

ただし、開発用という目的のため
SSHのセッションが切れた場合には一定時間後にインスタンスは停止されます。

また、昔はShell環境のみを実行できるサービスだったのですが、
最近機能が強化され
Cloud Shell内にサーバーを立ててウェブからプレビューする機能なども追加されました。

その中でも衝撃だったのが、Cloud Shell Code Editorでした。

Cloud Shell Code Editor

Cloud Shellには標準でTheiaというIDEが搭載されています。
GCP的にはコードエディタと読んでいるみたいですが。
Theia

起動するとこんな感じ
----------2019-07-27-18.18.06

Cloud Shellの鉛筆マークを押すと起動します。
このコードエディタを使うことでCloud Shell上のファイルをIDEで開くことができます

もう一度言います

サーバ上のファイルをIDEで開いて、編集することができるのです。

IDEなので当然補完も効くし、シンタックスハイライトもされます。

また、左側にはGUIのディレクトリ構造表示もついていて、視覚的にもわかりやすくて便利。
GUIのファイルを右クリックしてブラウザからダウンロードするなんて機能もあります。

何がいいのか

自分的に何が嬉しいかというと、
Googleのネットワーク内でスクリプトを編集しながら高速に実行できるということです。

Google Cloud Storageの応答も早く、BigQueryの応答も早いので、
簡単な転送スクリプトなどの編集や実行にはとても向いてます。

例えばGCS上の数GBのファイルの中身を確認して整形したいような場合
恒久的に発生するタスクならDataflowの作成も検討しますが、
ワンショットの処理なんてこともあります。
そんな場合にローカルに落とすと帯域も使いますしどうしても回線的に遅くなったりします。
しかし、Cloud Shell上で行えばGoogleのネットワーク内からファイルが出ないため、
高速で通信できますし、帯域も圧迫しません。

こんな環境が無料で提供されているなんて、Googleやばいですね。

コードエディタを使った感想

普段Node.jsのスクリプトは主にVSCodeで書いているのですが、
ほとんど違和感なく使えました。
通信速度の影響で若干ファイルセーブのタイミングが遅い時がある事と、
VSCodeよりNode.jsの補完が若干弱いかなという感想でした。
例えば、require()でjsonファイルなどを読む場合に
VSCodeだとディレクトリ内のファイル名が補完候補として出てくるのですが、
それがなかった事でしょうか。
それ以外は特に気になることはありませんでした。

結論

自分は、サーバ上でスクリプトを書くときはコードエディタ(Theia)使います。
そして無料で開発環境が提供されているCloud Shellはヤバい。


ちなみに、タイトルの元ネタの「散切り頭を叩いてみれば文明開化の音がする」というのは、
明治初期の1871年ごろの歌らしい
実は全文はもっと長く、

半髪頭をたたいてみれば、因循姑息な音がする。総髪頭をたたいてみれば、王政復古の音がする。ざんぎり頭をたたいてみれば、文明開化の音がする

という歌で、意味は
ちょんまげ頭は古いことにこだわっている人
総髪頭でもまだ古い、
散切り頭が一番イケてる
みたいな意味らしいです。