エラーが出ると混乱する人へ

Share

エラーが出ると混乱する人へ

プログラミングやってて必ずと言っていいほど出くわすのがエラー。しかも、プログラミングの約半分がそのエラーと戦う作業と言っても過言ではない。これはスキルがいくら上がっても同じ。ずっとトラブルシューティングしてるようなもん。あーだるい。いうこと聞けよな。自分の書いたプログラムが一発で動いたら未だに感動する。俺は運がいい、と。

初心者が挫折するほとんどの理由は、このエラーに対処できないことだと思う。しかも残念なことに入門書の類いはうまくいくやり方しか書いてない。なぜなら書いてる本人にすら、何が起こるかすべて把握しきれないから。だから本に書いてないエラーは起こるべくして起こる。それを初心者はどうやって乗り越えれば良いのか分からなくて、ついには諦めてしまう。もったいないぞ。

エラーが起こる条件は無数にあって、全部書きだすのは無理。だから前もって「こんなエラーが起こるかも」と覚えるのは無駄な努力だからしない方がいい。そんな受験勉強みたいなやり方は間違い。絶対やらないで。

エラーは起こった時に都度調べればいい。覚えなくていいから。全然恥ずかしくないから。本に書いてねぇじゃん!とゴミ箱に投げつけるのはもうちょっと我慢して。そういうもんやねん。

初心者を教えてると、目の前でやって見せたのにも関わらずエラーで躓くことがある。例えば、CLIで選択肢の入力を求められているのに、何も選択せずにReturnキーを押してた、とか。そんなん絶対予想出来ない。

だから、なんか上手く行かない!ってなったら、まず自分を疑って欲しい。ちゃんと指示通りにやってる?ほんまに?うそやろ?それ思い込みやで。その自信をまずは捨てて。「なんも(悪いこと)してないのに動かなくなった」って言う人ほど灯台下暗しだ。

なんか意味わからん英語が出る。何言ってるかわからん。まるで死の宣告みたいだ。エラーメッセージってほんまそれ。コンピューターは冷徹に主人にそれを突きつけてくる。ERROR!の文字を見ただけで蕁麻疹が出そうになる。コーヒーを何杯飲んでも音楽をどれだけ聴いてもエラーへの嫌悪感は拭えない。

しかし諦めないで読んでみて欲しい。何かを訴えかけているはず。どのコードが悪いのか言ってくれてるかもしれない。わけワカメ?じゃあとりあえずググってみよう。同じボートに乗り合わせた人はほぼ間違いなくいて、先に解決して待ってくれてるから。

もし動いてたものが動かなくなったら、その大半は直前の変更点が原因だ。だから初心者は尚一層、石橋を叩いて渡ってほしい。コードを一行変更するごとにプログラムを走らせて欲しい。30行ぐらい変更した後に動かしてみてエラーが起こると、何が悪いのか検討もつかなくなるから。

どこが悪いか分からないなら、ちょっとずつ変更点をもとに戻しながら何度も実行してみる。これは自分もよくやる手法。すると、どっかの時点でエラーが消える。お前か!となる。

変更点を全部もとに戻してもまだエラーが起こるなら、コードとは別の変更点が原因の可能性が高い。例えば、PCを再起動させたせいでサーバが起動してなかったとか。ツールのバージョンを上げたとか。なんか全然別のファイルをいじってたとか。あるある。よくあるよ。

「俺は一体なにをしているんだ」と自問する。これはまじで有効。一旦落ち着いて考えるということ。

例えば、打っていたコマンドを実行する「場所」が間違っていたなんて事はよくある。場所とは、パスだったりサーバだったり。そのコマンドが参照している設定ファイルと、自分の編集している設定ファイルが違うなんてこともよくある。だから、「自分のやっている事は正しい」という思い込みを常に捨てる必要がある。

なんか仕事が遅い人って、ずっと同じエラーと戦ってるイメージがある。そういう人って、おかしいところが直せないのではなくて、そもそもおかしいところをおかしいと思っていない。そういうハマり体質の人はこの記事で書いたことを参考にしてみて欲しい。

みんなエラーが苦手だ。だからpower-assertが流行ったりするんだね。

Read more

個人開発と生活

個人開発と生活

朝、娘をバス停まで送り出す。前にちらっとみかけた田村淳の相槌術が面白そうだったので、ママ友との雑談で早速実践してみたら効果てきめんだった。その方法は単純に、職業病で癖になっている批判的思考を完全オフにし、相槌に全神経を注ぐ、というものだ。「へぇ」「うん」「うーん」「なるほど〜」と、相手の話にどんなバリエーションで返そうかという所に集中する。騙されたと思って試してみて欲しいんだが、このお陰で相手の話がよく理解できて、自然なフォローアップの質問やリアクションが浮かぶようになる。こちらから頑張って面白い話をひねり出す必要が無いので、気が楽になった。話の結論も何もいらなくて、「そうなんですね」「いいですね」「ほんじゃお疲れ様です〜」みたいな感じで締めくくる。反応に困ったらとりあえず「いいですね」まじで便利!男相手の会話でも有効。インタビューにも応用が利きそうだ。 天気が悪くてだるいので、やる気が出るまで部屋でレシートの撮影などの単純作業をして過ごした。レシートを撮ったら事務代行さんに投げる。そのうちAIに代替させたい。レシートは基本カフェばっかりである。 ユーザフォーラムをチェックしたら、

By Takuya Matsuyama
個人開発で日本から海外へ、10年間の歴史 — ひろしさんとの対談(前編)

個人開発で日本から海外へ、10年間の歴史 — ひろしさんとの対談(前編)

数週間前、ひろしさんのポッドキャストにゲストで出演しました。お互いの長い個人開発の経験について語り合いました。英語版を作成する過程で、日本語でも綺麗に整形した書き起こしが出来たので、こちらに掲載します。お楽しみください。 ※ギアアイコンをクリックして、音声と字幕を日本語に変更できます。 00:00 イントロ:TAKUYAさんようこそ 01:32 TAKUYAさんの自己紹介:WalknoteからInkdropまで 04:54 独立への踏み切り方:慎重派と勢い派 06:51 個人開発がフリーランス案件につながった 09:17 Inkdropで食えるようになるまで 12:15 なぜ最初から海外市場を狙ったのか 14:54 AI登場前、英語コピーに苦戦した話 16:18 AIバイブコーディング時代をどう見ているか 17:24 全てのコードを一行ずつレビューする使い方 21:06 AIは新幹線:速さの先にあるもの 25:53 AI時代に「感性」が大事になる 27:

By Takuya Matsuyama
「一汁一菜」にAI時代の生き方が詰まっている

「一汁一菜」にAI時代の生き方が詰まっている

どうも個人アプリ作家のTAKUYAです。 今回は、AI時代を開発者・クリエイター・表現者としてどう健やかに生きるか、について考えていることをシェアしたいと思います。ここでの「健やかに生きる」とは、心身の健康を保ちながら、ものづくりを楽しみ続けるという意味です。 読者の中にも、最近のAIの急速な進化の中でどう生き残り、さらに活躍していくかを悩んでいる方は多いのではないでしょうか。正直、すべてに対する正解はわかりません。未来を正確に予測できる人はいないからです。 でも自分は、ソフトウェア寄りのアーティストとして生きる上で大事なのは、「戦略」や「堀(moat)」を築くことよりも、「生きる方向性」 だと思っています。 人生とは速度ではなく方向である – ゲーテ 自分はどこに行きたいのか?何を見たいのか?それが大事です。戦略は状況に合わせて柔軟に変えればいいからです。 今回は、日本の文化からいくつかの生き方の原則を探ってみたいと思います。 最近、料理研究家の 土井善晴 さんの 「一汁一菜でよいという提案」 を読んで、日々のリズムを健やかに保つためのヒントがたくさん詰まっていると感じまし

By Takuya Matsuyama
Claude Codeをtmuxのポップアップウィンドウで継続的に走らせる方法

Claude Codeをtmuxのポップアップウィンドウで継続的に走らせる方法

💡本記事は英語ブログの日本語訳です。 どうも、TAKUYAです。 AIコーディングでは専らClaude Codeを使っています。最初はtmuxでターミナルの右側にペインを分割して使っていたのですが、幅が狭すぎてメッセージやdiffがまともに表示できず、使いづらかったです。 <Prefix>+zでペインを最大化すればいいのですが、毎回やるのは面倒でした。 そこで、ポップアップウィンドウでClaude Codeを起動するようにしました。キーバインドを押せばセッションが開き、閉じてもバックグラウンドで動き続けるので、すぐに再開できます。 この記事では、それを実現するためのtmuxの設定方法を紹介します。 動画で見る(英語): ポップアップウィンドウはサブプロセスを維持できない tmuxのdisplay-popupコマンドを使うとポップアップウィンドウを表示でき、ちょっとしたツールにすぐアクセスするのに便利です。 僕はlazygitでgitの状態をサッと確認するのに使っています: bind -r g display-popup -d '#{pane_current_path}'

By Takuya Matsuyama