PC環境を失ったので代わりに iPad だけで生き抜く記録
(最終更新:2022/07/29)
結論として、iPad だけで強く生き抜くことはできなかった
ワンチャン Codespaces を使えば iPad でも環境を整えられなくもないが、その投資が実現できるなら PC 買った方が安いかもしれないという状況である
生活費+PC代を稼ぐことを考えると、2~3ヶ月ほど肉体労働を頑張ることでどうにかするしかないのではないか……?
取り敢えず Codespaces のアーリーアクセスが降ってこないことには話にならないので、はやめに申請しておくのがいいだろう
状況
諸事情あり、貸与されていたノートPCを全て返却することになり、手元には iPad しか残されていない
しかし、諸々やるべきことはたくさんあり、それでもプログラミング環境は確保せねばならない
孤軍奮闘して、PCがなくてもプログラミングできるような環境をつくることを目標とする
まずやること
物理キーボードとマウスがないと効率が著しく落ちることがわかった
フリック入力でどうにかなるものじゃあないし、画面上にキーボードを表示するのも占有面積が大きすぎてつらい
物理キーボードについて、どんなものを購入するかは自由ではあるが、iPad を充電しながら使うことを想定した時に、コネクタを奪い合うような状況は避けたい
よって必然的に無線式、もといBluetooth方式のものを採用することになる
一方で、今後も今の状況が長引くということも考えられるが、2、3年もこのままということは考えづらい……すなわち、あまり多額の投資をしてもよいわけではない
となったときに、logicool K380 と M650L を採用した
(合計8000円程度でだいぶ手痛い出費だが、背に腹は変えられないのと、今後PCを入手してからも継続して利用できるように「いいモノ」を選ぶことに主眼を置いていた)
どちらも充電式ではなく、乾電池をいくつか消費するタイプだが、その分スタンドアロンに頑張ってくれている感じがする
当然使用感にも何の問題もない
マウスの方は、私の手がそこそこでかいのでLとしたが、ちょうどいいサイズに収まってくれて助かる(中指先端から手首までおおよそ20cm)
改善点
もちろん、改善点もある
上記二つの製品は「プログラマブル」であることを一つのウリとしているが、 iPad で使用する場合はその恩恵にあずかることが難しい
いちおう公式アプリもあるのだが、それはキーボードおよびマウスの定期アップデートを自動でやってくれるというもので、何らか機能を制御できるものではなさそうだ
開発環境
PCにおいては、vscode を使って開発していた
が、残念ながら iPad には vscode が対応していない(MacOS ならあるのだが……)
ローカルにインストールできないのは仕方がないとして、じゃあクラウド上で使えるかも?と考えた……結果的に以下の候補が見つかった:
- code-server によるセルフホスト
- vscode.dev
- GitHub codespaces
この辺の検討は弊ブログでも書いたが、2022/04/04現在、利用可能なのは上二つで、さらにコマンド実行環境も欲しいとなると code-server
を使うしかないようだ
Run VS Code on any machine anywhere and access it in the browser.
とはいうものの、果たして iPad からでも同様のことが言えるのかどうか、実際にやってみないとわからないにゃあ……
code-server
+ gcp
で調べたら結構日本語情報も出てきたし、未来は明るいのかもしれん…
ただし、公式曰く "TL;DR: Linux machine with WebSockets enabled, 1 GB RAM, and 2 CPUs" らしいので、いわゆる「無料枠」上に VSCode を置きっぱなしにして作業するのはだいぶ辛いかもしれないことが想定される
GCP のプリエンプティブル
順番が前後するが、なぜGCPかというと、このプリなんちゃら機能を利用することを想定しているからだ
インスタンスを立ち上げる際に、オプションで preemptive と指定しておけば、そのまま放置しても24時間で自動的にシャットダウンしてくれる
無論24時間以上継続稼働させる目的では採用できないが、1日のうち数時間だけ開発と向き合うためにハイパフォーマンス環境を確保できるのはかなり快適ではないか?
これなら、ローカル環境がどれだけ貧弱でも問題ないはずだ
gcloud
コマンド
で、そのGCPと向き合うためには、ブラウザ(やアプリ)経由で Google Cloud Console をぽちぽち押していくか、Cloud SDK に含まれる gcloud
コマンドラインツールを使うか、あるいは時代錯誤の REST API を叩くか?という話になる
はじめは、ぽちぽちだけでもいいのだろうが、やがてその「コードを書き始めるまでのラグ」が気になり出して自動化したくなるだろう、そこではじめて gcloud が真価を発揮することになる
a-shell
が、肝心なこととして、iPad からでは gcloud がつかえないし、そもそもターミナルすらあやうい
さいわいにも、a-shell
というアプリがデファクトとして存在していることがわかったのでこれを使う
SSH接続はできるようなので、これで無料枠の鯖につないで普段使いしつつ、必要な時だけ preemptive なインスタンスを立ててVSCodeをブラウザから繋ぐという方針になる
a-shell <--> gcloud CLI (on gcp 無料枠) <--> GCP preemptive
a-shell 側では さまざまな制限がある中で、ホームディレクトリ直下に .profile
を置くことでエイリアスや環境変数を宣言することができる
(シェルを起こすときも実行されるらしいのだが、自分の環境ではうまくいっていないようだ)
ここに、無料枠へのSSH接続を行なうコマンドでもエイリアシングしておけば、パパッとコマンド打つだけでクラウド上のシェルに接続できて便利ね〜〜
しかも、VMには gcloud コマンドが常備されてるっぽいのもGOOD(必要あれば更新かけるとかしてください)
じゃああとは code-server
とインスタンスを立てるだけなのだが、どうせならコマンド一発で全てが終わってほしい
例えば、start-vscode
って打ったら、インスタンス作成& code-server
のインストール及び起動までやってくれて、アクセスすべきURLが表示される……とか!(いちいちcloud console まで見に行きたくないので)
これは多分、cloud-init
ってやつを使えば解決できそう
インスタンス作成時に実行するコマンドやら何やらをYAMLに固めておくやつらしい
こちらは start-up script とは異なり、作成時に一度だけ実行される模様
(まぁ想定されるのは preemptive 利用だから、どちらでも実際変わりはないといえばそう)
明日以降にやるべきことは、以下の通り:
- cloud-init のための config ファイルを書く
- 起動スクリプトを書く(code-server を起動してポートを開ける)
- これらの設定ファイルをGit管理できるようにする(リポジトリを作るか?あるいは単にGistで済ませるか)
- アクセスできたことを確認して、vscode での開発を開始する
結論(というかことの顛末)
beta 版を申請してから3ヶ月ほどして、なんとか codespace 環境を手に入れることができた
さらに、友人やバイト先のツテをたどりPCを貸与してもらうこともできた
これで当面問題はなくなったのだが、一応 iPad でも頑張ってみた結果だけお伝えする
良かった点
当初の予想通り、iPad x CodeSpaces は通常の VSCode とほとんど変わりなく機能した
拡張機能は問題なく使えるし、ターミナルだって完備され、SSHでリモートサーバ上に接続することも出来る
なにより、コミットしていない作業中データの状態が残るのがとても嬉しい
間違ってWindowを閉じてしまったときの絶望から開放されたし、Codespaces のサーバ上に認証情報を置く(.env ファイルとか)こともできるし快適だ
課題
もちろん問題がまったくないのかというとそうではない
これは私の通信環境やマシンスペックに依存する部分も大きいと思われるが、
1.回線が細いと頻繁に強制リロードがかかり、作業に支障をきたす
2.あくまでブラウザアプリ上の1ページで動作するため、他のアプリと併用しすぎると端末の消耗が激しい
サーバ側との整合性を保つために定期的に通信が走っているっぽいのだが、何回か連続でそれがコケてしまうと強制リロードになってしまう
Codespaces は起動するごとに毎回読み込みが走るのだが、現状だと何十秒かかかるのでそれをただ待つのはだいぶ辛い
一つの端末上で複数のアプリを動かすと、スペックにもよるだろうが、時折意図せずアプリの再起動がかかってしまう場合がある
こうなると読み込み待ちが発生するし、ググりながらコーディングするという行為に忌避感情が生まれてしまいだいぶ辛い
複数ウィンドウを開けばいいのだが、そうするとただでさえ小さいスペースがさらに圧迫されてしまう…
まとめ
iPad だけでどうにか環境を作ろうとするとだいぶ辛い
フルスペックの iPad を揃えるくらいなら中古でそれなりの Win 機が買えてしまう
あくまで iPad は「消費者」として使うものであり、クリエイターになりたいならどうにかして PC 環境を用意せねばならなそうだ……