なりと日記

© 2019 Narito Takizawa.

私のDjango学習の軌跡

- プログラミング・IT

先日、Narito Blogに「なりとさんは、どのようにDjangoを学習していったのか」という旨の質問をいただきました。これと似た質問はちょくちょくされるので、せっかく日記も作ったし、今までの振り返りも兼ねて書いていこうと思います。簡単にまとめると、私のDjango...Djangoに限らずプログラミング全般の学習は、インプットとアウトプットの繰り返しです。

インプットは、本やブログ等のWebサイト、良質なソースコード、公式ドキュメントが情報源です。Djangoは日本語書籍が少なく、Webサイトの情報も最近増えてきたとはいえ、まだまだ少ないです。なのでDjangoの場合でいうと、私にとっては、公式ドキュメントとDjango本体のソースコード、Djangoを使っているプロジェクトのGithubリポジトリ等が主な情報源になっています。

後は、スタック・オーバーフローもよく見ます。ここでやりたいことの答えそのものだったり、方向性がわかることも多く、この後に上記のソースコードや公式ドキュメントを当たることも多いです。さすが業界1のQAサイトなだけあって、非常に活発です。できればベストアンサー以外の解答や、コメントも見るべきです。他の解答のコメントに「〇〇の解答(ベストアンサー)は、一部環境で動かない。こちらのほうがより汎用的」とか油断できないことが書かれていたりします。これに関連して、日本語情報の乏しい分野をグーグル検索する際は英語で行うようにしておくと良いでしょう。そうすればスタッフオーバーフローが検索結果に出てきます。てきとーな英語でも、割と引っかかってくれます。

アウトプットは、実際に何か作って公開したり、ブログ等に情報を書くことです。脳は入力より出力で覚えます。アウトプットすることで記憶として定着しやすくなるのです。このアウトプットについては、中々に濃いトピックです。別の日記でまた書こうと思います。

私がDjangoフレームワークに手を出して最初に行ったことは、ブログの作成です。最初は(今もそうですが)非常にシンプルなブログから始まりました。ブログは題材として中々優秀です。シンプルにもできるし、凝ろうと思えば結構凝れます。Webアプリケーションでのよくある機能が詰まっています。更に、ブログならばそのままメモ帳としても使えます。Qiitaの代わりに、自分のブログにアウトプットできるようになるでしょう。

ブログに限らず、自分がよく使いそうなものや、好きなものを作ってみるというのは非常に良い経験になります。自分というヘビーユーザーがいる訳ですから、目についたバグや不満な部分があれば、自分で調べて修正したり機能を追加することになる訳です。可能であれば、プログラミング等の学習は毎日...できるだけ高頻度で行いたいものです。よく使うものを自分で作っていれば、嫌でも触れるので、気づいたら毎日触っている状況になるでしょう。毎日触っていると、やはり嫌でも覚えます。

こういったものを作っていると、「インプット待ち」のような状況になってきます。新しく覚えたものを、自分が作っているものに使ってみたくなります。また、自分が作っているアプリケーションに必要な知識があれば、その必要な情報を目ざとく発見できるようにもなってきます。そもそも興味や必要がないと、情報はなかなか目に留まらないのかもしれません。こうなってくると、インプットとアウトプットが相互作用するようになり、強力になります。

個人的には、どこからインプットするか、といったことは些末な問題ではないかと考えます。自分にとって必要な情報であれば、公式ドキュメントやスタックオーバーフロー、誰かのWebサイト、Djangoのソースコード(これに関しては、慣れが必要ですが...)、そういった場所から、いつの間にか知っていたります。そのためには、自分や、自分が作っているものにとって必要な情報を増やす...「インプット待ち」な状況にする、というのが重要な気がします。

私のDjangoの知識は、ブログ作り...身近な、よく使うものを自分で作るというところから始まりました。結局のところ、手を動かして作るというのが様々な面で効いてきます。自分ではあまり実感が難しいですが、知識はいつの間にか身についてくるものだと感じています。