acokikoy's notes

最近気になる=[NoCode, Shopify], I am..=[Python, ウクレレ, マニュアル車, CMS] LoveなWebディレクター

Pythonの勉強が踊り場&停滞気分なので突破作戦を考えた

Pythonの勉強が踊り場に差し掛かって停滞気分なので突破する作戦を考えた。

昨年後半からPythonを勉強し始めた。
本とかPyQを齧りながら少しずつ動くものが作れるようになって楽しくて仕方なかったのが昨年末から今年の2月ぐらいまで。ここ1ヶ月強、最初の踊り場にさしかかったなと思う。入門的なセミナーでは物足りない、かといって 本格的なコードを書いたりがっつりしたコードを読み解くには力不足。思いつきで作るものにも限界がある。といったところで、この先何しようかなぁ〜って感じだ。

この状態は楽しくないので、次のステップに行く作戦を立てた。

今の停滞気分はどういうことなのか

まず、今感じている"停滞気分"は、どういうことなのか考えた。

1つは、毎日コードを書きたい渇望感があるのに、初中級レベルで適当な(扱いやすい)サイズのテーマを持っていないことだ。

2つめは、サービスなりアプリなり何かまとまった動くものを作りたいのに、知らないことが多すぎて進みが悪いことだ。あれもこれも調べているうちに拡散しすぎて脳がパニックを起こす。

1つめ 毎日取り組める "お題" を探す

基礎力アップしたい。しかも毎日毎日楽しくやりたい。 これが続けば 多分2番めの解決にもつながるだろう。 毎日コードを書ける(書く気になる)テーマを探すことにした。

テーマ探しの視点

  • ピアノでいうと「ハノン」。100本ノック的な、毎日手を動かす系のもの
  • 朝起きがけ30分とか、電車の中の15分とか隙間時間にも取り組めること。できれば Pythonista3 で動くこと(電車で組むのに必要)
  • 解く楽しさがあること
  • それなりの数があり、レベルにも幅があり、始めてすぐ終わっちゃわないだけの規模があること

候補に上げたもの

書籍・電子本

本屋さんで ドリルっぽく使えそうな本を探した。

GitHub上にある良質プロジェクトのコード読み

The Hitchhiker’s Guide to Python! > Reading Great Code
でオススメされていたGitHub上のコードをいくつか読んでみた。しかし、今の自分にはちとレベルが高く、「はぁ〜(?_?)」って感じでコードの素晴らしさを堪能するとか全容を把握するとか楽しめるレベルじゃないので棚上げ。

AtCoderなど競技プログラミング系サイトの問題を解く

WikiPedia>競技プログラミングサイト からチョイス。

  • AtCoder
    https://atcoder.jp/
    • 毎日、過去問を解くのにトライした。しかし、いまいち問題が地味なのと、A,Bは簡単すぎでCになると途端に難しくなるそのギャップが朝練向きじゃないと感じた。テストケースが公開されていない問題もあり、途中でつまづくとデバッグしづらい。入力値の バリデーションとか例外処理など実戦だったら欠かせないはずのコードを混ぜると叱られる。競技プログラミングの性格上仕方ないのだけどそこが気に入らない。断念。

ゲームでプログラミング学習する系サイト

リアル:スポーツジム形式のプログラミング塾

  • テックジム(毎日開催)
    http://techgym.jp/

    • リアルな、スポーツジム感覚のプログラミング塾。場所は赤坂見附
    • 都合のいい日に出かけて自習教材を黙々進める形態。会場にはメンターがいて、困った時に質問したり、解決を手伝ってくれる。
    • 女子は会費半額の優遇制度がある(ありがたい)。
    • 体験会に参加した。自習教材は若干退屈で冗長に感じたが、体験会ではレベル1からなのでそのせいかも。自分で調べながら黙々する形態が自分にあいそう。しかし、家庭の事情で遅い帰宅の曜日をこれ以上増やせず、断念。
  • Python/C++プログラミング勉強会(原則毎週月曜)
    https://techplay.jp/event/702585

    • 全人類がわかる統計学さん主催の定期勉強会。場所は秋葉原
    • AtCoderの過去問を各自で解き、最後に担当講師による解説の時間がある。途中で随時質問に答えてくれる。昨年何度か参加した。講師は中学・高校生から競技プログラミングで鍛えてきたような若い研究者が多く、アルゴリズムの解説が興味深い。
    • 月曜限定でmax週一しかできないのと、家庭の事情で遅い帰宅の曜日をこれ以上増やせず、断念。

結論:Codewarsで修行することにした

それぞれ囓ってみた結果、Codewars で修行することに決めた。

  • サイトのUIがきれいで、朝から気持ちがアガる。
  • 問題がたくさんあり、それぞれにレベルが明記されている。
  • ブラウザベースの編集・テスト環境が整備されている。テストケースが用意されていて提出前にテストを通して自己チェックできる。PyQがこれに近い仕組みだったので馴染みがある。 ・ランク(級)がついて励みになる

ジムの筋トレとかダイエットなんかも2ヶ月続けると身体が変わり始めるというから、 コード書き修行も、まずは2ヶ月続けるのを目標に、4ヶ月目ぐらいに効果の度合いを振り返るよ。

2つめの課題への解決については、また次回書く。