プログラミングの基礎とは?
上司からお前は基礎がなってないからハマっても解決ができないし、ハマるんだ。
このまま(エンジニアを)続けていても、基礎のない状態では伸びない。
とお言葉をいただく。
間違いなくその通りだと思います。
では基礎とは一体何だろうか・・? 何を学べば基礎を学ぶことになるのか?
コンピュータとは? TCP/IP的な? RFCの仕様? なぜインターネットは繋がるのか? なんだろう?
今回上司から一例として挙げられたのは、
httpリクエスト周りのヘッダーやボディの解釈方法。
今は便利なFWが多く存在しており、
それらが多くのことをやってくれるため、業務ロジックに集中することができる。
では、FWがやってくれることを理解しているのか。
自分で作れるのか。
という所。
確かにそこらへんは、あまり気にしなくても生きていける。と思っていた部分。
しかし今後、更なるレベルに上がるためには絶対に必要になるだろう。
という訳で、自分なりに勉強してみた。 やった内容は以下。
- 上司からの一例として、リクエストボディにJSON形式でデータがわかってきた場合にそれをどう解釈しパースするのか。
- FWではparamsとかいう変数があって大体 key,value(Hash)で含まれている。
- paramsをどう生成しているのか!!を解明する。
まず、最近 GrapeというRubyのAPIフレームワークを触っていたのでこれを見ていくことにした。
Grapeのリクエストってどう渡される?
開発時はrackupコマンドでrackを起動していた。
ではrackを学ぼう。とrackを学ぶ。
rackはアプリとwebサーバーを仲介するインターフェースであることがわかる。
今回rackを介して、webrickを起動していたので
リクエストを受けているのはwebrickである。
webrick(WEBサーバー) -> Rack -> Grape の流れでリクエストが処理される。
一旦はGrapeは置いておいて、Rackに載せる簡易的なアプリを起動した場合に
どのようにwebrickへ連携し、
どのようにアプリへリクエストが渡ってくるのか。
を、ソースを追うことにした。
また、前提として必要な知識が不足しているため以下の本を即日購入して読んだ。
一週間(5md)かかったが大枠としてリクエストの流れは追うことができた。 それらはテキストに雑にまとめてあるのでブログに載せるかも。
httpリクエストの処理の仕方もわかったし、 一番の収穫はRubyのFWやgemの読み方がわかってきたこと。 また、自然にソースを読む癖が付いたと思う。 今後便利なツール類が出てきてもすぐソースを読みに行くと思う。(Rubyなら)
さて、次はどんな基礎を学ぶか・・・。 今回ソースを追うにあたって細部まで見ていないところがあるので、 そこを追っていくか?(ソケット通信周り。とはいってもRubyの標準モジュールなのでCソースを読むことになるけど)
結局基礎ってなんだろう。
数学を学ぶにあたって算数を知らないと話しにならないとかそういうことだよね。
プログラミングを学ぶにあたって、必要な基礎。
パソコンの成り立ちとかOSの仕組みとかハードウェアとかかな。
結局全部知ってれば基礎はあることになるだろう。
いまのインターネットの普及までにあった技術的なことを学べばいい。
どうやって学ぶか含め調べつつ地道にやっていくことにする。
理解が深まるのは間違いないし、
今回やったことでかなり理解が深まったし。