🧩

推し活学習法!プログラミング思考と好きな分野の相関性が最強の成長ハックだった話

に公開

推し活学習法!プログラミング思考と好きな分野の相関性が最強の成長ハックだった話

💭 この記事を書こうと思ったきっかけ

学生時代、『ヒカルの碁』に夢中になって 3 年ほど囲碁を嗜んでいました。当時は Windows95 の時代で、インターネットを通じた対局に魅了され、テレホーダイ(夜 23 時〜朝 7 時)の時間帯に Yahoo ゲームでずっと打っていたのを覚えています。学生ながらオフ会参加のためだけに沖縄から東京まで行くほど夢中でした。

実は、このインターネット対局の体験がエンジニアになったきっかけでもあります。当時は四段まで取得しましたが、その後は仕事に忙殺され、囲碁からは完全に遠ざかっていました。

3 年前、ふとした機会で囲碁を再開。しかし愕然としました。かつて四段だった実力は見る影もなく、二段からの再挑戦となったのです。また時代の変遷で AI 台頭の時代となり、かつての定石は既に通用しなくなっていました。

久々に囲碁の本を開くも、「筋が悪い」「薄い」「厚い」といった抽象的な表現ばかり。昔は感覚で理解できていたのに、今はさっぱりわからない。暗記に頼った定石学習や死活問題では効率的な成長が望めず、なかなか当時の実力に戻れずにいました。

そんな時、ふと気づいたんです。

「この定性的な表現って、プログラミングにもあるじゃないか」

新人エンジニアの頃、「汚いコード」「可読性が悪い」といった言葉を感覚的にしか理解していませんでした。でも経験を積むにつれ、それらの言葉の背後にある論理的な構造が見えてくるように。

もしかして、囲碁の抽象的表現も、プログラミングと同じように論理的に分解できるのでは?

😌 あなたもこんな気持ちになったことありませんか?

  • 💔 好きなことなのに、学習が辛くて続かない
  • 🤔 「センス」がないと諦めかけている
  • 😅 暗記ばかりで応用が利かない
  • 🔄 同じような失敗を繰り返してしまう
  • 📚 専門用語が感覚的すぎて理解できない

もしひとつでも当てはまるなら、この記事があなたのお役に立てるかもしれません。

🌱 学習の質的な変化

項目 従来の学習法 推し活学習法
理解度 暗記中心 論理的理解
学習時間 辛い反復 楽しい探究
成長の実感 停滞感 相乗効果
継続性 挫折しがち 自然に続く

💡 転換点:プログラミング思考を囲碁に持ち込んだ瞬間

プログラミングと囲碁の定性的表現の共通点

実は、プログラミングと囲碁には驚くほど似た表現がある

プログラミング 囲碁 共通する概念
"汚いコード" "愚形" 構造の悪さ
"可読性が悪い" "筋が悪い" 理解しにくさ
"技術的負債" "味が悪い" 将来への悪影響
"密結合" "重い石" 柔軟性の欠如
"エレガント" "美しい形" 洗練された解決策
"リファクタリング" "手直し" 改善・最適化

TDD 思考の囲碁学習への応用

従来の学習法

定石暗記 → 実戦で使ってみる → うまくいかない → 挫折

TDD 思考での学習法

🚀 具体的な実践例

布石の論理的理解

従来は「星は模様重視」「小目は実利志向」といった抽象的な説明で覚えていましたが、プログラミング的に考えると:

  • 理想的な配置パターンを先に定義
  • 現在の局面との類似度を評価
  • 判断基準を明確化

することで、暗記に頼らず論理的に布石を理解できるようになりました。

例 2:死活のユニットテスト

従来:死活の本を順番に解く
改善後:特定の形をテストケース化

テストケース1: "ナカデ4目" → 期待結果: 死
テストケース2: "2眼の基本形" → 期待結果: 生
テストケース3: "コウ" → 期待結果: 条件付き生

効果:理解度が大幅に向上し、応用も利くように

📈 なぜ「好きなもの × プログラミング」が効果的なのか

1. 学習のモチベーション維持

  • 好きなことなので継続しやすい
  • プログラミングスキルの新たな応用先を発見

2. 論理的思考の相乗効果

3. 具体的な改善サイクル

  1. 抽象化:問題をプログラミング的に捉える
  2. 実装:具体的な学習戦略を立てる
  3. テスト:結果を客観的に評価
  4. 改善:データに基づいて手法を改良

🔧 他の分野への応用パターン

自分の知見範囲ですが・・・

将棋が好きなら...

将棋にも「駒の働き」「手厚い」「薄い」といった定性的表現があります。これらをプログラミング的に捉えると:

  • 「駒の働き」 → 各オブジェクトの責任と役割の明確化
  • 「手厚い陣形」 → 冗長性のあるエラーハンドリング設計
  • 「薄い守り」 → 単一障害点のあるシステム構成

バスケが好きなら...

バスケでよく言われる「リズム」「流れ」「連携」をプログラミング思考で分解すると:

  • 「チームの連携」 → モジュール間の疎結合・高凝集設計
  • 「リズムの良い攻撃」 → 効率的なデータフロー設計
  • 「ディフェンスが崩れる」 → セキュリティホールの発生パターン

🌈 これからの私・あなたへ

二段からの再挑戦で挫折しかけていた私が、今では学生時代より強くなることができました。でも一番の変化は、学ぶことが楽しくなったことです。

推し活学習法とは、推し(好きな分野)とプログラミング思考を組み合わせた学習アプローチです。勝手に命名してます。

プログラミングは単なる技術ではなく、思考のフレームワークです。それを好きな分野に適用することで、想像以上の成長が可能になります。

🔄 逆方向の学び:囲碁からプログラミングへ

実は、囲碁からプログラミングに活かせることも沢山ありました。

囲碁は 一局が長時間にわたり、1 日に複数局打ちます。一局が終わった後は、対局相手と一手目から並べて感想戦をしたりします。意外と棋譜って頭に入っているものなんです。

この習慣がプログラミングにも活かされています:

🧠 集中力と持久力

  • 長時間の集中:長い対局で培った集中力は、複雑なコーディング作業に直結
  • 思考の持続性:一局を通して一貫した戦略を保つ能力

🔍 パターン認識能力

  • 定石から学ぶデザイン:数々の歴史から学んだ定石のように、これまで積み上げてきた知見やコードからデザインパターンを見出す力
  • 局面の類似性:過去の局面経験から最適解を瞬時に判断する、アーキテクチャ選択における直感力
  • 経験の蓄積と応用:無数の対局で培った「この形は見たことがある」という感覚が、「このコード構造は見たことがある」という技術的洞察に

📝 振り返りの習慣(感想戦)

  • 失敗からの学び:「負けたら考えろ、勝ったら忘れろ」「負けに不思議の負けなし」という格言通り、負けた時には必ず理由があり、凡ミスでも1目負けでも過程を分析する習慣
  • コードレビューの質:一手目から検討する感想戦の習慣が、thorough なレビューに
  • 失敗の分析:「なぜこの手を選んだか」を言語化する力
  • 岡目八目の視点:「岡目八目」は対局者以外は 8 目上手になるという意味で、第三者の客観的な視点から問題箇所を発見する力

⚡ 直感と論理の融合

  • 第一感の大切さ:経験に基づく直感を信じる一方で
  • 読みの深さ:論理的に先を読む思考力
  • 大場より急場:「大きな場所より急を要する場所を優先せよ」という格言。新機能開発よりもバグ修正を優先する、経験に基づく優先度判断

🌐 全体視点の重要性

  • 石音の反対に打て:「集中している局所的な盤面ではなく、19×19 の広い全体を見て熱くならず冷静に打て」という格言
  • 影響範囲の分析:コード修正時に局所的な部分だけでなく、システム全体への影響を考慮する力
  • 冷静な判断力:目先の問題に囚われず、大局的な視点を保つ思考

推し活は一方通行ではなく、相互に学び合える関係だと思ってます。

あなたの推し活体験を教えてください

この記事を読んで「推し活学習法」を実践された方、ぜひ体験談をコメントで教えてください!

  • どんな分野にプログラミング思考を応用しましたか?
  • どんな変化や発見がありましたか?
  • 他の読者の方へのアドバイスはありますか?

皆さんの成功事例を共有して、さらに多くの方の成長につなげていきましょう。一人ひとりの体験が、誰かの希望になるかもしれません。

著者について

🚀 AI 駆動開発を日々実践中のエンジニア

  • 💼 業務:インフラ〜フロントエンドまで AI 駆動で開発
  • 🏢 経験:GCP/AWS、オンプレインフラ構築、フルスタック開発
    開発歴: 20 年〜
  • 🎯 目標:AI 駆動開発のスペシャリストを目指して日々学習中
  • ♟️ 趣味:囲碁(浦添囲碁会館で土曜大会参加)四段

📧 お仕事のご相談

AI 駆動開発のご相談、開発案件のお問い合わせはお気軽にどうぞ!

以下のような案件を承っております:

  • 🌐 Web サイト・アプリケーション開発
  • 🔄 既存システムの AI 活用リファクタリング
  • ☁️ インフラ構築・最適化
  • 💡 技術顧問・コンサルティング

連絡先:

  • 📧 メール: info@foodit.co.jp
  • 💬 Zenn: DM でお気軽に
  • 🐙 GitHub: Issue またはメッセージ

フォローしていただけると嬉しいです!最新の AI 開発テクニックを共有していきます


Discussion