書評:ふつうのLinuxプログラミング、あるいはHTTPサーバーについておおざっぱに
ふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道
- 作者: 青木峰郎
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2005/07/27
- メディア: 単行本
- 購入: 32人 クリック: 378回
- この商品を含むブログ (138件) を見る
OSの仕組みをちゃんと理解しておこうと思って買ってみた。
以前、「Working With UNIX Processes」という本を読んで、プロセスの仕組みがだんだんわかってきたので、OSの他の部分も知りたいということで次に読んだのがこれ。
読む前のレベル
- メインで使うのはRuby。最近、Objective-Cも書き始めた。つまり、ゆとりプログラマー。
- C言語はWebの入門記事をちょろっとやった程度。ポインタとか構造体とかよくわからない…
- 実務ではサーバーがLinux(Ubuntu)で、基本的な作業はひととおりできる。
- 「Working With UNIX Processes」を読んだので、多少プロセスについては前提知識がある。
もうちょっとC言語を勉強すべきだった
内容としては、OSの基本的な概念を紹介し、それらを操作するためのC言語の関数とコード例が出てくる。対象読者のところで、C言語の基本的な理解を前提としているのは、本当そのとおりだった。構造体がバンバン出てくる。あと拙者にはfputc
,putc
,fputs
,puts
の区別がつかなかった。
出直してきます…orz
HTTPサーバーをなんとなく理解
とはいえ、最後の方に出てくるHTTPサーバーのコード例はとても勉強になった。
ソケットAPIの説明が簡略だったため、詳しく理解することはできなかったものの、なんとなくHTTPサーバーが何をしているのかがわかった。
getaddrinfo(3)
で自分(つまりサーバー)の情報(ホスト、プロトコルなど)を取得する。- 取得した情報を使って
socket(2)
でソケットを作る。ソケットはファイルディスクリプタ(ただの通し番号)として参照される。 - そのソケットに対して
bind(2)
してlisten(2)
する。(詳しい説明がなかったので、ここらへんよくわからない…) - そのソケットに対して
accept(2)
する。これをすると、サーバーはクライアントからの接続を待つ。接続に成功したら、接続したソケットを返す。 - 接続したソケットはファイルディスクリプタなので、
fdopen(3)
を使って読み書きできる。リクエストを読んで、レスポンスを返す処理はここで行う。(接続したソケットへの書き込みはそのままクライアントに返されるのだろうか…?ここらへんもよくわかってない…) - 複数のリクエストをさばくには、5.の処理を並列化する必要があるので、
fork(2)
を使って子プロセスにこの処理を任せる。親プロセスはすぐにもう一度accept(2)
してリクエストを待つ。
おおざっぱな流れはこんな感じで理解した。
リクエストを読んでレスポンスを返す処理は、とても地味な処理だった。TCP/IPに従ってリクエストをパースして、その結果にもとづいてレスポンスを決めるような処理だったと記憶してる。
並列化はコード例ではマルチプロセスでの実装だったけど、他の実装も知りたい。
残る疑問
入門書ということもあり、途中はしょった部分があったので、いくつか疑問が残った。
- ソケットAPIがやってることが謎。
bind(2)
してlisten(2)
する部分が何をやってるか不明。 - 接続したソケットへの出力はそのまま接続先のクライアントに出力されるんだろうか?この背後でまだいろいろやってそうな気配を感じる。
- 処理が終わった子プロセスはゾンビ化すると思うんだけど、どうやって
wait(2)
して終了させるんだろう? - マルチプロセス以外の並列化の実装も知りたい。C10K問題というキーワードも関連してくる気がするし、node.jsもここらへんに関する技術な気がする。
本書では、次に読むべき本としていくつか紹介されているので、それらを読めば疑問が解決しそう。とてもありがたい。ネットワークに関する本であればこれとか。
UNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTI
- 作者: W.リチャードスティーヴンス,W.Richard Stevens,篠田陽一
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 1999/07
- メディア: 単行本
- 購入: 7人 クリック: 122回
- この商品を含むブログ (35件) を見る
↑高いw
書評:iOS SDK Development
- 作者: Chris Adamson,Bill Dudney
- 出版社/メーカー: Pragmatic Bookshelf
- 発売日: 2012/10/22
- メディア: ペーパーバック
- クリック: 3回
- この商品を含むブログを見る
iPhoneアプリの開発を担当しそうな気配を感じ取ったので、8月後半からぼちぼち読み始めていた。実際に10月から担当することが確定してからは2週間くらいちゃんと読み始めて、いまようやく6章/10章が終わったところ。もう10月になっちゃうので、いったんここまで読んだ感想をまとめておきます。
おおまかな内容(6章までだけど)
- まずツイートアプリを作る。途中、iOS6から導入されたSocialフレームワークやAuto layoutの説明が入る。i18nについてもふれる。
- ツイートアプリを改修しながら、Obj-Cについて学ぶ。GCDも出てくる。本書はARCを使うためメモリ管理についてはそんなに詳しくなさげ。
- レシピアプリをStoryboardsなしで作る。Interface Builderの使い方を学ぶ。
- レシピアプリをStoryboardsを使って作りなおす。ナビゲーションも出てくる。
※7章以降はiCloudとかアニメーションとかテストの話が出てくるらしい
iOS6, iPhone5に対応済み
本書を読んでる最中にiOS6、iPhone5がリリースされた。僕の場合は、AmazonではなくPragmatic Bookshelf(ここ)で買ったんだけど、iPhone5が発売されてからたった数日で本書のアップデートが行われた。6章までだけど、たしか以下のポイントについて変更されていたような気がする。
- サンプルコードをTwitterフレームワークからSocialフレームワークに書き換え
- Auto layoutに関する記述が数ページ追加
@synthesize
を省略するようになった@1
や@[]
や@{}
といったリテラルを使うようになった
iPhoneアプリの開発環境は目まぐるしく変化するから、自動アップデートがない紙の書籍はすぐに使えなくなってしまう。初心者であるほど、古い環境と新しい環境をアタマの中で置換しながら本を読んでいくのは難しい。なるべく電子書籍を買って、最新の情報にもとづいて勉強した方がいいと思う。
テンプレートに頼っていない
これがとてもいいと思った。初心者向けの参考書にありがちなXcodeのテンプレート頼りなサンプルコードは一切ない。すべてのプロジェクトはまず「Single View Application」で作成する。その後、Storyboardsを使ってナビゲーションを追加する(残念ながら今のところタブは出てきてない)。テンプレート頼りなサンプルコードを見て勉強したところで、いざ実践に入ったときにすぐに限界が来るのではないかと思った。Rails初心者がScaffoldから始めたせいで、脱Scaffoldが最初の関門になる感じに似ている。
本書にしたがって実際にプロジェクトを進めていけば、View Controllerを追加し部品をその上に乗っけてSegueでつなげてナビゲーションにはめ込むような作業がおのずと身につく。とても実践的な知識が身についてよかった。
英文を読むだけの価値は十分にある
本書は英語で、しかも中身が詰まっていて、読み進めるのがしんどい。でも、この本には「最新」かつ「実践的」な情報が詰まっているので、本屋に並んでいるような初心者向けの本よりはるかに役に立った。英語というハードルを考えても、これは読む価値のある本だと思った。
HTMLから始めたド素人がwebサービスをリリースするまでに読んだオススメの本10冊
どうも、naotyです。年末なので、他のエンジニアの方々にならって、僕も一年のまとめをしようと思います。
昨年5月に、就活にあきてエンジニアになろうと思ってから1年7ヶ月後、おかげさまでひとつのwebサービスを公開できるまでになりました。お世話になった方々への感謝の意味と、あと昔の自分と同じように、これからエンジニアの道を歩み始めようとしているあなたへのエールの意味を込めて、これまで読んできた技術書のなかでオススメのものを10冊まとめてみました。ぜひ参考にしてください。
HTML/CSS
HTML/XHTML&スタイルシートレッスンブック―ステップバイステップ形式でマスターできる
- 作者: エビスコム
- 出版社/メーカー: ソシム
- 発売日: 2007/06/20
- メディア: 単行本
- 購入: 29人 クリック: 403回
- この商品を含むブログ (39件) を見る
一番はじめに買った本。なにを買っていいのかわからなかったので、とりあえずAmazonのレビューが高いものを買いました。最初なので、別になんでもいいような気もします。
- 作者: 高橋征義,後藤裕蔵,まつもとゆきひろ
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2010/03/31
- メディア: 単行本
- 購入: 11人 クリック: 326回
- この商品を含むブログ (63件) を見る
たのしいですよ、Ruby。ただ、最初はRubyの環境を整えるまでで挫折する可能性が高いですね、"Windows"の場合は。ええ。
Ruby on Rails 3 アプリケーションプログラミング
- 作者: 山田祥寛
- 出版社/メーカー: 技術評論社
- 発売日: 2011/05/12
- メディア: 大型本
- 購入: 22人 クリック: 597回
- この商品を含むブログ (29件) を見る
僕が最初にRailsと出会った頃は、まだRails2.3.6とかだったと思いますが、Rails3以降では、この本が一番分かりやすいし、初心者でも分かってきた人にも合ってるいい本だと思います。でも、will_paginateを紹介してるところで、「そこはKaminariだろうがぁ!」と言いたいところ。
Railsについては、いろんなサイトやブログで情報が発信されているし、Rails自体もいろんなことを覚えなくてはいけないため、本だけではとても十分とは言えません。ググりましょう。
jQuery逆引きマニュアル Webデザインの現場で役立つ基本と実践
- 作者: 西畑一馬,中村享介,徳田和規
- 出版社/メーカー: インプレスジャパン
- 発売日: 2010/12/17
- メディア: 単行本(ソフトカバー)
- 購入: 3人 クリック: 166回
- この商品を含むブログ (10件) を見る
個人的な意見では、なまのJavaScriptの参考書(サイ本など)から勉強しようとすると間違いなく挫折すると思ってます。CSSが分かってきたら、たぶんjQueryもなんとか理解できると思ってます。少なくともサイ本よりは。この本を読む前に、すでにサイ本を挫折するなどして、JavaScriptの雰囲気はわかっていたということもあるので、この本だけではJavaScriptの理解は不十分だと思います。特にTitaniumなんかやる場合は、jQueryじゃなくてサイ本的なのが必要かもしれません。
ネットワーク
小悪魔女子大生のサーバエンジニア日記 ――インターネットやサーバのしくみが楽しくわかる
- 作者: aico,株式会社ディレクターズ,村井純
- 出版社/メーカー: 技術評論社
- 発売日: 2011/01/27
- メディア: 単行本(ソフトカバー)
- 購入: 10人 クリック: 1,005回
- この商品を含むブログ (50件) を見る
紹介した10冊のなかで一番読みやすいです。インターネットの仕組みの基本的なこと(IPアドレス、MACアドレス、DNSなどなど)をかわいいイラストをふんだんに使って説明している本です。webサービスをリリースするにあたって直接ためになったわけではないんですが、ド素人だった僕には「そもそもインターネットとは?」的な部分の理解ができてよかったです。
サーバー全般
[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)
- 作者: 安井真伸,横川和哉,ひろせまさあき,伊藤直也,田中慎司,勝見祐己
- 出版社/メーカー: 技術評論社
- 発売日: 2008/08/07
- メディア: 単行本(ソフトカバー)
- 購入: 122人 クリック: 2,018回
- この商品を含むブログ (278件) を見る
「サーバー、サーバーっていうけど、サーバーってなんなの?」っていうときに読んだ本です。上で紹介した本に比べると、いきなり難しくなります。なんとなく負荷分散とか、そもそも負荷って何よ?ってところを理解できました。
webサーバー(nginx)
- 作者: Clement Nedelcu,長尾高弘
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2011/04/21
- メディア: 大型本
- 購入: 2人 クリック: 589回
- この商品を含むブログ (15件) を見る
どうやらApacheよりnginxの方が速いし設定もラクというのを聞いてnginxを使っているんですが、いまのところ日本語で書かれたnginxの本はこれしかないような気がします。インストールから細かい設定まで詳しく説明されています。これと合わせて、nginxのwikiも参考にされるといいかと思います。
DB(MySQL)
Linux-DB システム構築/運用入門 (DB Magazine SELECTION)
- 作者: 松信嘉範
- 出版社/メーカー: 翔泳社
- 発売日: 2009/09/17
- メディア: 単行本(ソフトカバー)
- 購入: 50人 クリック: 3,369回
- この商品を含むブログ (31件) を見る
これは最初から読んですぐに挫折したのですが、途中のインデックスに関する説明がとてつもなくわかりやすかったので、ピックアップしました。SQL文の解説とかはのってませんので、まるっきりの初心者にはオススメできません。
エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド
- 作者: 奥野幹也
- 出版社/メーカー: 技術評論社
- 発売日: 2010/06/12
- メディア: 大型本
- 購入: 11人 クリック: 175回
- この商品を含むブログ (24件) を見る
はじめてのLinuxにMySQLをインストールする際に参考にしました。rpmでのインストールから、my.cnfの書き方を参考にしましたが、まだ1/3も読んでません。おそらくこれからサービスを本格的に運用するにあたって真価を発揮すると思われる一冊です。
セキュリティ
体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践
- 作者: 徳丸浩
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2011/03/03
- メディア: 大型本
- 購入: 99人 クリック: 3,887回
- この商品を含むブログ (120件) を見る
CDが付属されていて、読みながら実践して確認できるタイプの本です。実践しながらなのでとてもわかりやすいし、実際にセキュリティの穴を確認できるので危機感をもてます。また、セキュリティ上の問題が類型化されているため、体系的に学ぶことができて初心者でも読みやすかったです。また、PHPが中心ですが、Rubyの僕でも問題はありませんでした。
- -
オススメの10冊は以上です。ここにはないけど、Linuxの初歩やバージョン管理システムなど、まだまだ覚えることはたくさんあります。もちろん、技術書を読んだだけでは、プログラムは書けるようにはなりません。実践していく中で、こうした本に載った知識を吸収していくことが必要だと思います。
それでは、(なんかエラそうだけど)初心者の方がいち早く成長して、素敵なプロダクトをリリースすることを期待しています。差し支えなければ、himazinz.comも宜しくお願い致します。
「初めてのJavaScript」は初心者向けじゃない!
- 作者: Shelley Powers,武舎広幸,武舎るみ
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/11/30
- メディア: 大型本
- 購入: 6人 クリック: 106回
- この商品を含むブログ (19件) を見る
現在、このテキストでJavaScriptの基礎をしっかり学ぼうとしています。が、初心者がこれを読んでも「?」な感じになると思いました。その理由は、
- 用語がムズい。例えば、「オブジェクト指向」の意味がわかってないと厳しいかも。
- 字がちっちゃくてとっかりにくい。
- 図とかないし、色もないし、なんかいかつい。
の3つかな。でも、逆に「勉強した」感はものすごく得られるはず。勉強大好きっこにはオススメかも。
このテキストが終わったら、次はこっちに行きたい!
JavaScriptパターン ―優れたアプリケーションのための作法
- 作者: Stoyan Stefanov,豊福剛
- 出版社/メーカー: オライリージャパン
- 発売日: 2011/02/16
- メディア: 大型本
- 購入: 19人 クリック: 839回
- この商品を含むブログ (57件) を見る
わかりやすかったテキスト(Rails, jQuery編)
初心者の拙者にとっては、理論的な話より、ハウトゥが具体的に書かれているものの方が役に立ちました。その結果、以下のような逆引きリファレンス的なテキストを重宝してます。(一方で、オライリーの本がホコリをカブってる…)
Ruby on Rails 逆引きクイックリファレンス Rails 2.0対応
- 作者: 大場寧子,大場光一郎,久保優子,株式会社万葉
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2008/05/31
- メディア: 単行本(ソフトカバー)
- 購入: 3人 クリック: 165回
- この商品を含むブログ (19件) を見る
jQuery逆引きマニュアル Webデザインの現場で役立つ基本と実践
- 作者: 西畑一馬,中村享介,徳田和規
- 出版社/メーカー: インプレスジャパン
- 発売日: 2010/12/17
- メディア: 単行本(ソフトカバー)
- 購入: 3人 クリック: 166回
- この商品を含むブログ (10件) を見る
「PHP逆引きレシピ」を買いました
初級者から中級者へ脱皮したい人向けだというレビューを参考にこんな本をかいました。パッと見、見やすい。効果の程は、ジワジワくると思う。
PHP 逆引きレシピ (PROGRAMMER’S RECiPE)
- 作者: 鈴木憲治,安藤建一,山田直明,八木照朗,山本義之,河合勝彦
- 出版社/メーカー: 翔泳社
- 発売日: 2009/06/30
- メディア: 単行本(ソフトカバー)
- 購入: 39人 クリック: 247回
- この商品を含むブログ (31件) を見る