はてなキーワード: 都市工学とは
大学の一般教養でPascalを習った程度。専門課程に入る前に文法はすっかり忘れた。専攻は都市工学だからその後プログラミングとは縁はなかった。卒業前に第一種情報処理技術者の資格だけはとれてたのでプログラミングの何たるかとかオブジェクト指向なんかも知識としては知ってた。
大学卒業後にデスクトップユーティリティーのメーカーで技術営業をやった。顧客に製品仕様を説明するのが主な仕事なのでパワポばかり使ってた。その会社ではLinuxのソフトも販売してたから、Linuxのコマンドは打てるようになった。そこでシェルスクリプトを習得しようと思ったがあえなく挫折。
その後ネットワーク機器のメーカーに転職。トラブルシューティングでLinuxをさらに使うようになった。そこではHTTPプロキシを主に扱っていたので、HTTPプロトコルについては一通り知識を身につけた。その知識を実際にLinux上でシミュレーションしてみたくなり、Cを習得しようと思ったがやっぱり挫折。
部署移動でメールサーバーを扱うようになった。SMTPプロトコルの知識は身についた。ここでもSMTPをLinux上でシミュレーションしてみたくなり、こんどはperlを習得しようと思ったがやっぱり(ry
今はExchangeを扱ってる部署で働いてる。ここではExchangeメールのメタ情報をMySQL上で扱ってるから、SQLのSELECT文くらいは見よう見まねで使えるようになってる。
そんな俺も部下を持つようになり、デスクワークの時間が増え、比較的自由な時間が持てるようになった。そんなときにはてブでみかけたCoursera(https://www.coursera.org/)で本当に偶然に「初心者のためのプログラミング」というコースを見つけた。
Programming for Everybody
https://www.coursera.org/course/pythonlearn
コース自体は英語だが、別に教授と会話するわけではないし、Python文法以外は条件分岐や繰り返しといった過去に挫折しながらも知識としてだけはぼんやりと覚えていたことの繰り返しだ。英語が少しくらいわからなくても、図を見ていれば何を解説しているかくらいはわかる。
結論から言えば、このコースを受講したおかげでいままで断片的に持っていた知識 -単語だけは知っていた「オブジェクト指向」、「条件分岐や繰り返し」「アルゴリズム」などなど- がパズルのピースのようにかっちりと組み合わさり、Pythonが難なく習得できた。いままでにシェルスクリプトやCに挫折したのがウソのようだ。Linux、HTTP、SMTP、SQLといった周辺知識も余すところなく役に立った。何のことはない、Pythonの標準ライブラリを使えばHTTPやSMTPのシミュレーションなんて簡単にできたのだ。以前トラブルシューティングで夜中まで手作業でちまちまやっていた作業は、全部Python一発で解決したんじゃないか。
このコースをきっかけとして、俺の人生(といってはおおげさだが)が大きく変わった。小さいところで言えば、自宅PC上でバックアップにつぐバックアップでわけのわからなくなったフォルダ構造の中から、同一のファイルを探し出し削除できるようになった。(傍から見れば何を大げさなと思うかもしれないが、ここ10年くらいの俺の中で最大の懸案だったのだ。)仕事でも日次で発生する業務をバッチ化したり、繰り返し発生する手作業を全部Pythonで自動化した。(経営陣へのレポート作成とかそんな類のものだ。)おかげで残業どころか定時前に帰宅できるようになり、自由な時間はさらに増えた(笑)
ひとつ言語を習得してしまえば、あとは同じことの繰り返しだ。増えた自由時間を利用して、いまはPHP、JavaScript、jQueryを身につけて何かWebサービスを立ち上げようと目論んでいる。出来上がったら、またここでそれまでの道のりを紹介したいと思っている。
こんなことが自分の身に起こるとは、1年前の自分には想像すらできなかっただろう。それまでは「Webサービス」なんて言葉は自分とは一切縁がないと思っていたから。
欲を言えば10年前、いや5年前でもいいからこのコースに出会ってPythonを身につけていたら、今とはまったく違った人生を歩んでいたかもしれない。
コースを開講した教授との相性もよかったのだろう。彼の人柄にも好感をもてたし、「for Everybody」というだけあって、非常にわかりすい説明だった。英語だということを差し引いてもこのコースはおすすめだ。
たくさんのコメントありがとう。こんなチラ裏の文章がホッテントリ入りしてかなりびびっている(笑)
いくつかのコメントに返答したい。
こういう反応があることは投稿したときに予想はしていた。だが、何がきっかけでプログラミングを身につけたのかを具体的に書かないと、何の役にも立たない本当のチラ裏になってしまうので、コース名を書くことにした。だがこのコースをはてブで見つけたのは単なる偶然だ。このとき見つけたのがドットインストールのRuby講座だったら、Coursera→ドットインストール、Python→Rubyになっていただけのことだ。ここで言いたかったのは、断片的でも一度触れたことのある知識は後になってどこで役に立つか分からない、ということだ。Steve Jobsも言っていたが、「人生を振り返ったときに点と点をつなぐことはできるが、その点がなんの役に立つかをあらかじめ予想することなんてできない」ってやつが自分にも起こった、それだけのことだ。
なお、Courseraのこの教授は自分の授業内容をすべてオープンにしている。http://www.pythonlearn.com/ 教科書さえもここで無料で手に入る。Courseraに登録するのに抵抗があり、自習上等という人はここで俺が受けたのとまったく同じ内容を確認することができる。ちなみに授業はすべてYoutube上で公開されている。
これについてはまったくその通りだ。ただ、もう新たな言語を覚えることにまったく抵抗がなくなったのと、PHPとRuby on RailsがWebサービス界ではメジャーらしいので、とりあえずPHPもやってみよう、くらいの軽い気持ちで思いついただけだ。ひょっとしたら実際にはPython+Djangoとかで開発するかもしれない。