📱

山本悠滋の「1人以上で勉強会」 第2回 お出かけ時の開発環境個人史とiPadとRasPiで開発する話を語らせてください

2023/06/03に公開

山本悠滋の「1人以上で勉強会」

この記事について

山本悠滋の「1人以上で勉強会」という私が運営しているオンライン勉強会みたいなもので、当日喋りながら書いたメモです。勉強会の宣伝のためにZennで公開することにしました。

配信で使われたメモ

  • 第2回:

    • お出かけ時の開発環境個人史と
      iPadとRasPiで開発する話を
      語らせてください
  • この勉強会について

    • オンライン勉強会の気楽さ
      • 簡単に始められる
        • 場所も要らない!
        • 全部自分で決められる!
        • 視聴者0でもやるので「1人以上」
      • 聞きたくなければさっさと閉じる!
        • 内職も気兼ねなくできる!
    • ネタがあったら不定期でやる
    • 慣れてきたら関連するテーマで、
      発表したい人を募集する
      • ゲストとして呼ぶのでもOK!

質問があれば随時コメントください!

お出かけ時の個人開発史

自宅や職場以外の場所で、
どうやってコードを書いてますか?

  • アンケート
    • ノートPCで!
      • 3
    • タブレットで!
      • 1
    • スマホで!
      • 0
    • そもそも出かける時は書かないなぁ
      • 1

※アンケート結果は記憶頼りです。なぜかチャット欄を残せなかったので...

大学入学~ お出かけ時開発以前

  • キャンパスまで電車で片道1時間半超
    • 車内では主に読書
  • ノートPCはボロく、電池はあまり保たず
  • 何より立っているときは使えないのが嫌だった

大学2年生~ Windows Mobileとの出会い

  • 正確な時期は思い出せないが、
    X01TというWindows Mobile端末に乗り換える
    • それ以前からW-ZERO3の存在を
      知っていたため、憧れていた模様
      • ネットランナー懐かしい

画像はASCII.jpから:

大学4年生9月~ Androidでもフルキーボード!

iPhone・Androidが日本でも普及し始めた頃...

画像はImpressの広告ページから:

大学4年終盤~ ソフトウェアでもフルキーボード!

卒論が終わり、レポートなどを電車で書く習慣自体が下火に

  • 2011年12月 Sony Tablet S購入
    • 当時からコードを書く以外に使ってた?
  • 2012年4月 就職
  • 2012年6月 日本語フルキーボード for Tablet 有償版購入

画像は価格.comから:

Sansan入社後~ 黄金期: タブレットでも実行

  • 2013年2月 Sansanに転職

  • めっちゃ忙しい

    • 自宅でコードを書く時間が取れず、
      土日はほとんど寝てた
  • 朝早い東急田園都市線

    • よほど運がよくなければ座れない
  • => 通勤電車で立ってコードを書きたくなる

    • お出かけ時趣味プログラミングの
      ある意味黄金期
  • 2014年2月 ASUS Transbook T100TA 購入

    • キーボードを取り外せる
      • 軽く、立ってコードを書くのも意外と
    • WindowsだしVimも使える!
      • 当時はソフトウェアフルキーボードが使えた
      • Pure Rubyなら実行もできる!

画像はImpressから:

それ以降

  • あまり残業も推奨されなくなり、
    家でコードを書く時間を確保しやすくなった
  • 外出先では普通のノートPCを使うように
    • 電車の中ではスマホで記事を書くことはあるけど
  • しかし、今でも小さい開発環境にはときめく

現在のお出かけ時開発

  • 新しい趣味: 音ゲー
    • 「スマホ音ゲー」はタブレットの方がプレイしやすい
  • => 2022年9月iPad購入
    • ホントはPixel Tabletにしたかったけど待ちきれず
      • だってダンマクカグラがサ終しちゃうし...
  • お出かけ時に開発する機会はどうせ少ないし、
    荷物を少なくするためにiPad上で音ゲーも開発もしたい!
    • 多少不便でもよし!

各ソリューションの比較検討

  • CodeSandbox, StackBlitz, GitHub Codespaces
    など各種クラウドIDE

    • GitHubにpushしてあるコードでなければ読みに行けない
      • コミット単位を整えるためにコミットしない期間が長い
      • Dropboxならリアルタイムにバックアップしてる
    • Safariでの挙動がちょっと怪しい
      • CodeSandboxはアプリもあるけど...
      • ここに列挙していないクラウドIDEについては存じません
    • オフラインでの使用は限定的
      • 災害時でもコードを書きたくなるのでは?
    • 今でも補助的に使ってはいる
  • VS Code Server

    • メインPCのVS Codeを
      code tunnelというコマンドで立ち上げておく
    • GitHubアカウントで認証すると
      クライアント(ブラウザーやVS Code)から
      サーバーのコードを編集できる!
    • クラウドIDEと同様でオンライン前提
    • メインPCで編集中、長めにトイレに籠もりたくなったとき
      iPadを持っていってコードが書ける!
  • UTM

    • 脱獄すればiOS上でVMが動くらしい!
    • ちょっとハードルが高いので試せてもいない
  • iSH

  • UserLAnd

    • こちらはAndroid向け
      • PRootというアプリを使用して環境分離
        • https://proot-me.github.io/
        • chrootみたいなことをユーザーランドで実現したもの
        • rootをとらずに使える
        • Alpine Linuxだけでなく、Ubuntuなども!
    • USBテザリングでiPadと繋いでsshすることで、どこでも開発!
      • 常用しているスマホの中に入るので、荷物も増えない!
      • いざとなればスマホだけで開発できるのもポイント
    • が、速度はあまり速くない
      • PRootのオーバーヘッドがかなり大きい
      • ファイルシステムが特に遅い
        • fern.vimというプラグインでファイル数が
          十数件ほどのディレクトリーを開いてちょっと待つ
    • => 致命的ではないので採用を検討していたが...
      • npmを使ったときにPRootのバグと思しき挙動にハマり、断念

ベンダーが不安定問題

  • UserLAndもiSHも、リポジトリーを見た感じアクティブではない
    • OSSなので自分でバグをとるのも面白そうではあるけど...
    • サポートが個人依存で不安定になりがち

最終案: RasPi

バックアップやメインPCとの同期

  • Gitリポジトリーを経由した方法は、あまり採用したくない
    • 再掲: コミット単位を整えるためにコミットしない期間が長い
    • リポジトリーに入れていないけど同期したい設定ファイルもある
      • 主にプロジェクトローカルなNeovimの設定
    • そもそもコミット・プッシュを忘れてしまったら?
    • => 従来通りDropboxを介するか、直接メインPCと同期しよう
  • Dropboxが使えれば一番楽だけど...
    • 本家のクライアントがRasPiでは使えない模様
      • AArch64のLinux版がない!
    • 代わりにUnisonとRcloneを併用
  • Unison
    • 乱暴に要約すると自家版Dropboxを実現するもの
      • sshできるマシンとファイルをリアルタイムに同期できる
    • 在宅時のメインPCとのリアルタイム同期に使用
      • これで避難するときは
        iPadとRasPiとケーブルを持っていけば安心!
    • 本件以外でも毎日のようにお世話になっている神アプリ
      • 他の個人OSSは支援できなくてもこれは支援したい
  • Rclone
    • いろんなストレージサービスのファイルを操作するCLIツール
    • お出かけ先でのバックアップに使用
    • 現状、衝突などを考慮したDropboxとの双方向同期は
      サポートしていないようなので悩ましい
      • それができればバックグランドでN分おきに実行して安心なのに

その他補足

  • iPadのSSHクライアントはTermiusを使用
    • ソフトウェアキーボードが充実しているので
      Escなどが使えないiPadの純正キーボードでも助かる
  • とは言えRasPi、CPUはあまり速くないしメモリーも小さいので
    開発対象によっては難しい
    • 現状の私はNode.jsでCLIアプリを作る程度なので、
      今のところ大丈夫
  • 電源はiPadからとるので結構電池を食う
    • あと、iPadがスリープするとRasPiが落ちる
    • RasPi用の電源を別途とれれば大丈夫?(試していない)
  • WindowsからRasPiのOSインストール時は管理者権限で!

さらなる新星: Pixel Tablet + Nestbox

次回

  • 多分需要があると思うのでUnisonの話をします
    • WindowsやMac + VMのLinuxで開発する人
      • WSL2も!
      • Docker for Desktopで使えるかは不明
      • 同期するファイルを絞ったりして高速に同期
      • 肝心のリアルタイム同期機能のハードルがちょっと高い
GitHubで編集を提案

Discussion