📱
山本悠滋の「1人以上で勉強会」 第2回 お出かけ時の開発環境個人史とiPadとRasPiで開発する話を語らせてください
山本悠滋の「1人以上で勉強会」
この記事について
山本悠滋の「1人以上で勉強会」という私が運営しているオンライン勉強会みたいなもので、当日喋りながら書いたメモです。勉強会の宣伝のためにZennで公開することにしました。
- 配信本編はこちら:
- 当シリーズのその他の動画はこちら:
配信で使われたメモ
-
第2回:
- お出かけ時の開発環境個人史と
iPadとRasPiで開発する話を
語らせてください
- お出かけ時の開発環境個人史と
-
この勉強会について
- オンライン勉強会の気楽さ
- 簡単に始められる
- 場所も要らない!
- 全部自分で決められる!
- 視聴者0でもやるので「1人以上」
- 聞きたくなければさっさと閉じる!
- 内職も気兼ねなくできる!
- 簡単に始められる
- ネタがあったら不定期でやる
- 慣れてきたら関連するテーマで、
発表したい人を募集する- ゲストとして呼ぶのでもOK!
- オンライン勉強会の気楽さ
質問があれば随時コメントください!
お出かけ時の個人開発史
自宅や職場以外の場所で、
どうやってコードを書いてますか?
- アンケート
- ノートPCで!
- 3
- タブレットで!
- 1
- スマホで!
- 0
- そもそも出かける時は書かないなぁ
- 1
- ノートPCで!
※アンケート結果は記憶頼りです。なぜかチャット欄を残せなかったので...
大学入学~ お出かけ時開発以前
- キャンパスまで電車で片道1時間半超
- 車内では主に読書
- ノートPCはボロく、電池はあまり保たず
- 何より立っているときは使えないのが嫌だった
大学2年生~ Windows Mobileとの出会い
- 正確な時期は思い出せないが、
X01TというWindows Mobile端末に乗り換える- それ以前からW-ZERO3の存在を
知っていたため、憧れていた模様- ネットランナー懐かしい
- それ以前からW-ZERO3の存在を
画像はASCII.jpから:
-
QWERTYなキーボードが使える!
- 親指ポチポチすれば立っててもコードが書けた!
- もちろん実行は無理!
- 当時はそもそもGitを知らない!
- キーボードにない記号が多く、独自記法を編み出して
後処理するといった工夫をしていた
- 親指ポチポチすれば立っててもコードが書けた!
-
「ちーたん」というTwitterクライアントもあった
-
就活で「スマホ向けのアプリを開発してる」という会社に
「これはサポートしてる?」と見せて驚かれたことが- 当時は過渡期でした...
大学4年生9月~ Androidでもフルキーボード!
iPhone・Androidが日本でも普及し始めた頃...
- GALAPAGOS 005SH購入
- https://twitter.com/igrep/status/111785650012962816
- 世の中の流れに逆らってでもフルキーボードが欲しかった
- 当時はこれとSL4Aを使って、
Pythonで自分用のスクリプトを書いていたはず- Python, JRuby, Bash, Groovyなど
いろいろな言語で書いたコードを実行 - https://github.com/igrep/igrep-cashbook/blob/master/py-sl4a/sum-money2.py
- 時々卒論もこれで書いていたはず
- Python, JRuby, Bash, Groovyなど
画像はImpressの広告ページから:
大学4年終盤~ ソフトウェアでもフルキーボード!
卒論が終わり、レポートなどを電車で書く習慣自体が下火に
- 2011年12月 Sony Tablet S購入
- 当時からコードを書く以外に使ってた?
- 2012年4月 就職
- 2012年6月 日本語フルキーボード for Tablet 有償版購入
- https://www.repy.info/fullkeyboard
- 概ねこの頃からタブレットで時々何か書いていた模様
- Terminal IDEというアプリのお陰でVimやGitも使えたし!
画像は価格.comから:
Sansan入社後~ 黄金期: タブレットでも実行
-
2013年2月 Sansanに転職
-
めっちゃ忙しい
- 自宅でコードを書く時間が取れず、
土日はほとんど寝てた
- 自宅でコードを書く時間が取れず、
-
朝早い東急田園都市線
- よほど運がよくなければ座れない
-
=> 通勤電車で立ってコードを書きたくなる
- お出かけ時趣味プログラミングの
ある意味黄金期
- お出かけ時趣味プログラミングの
-
2014年2月 ASUS Transbook T100TA 購入
- キーボードを取り外せる
- 軽く、立ってコードを書くのも意外と
- WindowsだしVimも使える!
- 当時はソフトウェアフルキーボードが使えた
- Pure Rubyなら実行もできる!
- キーボードを取り外せる
画像はImpressから:
-
https://pc.watch.impress.co.jp/docs/column/nishikawa/622632.html
-
発表もした
- https://the.igreque.info/posts/2014-11-16-yokohama.rb-50.html
- 「電車の中で立って書く」という前提を
言わなかったので意味不明だった模様
-
主に電車の中で開発したライブラリーもある
それ以降
- あまり残業も推奨されなくなり、
家でコードを書く時間を確保しやすくなった - 外出先では普通のノートPCを使うように
- 電車の中ではスマホで記事を書くことはあるけど
- しかし、今でも小さい開発環境にはときめく
現在のお出かけ時開発
- 新しい趣味: 音ゲー
- 「スマホ音ゲー」はタブレットの方がプレイしやすい
- => 2022年9月iPad購入
- ホントはPixel Tabletにしたかったけど待ちきれず
- だってダンマクカグラがサ終しちゃうし...
- ホントはPixel Tabletにしたかったけど待ちきれず
- お出かけ時に開発する機会はどうせ少ないし、
荷物を少なくするためにiPad上で音ゲーも開発もしたい!- 多少不便でもよし!
各ソリューションの比較検討
-
CodeSandbox, StackBlitz, GitHub Codespaces
など各種クラウドIDE- GitHubにpushしてあるコードでなければ読みに行けない
- コミット単位を整えるためにコミットしない期間が長い
- Dropboxならリアルタイムにバックアップしてる
- Safariでの挙動がちょっと怪しい
- CodeSandboxはアプリもあるけど...
- ここに列挙していないクラウドIDEについては存じません
- オフラインでの使用は限定的
- 災害時でもコードを書きたくなるのでは?
- 今でも補助的に使ってはいる
- GitHubにpushしてあるコードでなければ読みに行けない
-
VS Code Server
- メインPCのVS Codeを
code tunnel
というコマンドで立ち上げておく - GitHubアカウントで認証すると
クライアント(ブラウザーやVS Code)から
サーバーのコードを編集できる! - クラウドIDEと同様でオンライン前提
- メインPCで編集中、長めにトイレに籠もりたくなったとき
iPadを持っていってコードが書ける!
- メインPCのVS Codeを
-
- 脱獄すればiOS上でVMが動くらしい!
- ちょっとハードルが高いので試せてもいない
-
- OSの仮想化支援機構は使わず、
アプリができる範囲(ユーザーランド)で
x86のエミュレーターを提供 - その上でAlpine Linuxを動かす
- 普通にサクサク動く
- => が、Neovimが起動しない!ビルドできない!
- => 故に断念
- OSの仮想化支援機構は使わず、
-
- こちらはAndroid向け
- PRootというアプリを使用して環境分離
- https://proot-me.github.io/
- chrootみたいなことをユーザーランドで実現したもの
- rootをとらずに使える
- Alpine Linuxだけでなく、Ubuntuなども!
- PRootというアプリを使用して環境分離
- USBテザリングでiPadと繋いでsshすることで、どこでも開発!
- 常用しているスマホの中に入るので、荷物も増えない!
- いざとなればスマホだけで開発できるのもポイント
- が、速度はあまり速くない
- PRootのオーバーヘッドがかなり大きい
- ファイルシステムが特に遅い
- fern.vimというプラグインでファイル数が
十数件ほどのディレクトリーを開いてちょっと待つ
- fern.vimというプラグインでファイル数が
- => 致命的ではないので採用を検討していたが...
- npmを使ったときにPRootのバグと思しき挙動にハマり、断念
- こちらはAndroid向け
ベンダーが不安定問題
- UserLAndもiSHも、リポジトリーを見た感じアクティブではない
- OSSなので自分でバグをとるのも面白そうではあるけど...
- サポートが個人依存で不安定になりがち
最終案: RasPi
- ベアメタルでLinuxが動く!
- みんな使ってるから大手を振って使える!
- 仮想化によるオーバーヘッドもゼロ!
- NeovimもGitもNode.jsも!
- AndroidのUSBテザリングと同じような要領で、
USBで繋ぐと共にRasPi起動 + sshできるようにすることが!- ラズパイ4をUSBケーブルのみでiPadから操作できるようにしてみた | ラズパイラボラトリー
- Windowsでもアクセスできる
- Windowsの場合要ドライバー
バックアップやメインPCとの同期
- Gitリポジトリーを経由した方法は、あまり採用したくない
- 再掲: コミット単位を整えるためにコミットしない期間が長い
- リポジトリーに入れていないけど同期したい設定ファイルもある
- 主にプロジェクトローカルなNeovimの設定
- そもそもコミット・プッシュを忘れてしまったら?
- => 従来通りDropboxを介するか、直接メインPCと同期しよう
- Dropboxが使えれば一番楽だけど...
- 本家のクライアントがRasPiでは使えない模様
- AArch64のLinux版がない!
- 代わりにUnisonとRcloneを併用
- 本家のクライアントがRasPiでは使えない模様
-
Unison
- 乱暴に要約すると自家版Dropboxを実現するもの
- sshできるマシンとファイルをリアルタイムに同期できる
- 在宅時のメインPCとのリアルタイム同期に使用
- これで避難するときは
iPadとRasPiとケーブルを持っていけば安心!
- これで避難するときは
- 本件以外でも毎日のようにお世話になっている神アプリ
- 他の個人OSSは支援できなくてもこれは支援したい
- 乱暴に要約すると自家版Dropboxを実現するもの
-
Rclone
- いろんなストレージサービスのファイルを操作するCLIツール
- お出かけ先でのバックアップに使用
- 現状、衝突などを考慮したDropboxとの双方向同期は
サポートしていないようなので悩ましい- それができればバックグランドでN分おきに実行して安心なのに
その他補足
- iPadのSSHクライアントはTermiusを使用
- ソフトウェアキーボードが充実しているので
Escなどが使えないiPadの純正キーボードでも助かる
- ソフトウェアキーボードが充実しているので
- とは言えRasPi、CPUはあまり速くないしメモリーも小さいので
開発対象によっては難しい- 現状の私はNode.jsでCLIアプリを作る程度なので、
今のところ大丈夫
- 現状の私はNode.jsでCLIアプリを作る程度なので、
- 電源はiPadからとるので結構電池を食う
- あと、iPadがスリープするとRasPiが落ちる
- RasPi用の電源を別途とれれば大丈夫?(試していない)
- WindowsからRasPiのOSインストール時は管理者権限で!
- https://twitter.com/igrep/status/1652240710131924999
- 管理者権限がないままRasPi ImagerでSDカードを初期化すると
「コンピューターの管理」でボリュームを作り直す羽目に- Linuxの場合GPartedなど
さらなる新星: Pixel Tablet + Nestbox
-
Pixel 7シリーズ、非rootでLinux VM起動可能に!NestboxアプリでpKVMを利用 - AndroPlus
- rootなしで!
- pKVMというAndroid 13で導入された
仮想化支援機構を使うので、十分速いはず!
次回
- 多分需要があると思うのでUnisonの話をします
- WindowsやMac + VMのLinuxで開発する人
- WSL2も!
- Docker for Desktopで使えるかは不明
- 同期するファイルを絞ったりして高速に同期
- 肝心のリアルタイム同期機能のハードルがちょっと高い
- WindowsやMac + VMのLinuxで開発する人
Discussion