「iOS開発におけるパターンによるオートマティズム」2冊目に読むべき良書!

この本はiOSアプリ設計・実装の方法論を正面から扱った良書です。iOSアプリの入門書を読んだけど実際のアプリを作るのに悩んでいる開発者、とりあえず勢いで一つ目のアプリをリリースしたけど、その設計は良かったのだろうかと自信のない開発者には是非読んでほしい書籍です。

iOS開発におけるパターンによるオートマティズム

iOS開発におけるパターンによるオートマティズム

この書籍は、iOSアプリの設計や実装の各局面をパターン化して解説しています。作者は ダイナミック Objective-C などで知られる 木下誠 さんで、なぜそう設計・実装するのかが長年の Mac OS X / iOS 開発者の知識と経験から論理的に説明されています。


アプリを設計する際には、いくつかの方法の中から1つを選択する事になります。この書籍の中でも、

  • モデルには CoreDataを使うか使わないか
  • オブジェクト間の通知にはデリゲート、キー値監視、NSNotification のどれを使うか
  • ネットワーク通信には同期通信を使うか、非同期通信か

などに付いて両方の実装と比較が行われているので、自分の作るアプリでは何を使えば良いのかを考える元になります。


またMVC特に、モデルにロジックを集めるコントローラを薄く作ることも強調されており、それが最後の方にあるiPad版の作成で効果を発揮するのが示されているも素晴らしいと思います。


iOSアプリ開発者は優れたアイデアのアプリを早くリリースする事も大事だと思いますが、やはりエンジニアとして良い設計・実装のアプリを作る事を心がけてほしいと私は強く思っています(だから教育とかやってるのですが・・・)。 本書は、そのためにとても参考になる良書だと思います。

「売れるiPhoneアプリの法則」日頃の開発に不満を持っている若い開発者にこそ読んでもらいたい、そして感化されて新しい開発者人生を踏み出してほしい

売れるiPhoneアプリの法則

売れるiPhoneアプリの法則

この本は、売れるiPhoneアプリに付いてのノウハウ本です。ただし著者は、ライターや評論家では無く、いくつものアプリをリリースし、さらにiPhoneアプリ開発スクール経営を通じて得た知識・体験の上に書かれているので非常に説得力があります。
また、良いiPhoneアプリに対する非常高い愛情・情熱を持っているのが感じられるところが、単なるノウハウ本に終わらない部分だと思います。


著者はiPhoneアプリを開発しリリースする事は、ロックスターを目指しCDをリリースするような事だと例えています。事実iPhoneアプリ開発者の世界には少数ですがスター開発者がいますし、売れっ子ミュージシャンのような開発もいます。


会社で日々開発しているソフトに情熱を持てずにくさっている若い開発者の方、 安定だけど平凡なサラリーマン開発者ではないロックスターのような開発者を目指してみませんか?

アースダイバー

私は東京が大好きです。大都市としても利便性や匿名性だけでなく、何か言葉に出来ない魅力を持っています。その言葉に言えなかった魅力の一部をこの本は語ってくれます。

アースダイバー

アースダイバー


暇な学生の頃、私は都内をあてもなく何時間も歩くのが好きでした。歩いてみると車や電車での移動と違い、東京はでこぼこしていて、坂だらけだと気づきます。また坂を上り下ると、思ってもいなかったランドマークが案外近かったりします。
この時の経験から、何となく国の重要な施設やお金持ちのお屋敷が高台にあり、私が住んでいた安アパートや街、歓楽街が低いところに在ることも気がついていました。


このアースダイバーは、東京は縄文時代にはリアス式の海岸であり、その後の寒冷期に海が引き出来た川や沼(現在は殆どが埋められてしましまったが)のある低地と、元は岬だった高台とが現在のでこぼこな東京を作っていて、高台と低地、さらにその境目の土地は、人々の無意識をあやつり、その場所に相応しい用途に使われ、相応しい建物がたっている事。その無意識の源泉である、縄文人的な感覚から天皇論までを 中沢 新一 が幾つかの場所毎に雄弁に語っています。


私は若いころ、第2章「湿った土地と乾いた土地」で取り上げられている新宿の十二社や第3章「死と森」の渋谷に住んで居たことがあり、あの場所がもつなんとも言われない雰囲気の正体に触れた気がします。また第4章「タナトスの塔」も、なぜか愛宕山に行った時の記憶が鮮明に甦ってきました。私の中にも縄文人につながる無意識があるのでしょうか。


そいうば、大好きなNHKの「ブラタモリ」でも縄文時代の地形は取り上げられていました。たぶん、この本は参考にされているのだと思います。ブラタモリが好きな人は是非読んでみると良いかと思います。

全てのプログラマーに読んでほしい 「プログラマが知るべき97のこと」

やっとプログラムが書けるようになってきた人から、3年、10年とプログラミングしているベテランプログラマーまで、全てのプログラマーに一度読んでほしい本です。

プログラマが知るべき97のこと

プログラマが知るべき97のこと

この本には、たくさんの良き先輩のアドバイスが詰まっています。これだけのアドバイスが出来る先輩・同僚に恵まれた職場は少ないと思います、これだけの素晴らしいアドバイスが ¥1,900であなたのものに出来るのです!

(どうしても\1,900出したくない人は、せめて オライリーのページの目次の読んで下さい。あなたがプログラマーなら読む時間以上の価値をもたらすはずです)


この本の読み方ですが、

  1. 最初から順番に読む
  2. カテゴリー別目次の順に読む
  3. パラパラとめくり、目に入ったページを読む
  4. 適当なページをめくり読む

どんな読み方でも良いと思います、一人のアドバイスは2ページ程度です(私は2.で読みました)。最初はピント来ないページもあるかも知れませんが、まずは全ページに目を通す事をお勧めします。
アドバイスの中には同じ事を言っているアドバイスも多数ありますが、切り口、語り口が違うので、あなたが受け入れやすいアドバイスが見つかると思います。

さらに、全て読み終わってもブックオフに持っていたりせず、本棚に置いて下さい。 そして、半年後、1年後、また、新しくプロジェクトに加わる人に指導する時、リーダーになった時・・・・などに読み返してみると良いと思います。 以前読んだ時とは違う発見があると思います。

私もかなり長い事、プログラマーをやっていますが、今回読んで始めて知った事、思い出したこと、何となくはわかっていたが言葉として表せなかったものをいくつも発見出来ました。




本文はここまでです・・・・・・・・・・・・・・・



これ以降は蛇足です、私もアドバイスを書きたくなったので1つ。

No.64 「プロのプログラマとは?」の プロのプログラマは、自分の書いたコードに責任を持ちます。と ほぼ同じですが


プロのプログラマは、自分の書いたコードは隅々まで説明できなくてはいけない」です。


自分の書いたコードを、どうしてこのようにクラス分けしたのか? どうして、このアルゴリズムを採用したのか、という設計レベルから、この変数名は、なぜこの名前にしたかのような詳細なレベルまで説明できる必要がります。説明出来ると言うことは、それぞれに付いて、ちゃんと考えたと言うことです。


私は以前、全てのプログラマーが当たり前にやっていることと思っていました。しかし教育の仕事をしていて出来てない人がいることに驚きました。
「なぜ、このアルゴリズムを使ってるのですか?」たずねると、「Google で検索したら出てきたから」、「とりあえず動くから」、「昔からこの書き方をしてるから」・・・・など、その論理的な根拠を説明できない人がいます。

検索し先人の知恵を利用する事は良い事です、そして見つかったコードを読み、理解し、自分のコードに取り込む事はプログラミングや設計の勉強になり、プログラマーを成長させます。
しかし、なぜそれが良いのか判らないまま自分のコードにしているのはプロのプログラマーとしては失格だと思います。

「iOS SDK Hacks」は中級者以上を対象とした本だが、プロの開発者なら初心者でも買うべき

この本は入門書ではなく、まえがきにも『「入門者やAppleのサンプルコードを使って、いくつかシンプルなアプリケーションを作ることができるようになったが、さらにアプリケーションを高速化、最適化、高機能化させたい」という中級者以上のiPhoneプログラマーを読者として想定している』と書かれていますが、お仕事でiPhone開発をしているプログラマーなら初心者でも買うべき本だと思う。


iOS SDK Hacks ―プロが教えるiPhoneアプリ開発テクニック

iOS SDK Hacks ―プロが教えるiPhoneアプリ開発テクニック


その理由は、

初心者にも直ぐ役立つ内容がある

  • テストなどの目的で社内、仲間内のiPhone利用者にプログラムを配布する AdHocビルド: もちろんこの内容は iOS Dev Center(Apple)のページに書かれているのですが英語が今一つというプログラマーにはありがたいです。実は私も最初はなかなかAdHoc配布が上手く行かずたくさんの時間を浪費しました・・・
  • やっかいなメモリー管理の問題、メモリーリークや解放し過ぎを検出してくれるツール Instruments:これはブログ等でも見つかりますが、まとまって書かれているのはありがたいです。
  • Push Notification(サーバーからユーザーのiPhoneに情報をプッシュできる機能)や In App Purchase (アプリ内で販売を行い課金です機能): これらはコードだけでなく、それを行うのに準備しなければ行けない証明書やテスト環境作りについても書かれています、このへんも iOS Dev Centerに書かれていますがたくさんの英語を読まないといけません ^^;

仕事でアプリを作るなら必要になる Hack がある

仕事でiPhoneアプリの開発を行う場合、全体的にそれほど難易度が高くない開発でも、どこか一部には通常のUIKitの使い方では対応できない操作(しかし、他のアプリでは行われていたりする)を実装する必要があったりします、その際にヒントになる情報があると思います。

また、iPhoneのCPUは通常のPCに比べると圧倒的に非力です、処理時間が長くて快適な操作感を与えられない箇所が出ることもあります。速度に関しては、まずはアーキテクチャアルゴリズムの改良が最初ですが、コード上での高速化には役立つ情報がたくさん書かれています。また高速化で重要な性能測定の方法についても丁寧に書かれています。

そして、いつかは初心者も中級者になる

今はあまり理解できなくても、日々iOS SDKObjective-Cと格闘していれば必要になる、役に立つ事が増えてくると思います。

本の大きさもコンパクトだし、内容も簡潔で、困った時に読むとヒントが得られる良い本だと思います。

プログラミングHaskell は 超お薦め!

この本は、Haskell の入門書として、超お薦めです。 「木を見て森を見ず」という言葉がありますが、従来のHaskell入門書というか、言語の入門書は 「木」の解説ばかりで、「森」を見失っていたのではないかと思います。

今まで何冊ものHaskell入門書を読みながらモヤモヤとした気分のままだった私も Haskellに 一歩近づけた気がします。

プログラミングHaskell

プログラミングHaskell

Haskell は 参照等価、遅延評価、パターンマッチ、モナド・・・ など、C、JavaRuby ... とは大きく異なるプログラミング言語です。 Javaを理解している人がRuby を学ぶ際には 「木」の違いを学ぶ事で、一応 Ruby でプログラミング出来るようになりますが、 Haskell の場合は「木」ばかり学んでもプログラムできるようにならないのでは?と思います。


この プログラミングHaskell は、Haskell の言語仕様や機能別に 解説するのではなく、小説のように 全体のストーリーの中で Haskell という言語を解説しています。
例えば 8章9章は モナドの説明ですが モナドとは・・・ という始まりではなく、関数型パーサーを作る中で高階関数をこのように組み合わせると便利、という流れでモナドモナドと呼ばずに導入し理解できるようになっています。
さらに、説明の中で出てくるコードも数行ではなく、各章ともにそれなりの大きさをもつコードが使われていて、取って付けたような感じにならないのが素晴らしいと思います。

また、12章では遅延評価について詳しく、その仕掛けについても解説してあり Haskellのモヤモヤ感がだいぶ晴れてきた気がします。


しかも、200ページ程度と薄く、本当に素晴らしいHaskell入門書だと思います。




この本の欠点を上げるとすれば、(Haskell nightで訳者の方も触れていますが) Haskellのコードが数学的な記号で書かれている事でしょうか。数学アレルギーのある人には向かないかも知れません ^^);
(普通に実行出来るコードは Programming in Haskell に書かていますので、安心して下さい)

パターン、Wiki、XP ~時を超えた創造の原則 (WEB+DB PRESS plusシリーズ)

夏休みの旅行中に読みました。私たちの関わるソフトウェアの世界にこんな素敵な地下水脈があった事を教えてくれる歴史読み物です。この秋にはぜひ読んでみたい一冊です。


パターン、Wiki、XP ~時を超えた創造の原則 (WEB+DB PRESS plusシリーズ)

パターン、Wiki、XP ~時を超えた創造の原則 (WEB+DB PRESS plusシリーズ)

建築家アレグザンダーが建築の中に追求してきた「6つの原理」「パタン・ランゲージ」がソフトウェアの世界に輸入され「デザインパターン」や「eXtreme Programming」になり、さらに Wiki というWebソフトもその延長上に生まれたという歴史の流れが書かれています。

この流れに付いての話は、著者 江渡 浩一郎さんのオブジェクト倶楽部やRubykaigiでの講演、さらにインスパイされた角谷さんのプレゼンなどで何度も聞いてきました。しかし、私の ぼんくら な脳みそにはこの歴史の意義やそこに込められたアレグザンダーの思想はピントきていませんでした。 (江渡さんスイマセン --- 本人の前でもそんな事を言ったようなきもします ^^;)


しかし、今回この本を読んでやっと納得できました。やはり私くらいの人には、この本くらいにじっくりと語ってくれる中から、自分なりにアレグザンダー思想→パターン、Wiki、XP を 追発見していけるのがとても良かったです。最近は技術書やビジネス書のように結論のみが重要な本ばかり読んでいた私には(これも本人の前でもそんな事を言ったようなきもします ^^;)
久しぶりに本の良さを確認させてくれました。



さて、この本は歴史書ですが、実は過去で完結していません。それはやはりアレグザンダーが提唱した「無名の質」によるものだと思います。たしかにそこに存在するのだが言葉では明確に表せないもの・・・・・ Rubykaigiの角谷さんのプレゼンでは Ruby言語やRubyコミニュティーにたいしての「無名の質」を語っていたような気がします。

私も最近、Lisp教育の提案資料を書いてみて。 Lisp言語やLisp文化も 「無名の質」なのでは? と思ってしまいました。多くのLisperがLispの良さを語り、Lispに憧れるエンジニアはたくさんいますが、Lispの本質を言葉で語るは難しい気がします。