ハクソク

世界を動かす技術を、日本語で。

「ドゥームスクロール」をやめて「ドゥームコーディング」を始めよう:スマートフォンからターミナルを使って構築する

概要

  • Doom Codingとは、スマホからリモートで自宅PCにアクセスし、どこでもコーディングできる方法の紹介。
  • 必要なものは常時稼働PCスマートフォンClaude Proサブスクリプション
  • TailscaleTermiusを使い、安全に自宅PCへSSH接続。
  • Claude Codeを活用し、効率的に開発作業を継続可能。
  • トラブルシューティングやベストプラクティスも解説。

Doom Coding入門:どこでもDIYコーディング

  • Doom Codingは、Doom Scrollingの生産的バージョンとして、スマホでコーディングを実現する手法
  • TailscaleTermiusClaude Code、常時稼働PCがあれば、インターネット接続がある場所ならどこでも作業可能
  • 例えば台湾からPhiladelphiaの自宅PCにアクセスし、プロトタイプ開発を実施した実績
  • 最新のモバイルコーディングツール情報や比較も随時更新予定
  • 公式サイト: www.friendlyr.aiでプロジェクト参加も可能

必要なもの

  • 24時間稼働のインターネット接続済みPC
  • スマートフォン
  • Claude Proサブスクリプション

概要:仕組み

  • TailscaleでPCとスマホを同じ仮想ネットワークに接続
  • TermiusでスマホからPCへSSH接続
  • Claude CodeでAIサポート付きコーディング体験
  • どこでもリモートで開発作業継続可能

スタートガイド

  • PCセットアップ
    • TailscaleをPCにインストールし、アカウント作成・ログイン
  • スマホセットアップ
    • Tailscaleアプリをスマホにインストールし、同じアカウントでログイン
    • Termius(SSHクライアント)をスマホにインストール
    • MagicDNSアドレス(例: my-computer.tailnet-name.ts.net)を確認
    • Termiusで新規ホスト作成
      • ラベル: 任意
      • ホスト名: MagicDNSアドレス
      • ポート: 22
      • ユーザー名/パスワード: PCのログイン情報
  • 接続・コーディング開始
    • TermiusからPCにSSH接続し、コマンドラインで作業

トラブルシューティング

  • Termiusから接続できない場合
    • Tailscale VPNの再接続を実施
      • スマホのVPN接続状況を確認
      • TailscaleアプリでVPNが有効か確認
      • 両デバイスのラベル横にグリーンサークルが表示されていない場合はネットワーク問題
    • PCがONかつロック解除状態を確認
      • 電源再接続時は必ずPCをアンロック

ベストプラクティス

  • 進捗管理
    • セッション終了時にClaudeへ進捗を記録し、CLAUDE.mdにまとめる運用
  • Webサイトプレビュー
    • 任意ディレクトリで python -m http.server 3005 を実行し、スマホブラウザで http://your-machine.tailnet-name.ts.net:3005/your-html-file.html にアクセス
    • localhost:PORTの代わりにMagicDNSアドレスを利用
  • データベース閲覧
    • PostgreSQLアプリを利用し、プロジェクトDBをスマホから参照
    • PostgreSQL Clientの活用
  • ブックマーク管理
    • 開発時によく使うサイト(Google OAuth, GitHub等)をPCでブックマーク
    • Chromeアプリでスマホからもシームレスにアクセス

コミュニティへの呼びかけ

  • ベストプラクティスの共有を歓迎
  • どんな場所でDoom Codingしたかの報告も募集中

追記:実体験

  • Tailscale、古いノートPC、Claude CodeTermiusの組み合わせで、どこでもスマホからコーディング可能な環境を構築
  • パーティー会場など、自宅で作業したい気分の時にも最適

Hackerたちの意見

スマホでコーディングするのは、実は新しいことじゃないんだよね。tmuxを使って、たくさんの人がスマホでいろんな面白いことを作ってる。中には、ノートパソコンがないから、スマホだけでコーディングするしかない国もあるみたい。例の画像はめっちゃ面白いけどね! :-)
世界でノートパソコンを売ってない国ってどこ?
Androidを使っててQPythonをダウンロードできるなら、全然問題なく動くよ。何年も前からそうだし。これ、ちょっと複雑すぎる気がする。24時間稼働のリモートコンピュータに依存してるって?うーん。
残念ながら、俺はiPhoneっ子なんだよね。24時間稼働してるコンピュータは理想的じゃないし。アプリをホストするために使ってるサーバーで開発するのは楽しいけど、QPythonでDockerfileを実行して、gitでコードをプッシュするだけでもいいかも?
それと、もしあなたのAndroidがPixelなら、最近追加されたターミナルアプリを使えるよ。これがVM内でプレーンなDebianディストリビューションを動かすから、ポケットサイズのLinuxマシンでコードを開発できるんだ。Pythonも動くし、AnacondaのPythonスイート全体をインストールできるよ。
> 必要なもの > 24時間稼働のインターネット接続があるコンピュータ > スマートフォン > Claude Proのサブスクリプション それか… Termuxをインストールして、他の場所と同じようにやればいいんじゃない?
ベッドで10キーなしのBTキーボードを使ってTermuxを操作するのは、AOCの問題を解決するのに快適だったよ。私のタイムゾーンでは真夜中にリリースされたからね。
iOSのおすすめは何?というのも、App StoreのTermuxアプリはPlay Storeのやつとは違うみたいで、ただ名前が同じなだけなんだよね。
ちょっと待って、Claudeはあなたの電話やタブレットで動いてて、大きな開発依存関係をその場でインストールしてるの?それとも、このスタックのどの部分をTermuxで置き換えてるの?
家にSSHするのにConnectBotを使ってる。tmuxとvimも問題なく動くし、ポケットサイズの折りたたみBluetoothキーボードを使うとさらに便利だよ。
これで4つ目以上の記事だけど、スマホでコードを書くためにVPNを使うって話。メールインターフェースでClaudeにコードを書かせる方が良いんじゃない? - Claudeにメールしてコーディング開始 - Claudeが必要なことをメールしてくる - それに対して返信して指示を出す - もしかしたらClaudeがプログラムを実行してスクリーンショットを送ってくれるかも。VPNを使うより簡単そうだし。メールを使うことのデメリットって何?
デメリットは全く見当たらないね。実際に役立ちそうなアイデアだと思う。
ブラウザを使えばいいじゃん?OpenCodeにはWeb UIがあるから、自宅のマシンでホストしてVPNでアクセスすればOKだよ。https://opencode.ai/docs/server/ (残念ながらスクリーンショットはないけど、結構いいGUIだし、デスクトップアプリみたいな感じだよ)
Claudeを使ってリモートコーディングしてる人の話を聞いたことがあるけど、Claudeにプルリクエストを作成させる方法なんだって。ユーザーはリクエストを見て、承認するか、編集して戻すかするらしい。テストスイートを設定して、提案されたプルリクエストがリグレッションしないことが確認できれば、Claudeのコードとやり取りするのにいい方法だと思う。
前にSlackを試したことがあるけど、問題は結果がどれだけ見やすく返ってくるかだね。PRを戻してコメントをつけるのはいいけど、qcliがコメントと実際にコメントされたコードをマッチさせるのは中途半端な成功しか得られなかった。コメントがうまくインラインでトレーニングされてない感じがする。VPNじゃなくても、OAuthのウェブブラウザターミナルにいたし、coder[0]みたいなやつでブラウザ上でVSCodeを使えるし、スマホのブラウザでもできるよ。happy coder[1]を使って新しい組み込みのAndroid Linux VMと接続しようとしたけど、リモートの部分を完全にスキップするのは無理だった。電話がClaudeを動かしてるターミナルを必ず落としちゃって、全体がダメになっちゃう。今はその中で電話からClaudeを動かせるけど、VMがクラッシュするとパーティションを消すしかできないんだよね。[0] https://coder.com/ [1] https://happy.engineering/
俺はスマホのターミナルでこれをやってるけど、正直言ってクソだね。他のインターフェース(Telegram、Web UI、メール)はスマホでの体験がずっと良いと思う。
> Claude Codeのメールインターフェースはもっと良いのかな? いや、無理だよ。 > メールを使うデメリットは何? メールは使いにくいし、フィードバックがすぐには来ないからね。 > VPNを使うよりは簡単そうだね。Tailscaleは開発者がすぐに使えるし、信頼性も高いよ。著者はTermius SSHアプリをMoshと一緒に使ってるから、デバイスがスリープしたり切断されても同じSSHセッションを維持できるんだ。Tmuxも役立つよ。俺は著者と同じことをしてるけど、家ではMacの代わりに5ドルのLinode VPSを使ってる。ページにはクレジットされてないみたいだけど、Pieter Levels(@levelsio)がこの仕組みを広めたと思う。著者はほぼ同じ仕組みを文書化してるね。
iOSアプリのClaude Codeを使ってるんだけど(プロアカウントで)。GitHubのリポジトリを指定して、作った問題の一つに取り組むように指示するだけ。Claude Code CLIの設定以上のことはほとんど必要なかったよ。
メールも使えるかもしれないけど、Telegramユーザーなら、自宅のシステムでCLIコマンドを代わりに実行して、その出力を返信として送るボットを作ることができるよ。ルーターのポートを開ける必要もないし。
メールはセキュアじゃない(プレーンテキストで送信されるから)。
GitHubとClaude actionsプラグインを使って、スマホからコーディングしてるよ。
歴史的に見ると、ローカルのコンピューティングリソースを使うのと、ダムターミナルでリモートにアクセスするのの間で振り子のように揺れてたと思ってた。でも今はローカルリソースに戻るんじゃなくて、リモートアクセスの第二層(電話 -> コンピュータ -> Claudeサーバー)を追加することを提案してるみたい。
ちょっと待って、もっと良くなる可能性があるよ:何百人もの従業員が、Microsoftが保持するチャットログに直接内部の政治や計画、顧客獲得戦略、コード、統合の希望、エクセルシート、メール、プロジェクトをぶちまけることができるんだ。何も問題が起こるわけがない、あいつらは常に100%信頼できて、契約やNDAも鉄壁で簡単に執行できるから… … o_o
過去5年間で、ほぼ完全にノートパソコンを他のマシンのターミナルとして使うようになった。HPCのローカルマシンみたいに使ってる:ウェブブラウジング、ワードプロセッシング、スクリプティング。真面目なことはリモートでやるけど、実際ターミナルにいるから、現実的には何が違うの? 99%の時間、結果的には「大きな」コンピュータを持ち運ばずに使えるってことだ。ちなみに、AIコーディングにはあまり興味がない。AI(LLMも含めて)を使ってるし、AI研究者だけど、コーディングの雰囲気はずっとやってもピンと来ない。スマホからプログラミングするなら、やる意味があるかもしれないけど、普通はタイピングがボトルネックじゃないのに、スマホだと確実にそうなるからね(少なくともずっと快適じゃない)。
AndroidのターミナルとClaude Codeを使って、外出先でvibecodeしてるよ。というか、二人の子供を持つ平凡な父親として、家事に追われてる時にね - 料理や掃除をしながら。こんな複雑なことはしてないけど、ただClaude Codeと標準的なLinux開発ターミナルを使ってるだけで、すごいことだよ。最近の休暇中に、4、5回のセッションで、約500語のプロンプトを作った。結果として、Claudeがnmapを使ってネットワーク内のアクティブなポートをスキャンして、cURLでそのポートをファジングして、発見を文書化し、Hueブリッジや古いSamsung TVのAPI/SDKドキュメントのウェブ検索を自動で行い、照明システムを制御するスクリプトと、TV用の完全に機能するHTML+JSリモコンを作った。最も面白かったのは、Claudeが俺にリビングに行ってHueブリッジのボタンを押すように促して、APIキーを取得できるようにしたこと。最も価値のある部分? 生成的な行為の副産物として得た理解だ。Hueブリッジのボタンは、次のリクエストで新しいAPIキーを発行するようにデバイスに指示するだけだってことが分かった。エンターテインメントモードがどう機能するのか、その理由も理解できた。Samsung SmartThingsがウェブソケットを介してどのように仲介されているのか、そして10年前のSamsung TVがどれだけ不安定かも理解した。これだけのことを得るのに約500語? ちょっと流行に乗るのは嫌だけど、これは確かに変化を感じる。
https://happy.engineering/ をおすすめするよ。設定がめっちゃ簡単なんだ。リポジトリや作業に必要なパッケージやバイナリが入ったコンテナのインスタンスを作れるから、いろんなバイナリを使ってコンテナ内でコマンドを実行できるんだ。コンテナ内で `ls -la` を簡単に実行して、それを自分にメールで送ることもできたし、全部スマホからできたよ。AppleScriptとかに接続してSMSを送ったり、WhatsAppに接続することもできる。ハッカーニュースのトップ5のヘッドラインを抽出して、各投稿のコメントで話題になっているアイデアを取得して、それをAppleのリマインダーに送って、スマホで読むことができた。VPNはいらないよ。
Opencodeを見てるんだけど、タスクを中止できるからこっちの方がいいかも。VPNが必要だね。
自分のフローは、GitHubのイシュー + GitHub Copilot + GitHub ActionsからのWebデプロイメントだよ。モバイルアプリからGitHubに何かを直してもらうように頼んで、PRマージ時にビルドするように設定できる。大体はうまくいくけど、実際に気に入っているコードや本番環境でやるのはちょっとおかしいと思う。
自分も似たようなことに取り組んでるよ: https://github.com/shepherdjerred/monorepo/tree/main/package... 要するに、どこかのマシンでサーバーを立てて、セッションをDockerコンテナやK8sポッド、Zellij(tmuxに似たアプリ)で作成するんだ。できることは:- Docker attachでセッションに直接接続(TUI経由で内蔵されてる)。普通のClaude Codeの体験ができるけど、マルチプレックスされてる。スイッチャー/UIではClaudeの状態やPR(プッシュされたか、マージコンフリクト、CIの状態、レビューの状態など)が表示される。- ウェブUIでセッションを管理。ブラウザから直接Claude Codeに接続できる。通常のClaude Codeターミナルやネイティブチャットビューにアクセスできる。- アプリでセッションを管理。ネイティブチャットビューにアクセスできる。Gitワークツリーとプロキシを使って、コンテナがゼロの資格情報にアクセスできるようにして、すべての権限モードをバイパスできるから、より安全に使える。これがClaude Code on Webよりも自分には合ってる。Claudeが動いている環境をコントロールできるから、好きなDockerイメージを与えたり、ローカルネットワークに接続させたりできる。まだ進行中だけど(コアの部分はできてるけど、まだ洗練されてない)、OPが考えていることに似た目標で、もっとフレンドリーなUXを提供できることを期待してる。
スマホから「コーディング」できるって、すごい変化だよね。以前はスマホでコーディングするのがひどかったから、そんなことはなかったけど、会話しながらコーディングするなら、スマホでやる方がいいかもしれない。これが何につながるのかはわからないけど、ベッドからバグを直したり、移動中にMVPを作ったりできたから、文句は言えないよ。もっと統合された小さなアプローチを探している人には、オープンソースのアプリビルダー + ランタイムを作ったよ: https://github.com/tinykit-studio/tinykit 基本的に、Lovableのようなアプリビルダーを提供していて、内蔵サービス(データベース/ファイル/認証/メール/支払いなど)、コンテンツやデザインフィールド、コードエディタがある。コードは1つのSvelte 5ファイルで、1つのサーバーで無制限のアプリをビルド/ホストできる。サーバーはただのノード + PocketBaseだから、$2のVPSで簡単に動くし、LLMはBYOKeyだよ。