銀色うつ時間

思い出すたび何か胸につっかえてるだけ

”To be C or not to be C. That is the question.”

半年くらい経ったのでそこそこにまとめる

身につけたこと/今後の展望

身につけたこと、とはいえどれも中途半端だし、自信を持って「できます」といえるレベルは程遠い。上限が見えないからこそ面白くはあるんだけど、みんなどこまでやって「できます」って言えるようになるんだろう...

  • UNIX/Linux基本的な操作
    • 簡単なシェルスクリプトくらいなら
    • コンピュータに対する理解が甘いので、もっといじる
  • Webアプリケーションへの理解
    • HTTPとか、TCP/IPとか
      • request/responseモデルの基本的な通信は学んだ
      • サーバー間通信の問題などつい最近まで知らなかったので、今後もヒマな時に本を読んだりして補いたい
      • WebSocketあたりはほとんど触れてない
    • セキュリティ
      • XSSCSRFなど対策すべき攻撃手法の基本は学んだ
      • とはいえワンタイムトークンの実装など曖昧な認識がある
    • CMSの利用
      • 個人でwordpressを利用したサイトを構築した
      • 使い方のイメージはつかめたけど、プログラミングじゃない感が激しいのであまりモチベーションがない
      • nginxもとりあえず導入してみただけで、まだ仕様についてちゃんと理解できていない
  • テスト
    • あまり学べていない
    • JavaでSelenium2を使った自動テストをやった程度
  • HTML/CSS
    • 卒なく組めるようにはなった
    • classやname,idの付け方が下手くそ
    • CSSの修正にめちゃくちゃ時間がかかる
    • floatやalign属性への理解不足
  • PHP/template engine
    • まあまあ書けるようにはなった
    • オブジェクト指向関連の処理系についてまだ良くわかっていない点が多いので、1つずつ潰していく
  • javascript
    • フリーダム言語なのでとりあえず動くようにはできるけど、まだ全然言語仕様についての理解が足りない
    • 言語仕様だけでなく、DOM操作、ライブラリについても学ぶ必要がある
    • これらを切り分けて理解していくのが大事
  • Database
    • MySQLだけ。一応クエリ最適化なども経験した
    • 今はフレームワークがほとんど吸収してくれているので自分でSQL文を投げることもない
    • 自分で設計する機会もほとんどないので、これはプライベートで理解を深めるしかない
    • MongoDBとかどうなんでしょう

超ざっくりかつカテゴライズ適当過ぎるけど、こんなものだろうか。んで、次。

今後身につけたいこと

今まで学んできたことの理解を更に深めることに加え、いわゆるスクリプト言語とは別のものをちゃんと学んでおきたいな、と思っている。なぜなら実際にプログラムを実行するコンピュータについてや、プログラムが動く仕組みなどへの理解が足りていないからだ。限られたリソースの中で厳格なコードによって処理が行われる一連の動作、ミニマルな形で学ぶことができる低級言語がいいと思っている(これとは別だが、関数型言語も学びたい)。あと、普段使っているフレームワークの内部実装などを積極的に調べて、コードをちゃんと読む機会を増やしたい。というわけで、今は「新しいサービスを世の中に出したい!」みたいな意識が全然なくて、こんなに意識が低くてよいものかと若干不安ではある。

  • 今までの理解を更に深める
    • コンピュータ・ネットワーク・セキュリティ全般
      • 「なぜ動くのか」シリーズを片っ端から読むといいかもしれない
    • 「効率的なWebアプリ~」とかっていう本とか
    • UNIX/Linux
    • PHP/HTML/CSS/javascript
      • 今後も経験積んでいきましょう
      • 公式ドキュメントに目を通すようにしましょう
      • パーフェクトjavascript読みましょう
  • 新しく勉強したいこと
    • なにか言語1つ
    • 低級言語
      • 型宣言やメモリ管理、ポインタなど厳格なプログラミング
      • アルゴリズムやデータ構造などが学べるもの
      • 候補1 C言語
        • Cを学んでおいて今後の人生で役に立たないことはないと思う
        • Cを使って独自のプログラミング言語を作ってみるのはいい経験になるかもしれない
      • 候補2 C++
      • C++であれば低級言語を学びたいという要件を満たしつつ、オブジェクト指向についても学べる、実践で使う機会もある
        • 一石三鳥
    • 関数型言語
      • ある程度実践的でありつつも、全く別の概念を持ったプログラミング言語を学んでみたいという欲求
      • 候補3 Scala
        • 関数型でありながら、殆ど無いとはいえJavaの知識が活かせる(というかJavaも一緒に学べるのではという期待)
        • 並行性プログラミングなどが楽しそうでありつつ、Android開発もできるのではないかという期待
        • まあ同時に複数の概念が学べるはずもない
  • コードを読む機会を増やす
    • 今使っているフレームワーク
      • 職場のもの
      • jQueryの内部実装をがんばって読んでみる
    • github
      • 気になるコードを舐めるように読む
  • その他
    • 開発環境
      • zsh関連もっと充実させる
      • vim関連もっと充実させる(便利な使い方覚える)
        • vimgrep課題
      • まともに使えるIDEを用意する
      • 家では基本IDE使うようにする
    • バージョン管理
      • とりあえず個人で開発管理しているものは積極的にgitで管理する
    • 記録
      • とりあえずなんでもいいからブログ書け

だらだら羅列したものの、今はこれに尽きる。

C言語を学ぶべきか、死ぬべきか。それが問題だ。」