概要
Recreational Programming は、純粋な楽しみや好奇心からプログラミングを行う活動。 外部の期待や収益性ではなく、 内発的動機 が原動力。 多様なスタイルやアプローチが存在し、 自己表現や学び の場となる。 失敗や「無駄」も価値ある経験として受容。 キャリアの中でも 好奇心と情熱 を持ち続けることの重要性を強調。
Recreational Programmingとは何か
- 定義 :仕事やお金、外部要請のためではなく、 プログラミング自体の楽しさ のために行う行為
- 具体例
- 仕組みに興味があり、何かを作る
- 新しい言語を触ってみる
- 頭の中だけの課題を解く
- 実際には必要ないツールを作る
- 思わず笑ってしまうコードを書く
- 該当しないもの
- 副業やスタートアップの準備
- キャリアアップのためのスキル習得
- チュートリアルの模倣
- 面接対策のコーディング練習
- 他人の期待に応えるための制作
- 本質的な違い
- 内発的動機 vs. 外部からのプレッシャー
- 意義
- 内的動機との再接続で 燃え尽き防止
- 低リスクな探索 で直感を養う
- 長期的な情熱の維持
- 思いがけない発見や学びにつながる
Recreational Programmingの多様なスタイル
- Style 1: The Live Explorer
- ストリーミングやブログで公開制作
- 失敗やバグも含めた プロセス共有
- コミュニティがエネルギー源・モチベーション
- 実用ツールから実験的プロジェクトまで幅広い
- Style 2: The Deep Diver
- 仕組みの深い理解に没頭
- 複雑なシステムの おもちゃ版実装
- 学び重視、成果物のリリースは重視しない
- 複数の「学習用実装」を持つケースが多い
- Style 3: The Creative Technologist
- コードを 芸術的表現 の手段として利用
- ジェネラティブアート、音楽合成、インスタレーション
- 技術が創造性のビジョンに奉仕
- 他分野との融合が多い
- Style 4: The Problem Solver
- 個人的な小さな不満をコードで解決
- 「自分用に十分」な解決策を追求
- 結果的に他人にも役立つツールが生まれることも
- Style 5: The Language Explorer
- 新しい言語やパラダイムを常に試す
- 同じ課題を 異なる言語 で実装
- 珍しい言語や実験的な技術への好奇心
- コードを 知的探求 の対象と捉える
すべてのスタイルに共通するパターン
- 「無駄なもの」を作る許可
- ビジネス的な正当性は不要
- 好奇心だけが十分な動機
- 失敗や未完成も価値ある経験
- ROI(投資対効果)は無関係
- エネルギーを追う
- 興味が薄れたらプロジェクトを切り替え
- 放置されたリポジトリも探索の証
- 退屈は興味のデータ であり、敗北ではない
- プロセスの記録・共有
- 結果だけでなく 過程を公開
- 教えることで理解が深まる
- 同じ志向の人とのつながり
- 意思決定のナレーション
- 学びのプロセスを受け入れる
- 新領域では 初心者の心 を持つ
- 「知らない」ことに居心地の良さ
- 完成よりも過程重視
- 進歩>完璧
個人のプログラミング遊び場の作り方
- 環境構築
- 専用の「experiments」フォルダやリポジトリ
- 本番環境の制約なし、 最小限のセットアップ
- プロジェクト初期化スクリプト
- バージョン管理は任意
- おすすめアプローチ
- 週1回の 小実験 (2~4時間で新しいことを探索)
- 自作チャレンジ (普段使っているツールのミニ版を作る)
- かゆいところに手が届くプロジェクト (自分の小さな悩みを解決)
- 教えながら作るプロジェクト (解説しながら何かを作る)
- クロスランゲージチャレンジ (同じ課題を異なる言語で)
- マインドセットの転換
- 「やらなきゃ」より「もし~だったら?」
- 完璧より進歩
- リリースより学び
- 生産性より好奇心
実例紹介:世界のRecreational Programmerたち
- Zikani Nyirenda – The Practical Experimenter
- ブラウザ自動化やファイル整理、Gitユーティリティなどの便利ツールをランダムに作成
- Go、Rust、Python、Vue、Reactと多言語で実験
- 「今日解決できる小さな問題は?」の精神
- github.com/zikani03
- Jeremiah Chienda – The Full-Stack Experimenter
- アーキテクチャやフレームワークの多様な探求
- 実際の課題解決を通じて新技術を学ぶ
- フルスタックでRecreational Programmingを実践
- github.com/liwoo
- Tsoding Daily – The Live Explorer
- 毎日4時間以上、ゼロからランダムなプロジェクトを配信
- テキストエディタや自作言語、レイトレーサー等を開発
- 失敗やデバッグも含めて全過程を公開
- 「やってみたらどうなる?」の姿勢
- ThePrimeagen – The High-Energy Problem Solver
- CLIツールやNeovimプラグインで自身のワークフローを最適化
- 開発ツールやパフォーマンスへの熱意
- 他開発者のコード批評やリアクション
- 最適化やツール開発をエクストリームスポーツ化
- Casey Muratori – The Systems Deep Diver
- Handmade Hero:ゲームをゼロから配信開発
- すべてのコードと設計判断を詳細解説
- ライブラリ未使用、原理から全て構築
- フレームワークなしでも現代的なソフトウェアが作れることを実証
- Ben Eater – The Educational Builder
- ブレッドボード上でコンピュータを自作し、各部品を解説
- CPUやメモリ、ネットワークの仕組みを動画シリーズ化
- 数ヶ月かけて5ドルで買えるものを自作
- ハードウェアの基礎を分かりやすく魅力的に解説
- Dan Luu – The Deep Technical Investigator
- パフォーマンスの謎を掘り下げる詳細なブログ執筆
- キーボードやターミナル、言語など全てをベンチマーク
- 「なぜXは遅いのか?」という疑問から数千字のリサーチへ
- Recreationalな調査が業界全体の問題発見につながる
実践チャレンジ
- 使っているツールの「最悪バージョン」を作ってみる
- 気になっていた言語で2時間だけ遊んでみる
- 小さな問題を解決する様子を記録・公開
- 面白そうなプロジェクトをforkして改造
- ライブコーディングや配信に挑戦
- 唯一のルール:楽しくなくなったらやめること
最後に
- 目標はこれらのプログラマーになることではない
- 「なぜプログラミングを始めたのか」を思い出し、好奇心をキャリアと共に持ち続けることが大切