• 人間のやることを減らすために必要
    • というか、アプローチの一つ
  • Dockerなどを用いた開発「環境」も、まあ広い意味では含まれると思う
  • 環境の可搬性が高いと何がうれしい?
    • 通学中でも入浴中でも、いつでも即座に情報にアクセスすることができる
      • やるべきことを思い出して、わざわざスマホを取り出してToDoアプリを開きに行く?忘れたらどうするんですか
      • 座席が空いていない電車で作業ができて、うれしい
        • 実は立ってるとノートパソコンを快適に触れなくて……
    • 複数の端末で同等の環境を構築する必要がない
      • デスクトップのWindowsにも、ノートPCのLinuxにもVSCodeを入れて、それぞれGitHubアカウントでログインして同期をONにして〜 ←ダルい
        • VSCodeは同期機能があるからまだいいけどね
    • 日常的コンテキストスイッチのコストを削減できる!
  • たとえばデスクトップPCによるマルチモニター環境は明らかに可搬性が低いが、空間を持ち運ぶことが出来るようになれば、その持ち運び可能な空間にウィンドウを配置しておけば、どこでも同じ環境で作業ができる
  • 他にも、そもそもマルチモニター環境を構築しないことで、必然的に可搬性を高くすることができる
    • すべての作業をノートパソコン単体で完結させるようにする
      • ただ、個人的には、せっかくデスクトップ&複数モニタを持っているんだから基本これで作業をしたいなあという気持ちがある
        • ゲームをすることがあるので、(Windows入りの)デスクトップがあるとうれしい
        • 必然的にデスクトップPCのスペック自体が高めになる
    • モニターを撤廃する(!)
      • ぜんぶ音声で制御する(??)
      • LLMの発展により、テキストを入力するだけでプログラミングをしたりイラスト・動画を生成したりできる世界になったので、SSHでシェルにアクセスさえできればどこでも作業できると言って差し支えない?

開発環境の可搬性を担保するために、いろいろな取り組みをしてきた

  • 小学生のころは学校で自由帳にプログラムのメモを書き、帰宅後に書き写して実行するということをやっていた
    • もはや可搬性はゼロに等しい
    • それはそれとして、自由帳に何かを書き殴るのはたのしい
      • 中学生のころもやっていた
  • 中学生時代は、電子辞書にCeOpenerを入れて、その中でメモ帳を起動してプログラムを書いたり
  • 中学校ではパソコン部に所属していて、当然パソコンにソフトを自由にインストールできなかったため、PortableApps.com で配布されているようなポータブルソフトをかき集めてUSBにインストールしていた
  • Flutterを使っていたときは、VPSで動いている開発サーバーにngrokでアクセスできるようにする試みを行っていた
    • 作っていたのはモバイルアプリだったが、VPSにおいてはWebプラットフォームで開発するようにしていた
  • QtでGUIツールを作っていた時は、VNCを用いてGUI開発を可能にする試みを行った
    • 最近はSSH経由でX Forwardingを行うことで解決している
      • そもそもGUI開発をしない(Webがメインだし、自作OSもGUIのないシリアル通信で操作するものを作っていたりする)
  • VPSを契約し、開発を全てそこで行う試み
    • VPSの性能が低くて駄目だった
  • VPNの構築
    • 遅いとはいえ出先でもメインで使っている開発鯖にアクセスできるようになり、とりあえず落ち着いている
    • GUI関連の開発を行うと主に速度の問題で快適に開発できなかったり、ファイルシステムまわりも不便だったりと色々な不満があり、どうにかしたいと思っている