SSブログ

たのしいプログラミング Pythonではじめよう! [読書]

たのしいプログラミング Pythonではじめよう!読了

子供のころ、「マイコンBasic マガジン」と N88 BASIC でプログラミングを学んだ。
電源を入れて、本に書いてあるプログラムコードを入力したら動作を確認できた。
ラジカセを繋いで save すれば保存できたし load すれば読み込めた。

今の若者はどうやって最初の一歩を学ぶのだろう。
パソコンの使い方から始めたら知るべきことが多すぎてなかなかプログラミングにたどり着けない。

この本は、Python かどうかは関係なく、一番最初に「プログラミングとは何か」を 21世紀に学ぶのにとても良い本だと思う。そういや、自分が中学生の頃にこんなの本で読んだなー(Basic で)と思った。

新たにプログラミングを学ぶ人が読むための本をずっと探していた。
「プログラミング言語○○」の入門書はいくつかあったが、「プログラミング」の入門書はなかった。
スクイークやスクラッチの本はあるけど、ああいうのはちょっと違う気がしてた。

小学校4年の頃に MacBook を息子に買い与えてみてから6年。
http://nakagami.blog.so-net.ne.jp/2009-04-10-1
普通に Web で検索とか便利なツールとしては使っているようだったがプログラミングはしてない。
僕が教えると、 vim の使い方とか Xcode のインストールとか始まってしまって、絶対おもしろくないから、特に親から何かを教えるということはしてなかった

ちょうど高校受験が終わった頃だったので、2/15 の発売日に買って、息子に与えた。
数日すると、 tkinter で四角形を描くあたりまで読み飛ばしながら、自分で五角形を描くようにしたものを見せてくれた。
最近聞いたら、読み飛ばしてたところを読み直してて全体の4割くらいしか読んでないようで
「そういえば、最近読んでないなー」
と言っていたので、飽きたようだ。それでもいい。とにかく、変数、関数、ライブラリ、条件文とループの組み合わせでプログラムが動いていて思ったようには動かないということは理解してくれただろう。
興味があれば、また、思い直して読み返してくれればいい。
興味がなければ、無理に勉強することはない。

驚いたのは、そういうのにはあまり興味がない娘も最初のほうを少し読んでいたことだ。
お父さんの職業でもあるので、どんなことをやっているのか少しは気になるのだろう。

この本の素晴らしいのは、教えることが絶妙で、前提条件がなくてもプログラミングとは何かということが伝わるように、テーマとか順番に凄く気を使っていること。

- Python だけをインストールしてできる範囲にしてインストールの説明を最小限にしている
- エディタとして IDLE を使いエディタの説明を最小限にしている
- 文中のプログラムコードがシンタックスハイライトされている
- ディレクトリの概念を知らなくてもできるようにパッケージやモジュールは作ってない(使うだけ)
- 変数、代入、データの型、ループ、条件分岐からオブジェクト指向プログラミングまでは教えてる
- ゲームプログラミングで入射角から反射角を計算するあたりまでやってるので数学はちょっと難しい

できるだけ、簡単に分かりやすくしているが、それでも小学生には難しいかな。
中学生にはちょうどいい。高校生でももの足りないということはなかろう。
大学の最初のプログラミングの講義に使うという話も聞いたが、内容的にはちゃんとしているので、それもいいと思う。

コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

SQL アンチパターン [読書]

SQLアンチパターンまあまあの良書。

SQL データーベースを多少使ったことあるなら、あるあるな感じのアンチパターンを解説した本。
章の冒頭で、問題が発生するパターンを脚本仕立てで書いてて、
「あー、あるよねー」
と、読み物として読むのは良さそう。
中には「そう言われましても」
と思うものもあるけど、
アンチパターンそれぞれについて、ただ単にダメというだけでなく、それが受け入れられる場合も解説してあって、まあわりと受け入れやすい。
(例えば、サロゲートキーはアンチパターンだけど ORM はそういうの前提にしてるのあるししょうがないよね、とか)

絶対の基準っていうより経験豊富な人の意見として聞いておくのはええんじゃなかろうか、と思った。

雷を踏む前に本読んで気をつけられたらいいんだけど、
実際にはそれは難しいんじゃないかなと。人間はそんなに頭よくないから。
一回経験してみてから読んで、「あーやっぱあれダメだったんだ。おれもやっちまったわ」と思えればよいかな。


コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

MySQL トラブルシューティング [読書]

MySQLトラブルシューティング読了。
最近は MySQL を使っているのだが、 MySQL のことほとんど知らない。と思って読んでみた。
しかし、正直アプリケーションプログラマーにはチンプンカンプンで、もうちょっと入門的な本を読んで DBA とかインフラエンジニア的なこともしてからじゃないと僕にはまだ無理だったかな、と。
もしくは、アプリケーションプログラマーの自分が読む本とはちょっと違ったのかも。
内容的には MySQL AB → Sun → Oracle と一貫して MySQL のテクニカルサポート業務をしてきた人の事例紹介的な本なので読む人が読めば良い本なのだと思う。

オライリーから今出ている MySQL の本の中では新しいもの(で薄いもの)と思って選択したのだが、やや消化不良。オライリーの他の(もっと厚くて古い本)を読んだ方がいいのかな?でも、さすがに MySQL 5.0/5.1 の頃の本を読む気がしないのだが。

推薦書があったら教えて欲しい

この本を読んで1つわかった大切なことは「Web上にあるリファレンスマニュアルをちゃんと読め」ということ

空飛ぶ Python 即時開発指南書 [読書]

空飛ぶPython即時開発指南書 (Programmer’s SELECTION)読了

奇抜な表示デザインとタイトルだけれども、原著は Manning のThe Quick python book というやつなので、ぱっと見の印象よりも随分としっかりとした内容。原著のタイトルや表紙絵を踏襲したほうがいいと思うんだけど、表紙とかタイトルは編集社が決めるものなんだそうで、これは正しい判断だったんだろうか。

内容は、ほかのプログラミング言語の経験がある人が、 Python3 ではどう書くのかを知るための本で、文法的なところを一通りサンプルコードで解説している。分量的に多くなり過ぎず読み切れる量で、一通りの内容を網羅している、なかなかの良書。
経験はないけど Python3 でプログラミングしたいというときに、まず最初に読むといい。

原著が Python3.1 を元に書かれているが翻訳段階で、きちんと Python3.3 で動作を確認している。

ただ、ライブラリの使い方はあまり解説してないし、Python っぽさというものについての解説も、やや少なめ。
なので、パーフェクト Python もあわせて読むと知識が補完されてよいと思う。
http://nakagami.blog.so-net.ne.jp/2013-03-10

パーフェクト Python [読書]

パーフェクトPython (PERFECT SERIES 5)読了

少し驚いたのは Python3.3 をベースにして解説していて、 2.x のことについては触れていないこと。
それでいて PEP や Zen of Python や PyPI への登録についての解説にページを割いている。書いている人達が、単なる言語の仕様を理解している だけでなく、Python の哲学について詳しいなぁと感心する。僕も色々勉強になった。
そういう Python の哲学みたいなところは、プログラミングしていくうえで必要になるんだけれども、なかなか書籍のかたちになりにくいので、こういう本は貴重だ。 Python2.7 で開発している人も読むとよいと思う。さすが Python サポーターズ。

プログラミング言語についての経験がまったくない人は想定していないが、Python 以外のプログラミングしか経験のない人なら読めると思う。しかし、「狭義の Python でのプログラミングの理解」という点では、他に勉強が必要かなと思う。

Part4 で、外部パッケージの解説をしていて、随分と Python3.3 で動くパッケージが増えたなぁ、と思う反面 Appendix のインストールの解説ではは、外部ライブラリーの整備状況は、まだまだ一般の人が使えるところまでいってないなぁ、と感じた。
まぁ、そもそも、この本が想定しているプラットフォームのひとつ Ubuntu 12.04 で apt-get できる Python3 は Python3.3 だからなぁ。

この本がバンバン売れて、第2版が出て、そのころまでに Python3 でのライブラリが整備されていることを祈る。


(追記)ものすごく丁寧な書評。購入しようかどうか悩んでる人には参考になる
http://t2y.hatenablog.jp/entry/20130312/1363045098

システム障害はなぜ二度起きたか [読書]

システム障害はなぜ二度起きたか――みずほ、12年の教訓読了
こういう読み物系のものを久しぶりに読んだ。
もう、一年半も前に出た本。
津田沼の丸善のコンピューター書籍コーナーで別の本を探してたときに、見かけて買った。
ここ数年、通勤経路の関係で、大きな本屋による習慣がなくなってしまったがやっぱり、本屋に寄ると、こういう本も買うことになるからいいなぁ。

みずほの地震のときに赤十字への振込の障害から始まって、みずほ統合時の障害の振り返り、その他の社会インフラの影響の大きかった障害についての、日経コンピューターの記事をまとめたもの。
中でも、やっぱり冒頭に詳細に書かれているみずほの2度目のトラブルは、通常の業務範囲の中で起こってしまったトラブルがトラブルを招いて、読んでいるだけでも苦しくなった。
ことが起きた時のことは覚えているが、地震のごたごたの中で、あまり注目してなかった。
日経コンピューターの編集の、システム開発はこうあるべし、というのもわかるが、結局引責辞任させられていたり、外されたベンダーは仕事が無くなっちゃうことを考えると
「チャレンジしないで自分の任期の間は穏便に終わって欲しい」
「できません。間に合いませんとは言えない」
という態度を単純に非難できない。

世の中の全てのシステムがそうなんだと思うけど、銀行の基幹システムでも、過去のものにつぎはぎつぎはぎで積み上げていくと、思わぬところに制限があってトラブルになってるんだなぁ。ということ。
銀行オンライン処理を止めてやらないといけない基幹のバッチ処理ってなに?なんで必要なの?と思っていたが、過去の遺物で、できれば辞めたいものなんだそうで、それがわかっただけでも勉強になった

Python プロフェッショナルプログラミング [読書]

Pythonプロフェッショナルプログラミングざっと章の頭を見て、興味があったところだけ読んだ。全てを網羅的に読むようは本ではなさそうなので、ここで感想を書いて、残りは、おいおい読むことにする。

この本は、なんといってよいやら、内容をひとことでは説明しづらい本だ。
少なくとも、 Python *について* 何か学ぼうとしている Python 初学者よりは、むしろ、 Ruby なり PHP なりを使って仕事として Web プログラミングしている人に役立つ本。もちろん、Python を、そこそこ使っている人にも役立つ。

Python Professiona Programming というよりは、 BeProud Professional Development というような内容なのであるが、BeProud (以下 BP)という会社を知らない人にはなんだからわからないので、Python とつけるしかないわな。

Python、Mercurial、Sphinx、nginx、Google App Engine と、関係あるようなないような章立てだが、それは BP が使っているものについての事例紹介なので、好きな章だけ読むというスタンスで良いと思う。(うちは、Git だから Mercurial の章はいいやとか、 PHP だからPython のパッケージングの章はいいやとか。)もし、全ての章が役に立つ、という人がいたら、それは BP の社員かアルバイト。

例えば、14章では Django の説明もそこそこに、 south、django debug toolbar や fixture の説明がされてて、
「Django の内容を網羅してます」
って感じではないが、使ってる人は当然のように使っているものを、使っている人が説明しているというスタンス。ほかの章も同じく、内容に網羅性なく偏りがあるのかもしれないが、
「英語のマニュアルを読んで日本語で解説しました」
的な入門書以上の内容のはず。ほかの章もだいたいそんな感じ。こういうのは、書籍になりにくいので貴重だと思う。

多人数で書いているということもあって、内容も難易度も章ごとに凸凹があるんだけれども、章ごとの依存関係はあまりないので、自分の興味を持ったところから好きな順番に読むというのがお勧め。

Python の知識の多寡によっても、どの章が素晴らしいと思うかは人によると思うが、僕は、特に4章、6章、13章あたりがよかった。

4章は、ドキュメントの章である。何故 Shpinx が良いか、どういうドキュメントをどのように書けばよいか、ということのヒントを与えてくれている。Shpinx は、Python コミュニティーを超えて使われているようなので、この章は Pythonista でなくても役に立つと思う。
さらに後半では、ツールの記法の説明でなく、「なぜ」書くか「どのように」書くか「何を」書くかについて取り組んでいるところが素晴らしい。
(Shpinx のクロスリファレンスの機能も素晴らしい)

13章は、テストについて。ツールの話は一切出てこなくて、テスト設計はどうすればよいかとかテスト仕様書はどういうことについて書けばいいか、というような話。
「ドキュメントがないとき」や「障害が多すぎるとき」の対応策みたいなことも書いてあって、著者の苦い経験が透けて見える感じ。
そういうとこまで考えながら読むと面白さ倍増。

この本は、通称 BP Book なんだけれども、続いて自社の開発手法やプログラミングの Tips やインフラの内情を書籍化してくれる会社ないかなぁ。

jQuery in Action の日本語訳 [読書]

コアjQuery+プラグイン/jQuery UI 開発実践技法 (Programmer’s SELECTION)タイトルや表紙からはわからないけど、 jQuery in Action 第2版の日本語訳みたいです。
読了。
なかなか良かったです。

インターネットのカタチ [読書]

インターネットのカタチ―もろさが織り成す粘り強い世界―読了

geekなページのあきみちさんが、当初の予定を超える長期間をかけて書いたということなので、「さぞや難しいんでしょうねぇ」と敬遠していたのだが、本屋で見かけて購入。

TCP/IP の基本的な(IP アドレスとか)知識があれば理解できる、割と一般の人向けの読み物で、僕にも非常に面白かった。文章は、平易で普通にインターネットを使っている程度の人でも理解できる
と思うが、内容は、いろいろ調査した結果をもとに、今の「the Internet」がどういう風に形成されているかをきちんと説明してくれてる。
かかったであろう労力と本の値段を考えると、この本は書けば書く程赤字だろうなぁと思う。

僕が、Unix Magazine で WIDE や IIJ の人達の連載を読んでたのは、 IIJ 創業から「経路テーブルがあふれそう」→「CIDR が導入された」前後の数年。

その頃から比べると、社会的な要因がすごく大きなファクターになってるんだなぁと思った。

今後も、インターネットはどんどん形を変えていくと思うけれども、できる限り「続インターネットのカタチ」を出して欲しいなぁと思う。

Amazon Web Services ガイドブック [読書]

Amazon Web Services ガイドブック クラウドでWebサービスを作ろう!読了

なんでも有名な AWS エバンジェリストの書いた本ということだそうで。
管理コンソールの使い方的な内容なのかと思ったら、意外にも API を使って、 S3 や EC2 をいろいろ操作するプログラミング主体の本。そして、もうひとつ意外だったのはそのサンプルコードが PHP で書かれていたこと。コマンドラインから使うことを想定したコードで PHP でサンプル書いてる本初めてみたよ。

原著が出版されたのは、随分前なんだけれども、日本語翻訳時の状況に合わせて(シンガポールのリージョンができてる)とか、監修の人がちゃんと仕事してるのが素晴らしい。ちなみに、監修の人も Amazon で働くエバンジェリストの人で、ブログにも AWS の記事書いてて、有名なひとらしいです。http://aws.typepad.com/aws_japan/

AWS の進化はさらにすごいので、この本では紹介してないサービスがあったりとか、日本語版翻訳後に東京に新しいリージョンができてたりとか、RDS に Oracle があったりとか、現状とは違う部分もあるけれども、日本語の書籍は少ないこともあり、本で学びたいと言う人には、とりあえず読んどく本じゃないかなぁ、と思った。現状では、読書派でも、この本を読んだら、あとは AWS のサイトのドキュメントを読めば良い気がする。