Hatena::ブログ(Diary)

アガテナ

2011-04-14 良いコード書く技術の書評 このエントリーを含むブックマーク

良いコードを書く技術 ?読みやすく保守しやすいプログラミング作法 (WEB+DB PRESS plus)

良いコードを書く技術 ?読みやすく保守しやすいプログラミング作法 (WEB+DB PRESS plus)

以下のブログで書評をいただいています。ありがとうございます

私自身はこの本の登場人物的には「中級プログラマー」の下の方か「普通プログラマーに毛が生えた程度かと思っているのですが、独学と実際に書いてみて、の経験ばかりだったため、今まで教えてもらえなかった事がこれでもかと述べられていました。

勘的なところでやり過ごしていたところが合っていた事を確認できたり、微妙勘違いしていたところもあったり、分かっているのに発見連続という面白い体験が出来ました

僕は後輩はいませんが、居たら全員に読んでもらいたい本です。

このような指針で書かれているので、幅広い内容についてより良いコードを書くためのアドバイスが載っていて、新人に限らずプログラムを書く人は一度読んでみることをオススメします。

新人さん向けの内容が多いかと思いますが、長くプログラム書いてきたかたでもあらためて気付く・思い出すことがある内容だと思います。

厚すぎずにとても良いサイズですので、良いコードを書きたいかた、ぜひお勧めです!

こういう本は読むタイミングも重要ですが、そこそこコードを書けるようになった1年目後半〜2年目くらいの子に読ませるとよさそうです。

35歳を前に、私もまだまだ「良いコード」を書く道を追い続けたいな、と気持ちを新たにさせてもらえた一冊でした。(33歳男性 : 京都府在住)

さて、読みやすくて、あっという間に読み終わったけれど、この本は、実は見かけほど初級者レベルでもないのかもしれないと思った。 短い紙面や文章の中に、勉強になりそうなポイントとか、何か大事なことへの入り口みたいなものとかが、随所に散りばめられているように感じた。 そろそろ、リファクタリングデザインパターンなどに関する本格的な書籍にもチャレンジしてみようかな。

アルゴリズムの選択ミス、もしくは検討漏れによって発生するパフォーマンス劣化を意識してコーディングするというのが結構新鮮でした。

ある意味当たり前の事しか書かれていないが、その当たり前のことを体系的に過不足無くまとめたという部分に価値があると思われ。

Amazonでの売れ行きも好調なようで現在品切れ中のようです(2011年4月14日現在)。お急ぎの方はリアル書店でお求めくださいませ。

トラックバック - http://d.hatena.ne.jp/agt/20110414

2011-04-04

『良いコードを書く技術』という書籍を執筆しました。 『良いコードを書く技術』という書籍を執筆しました。を含むブックマーク

『良いコードを書く技術』という書籍を執筆しました。発売日は4/94/12です。

Amazonでは既に予約販売が始まっています

良いコードを書く技術 ?読みやすく保守しやすいプログラミング作法 (WEB+DB PRESS plus)

良いコードを書く技術 ?読みやすく保守しやすいプログラミング作法 (WEB+DB PRESS plus)

WEB+DB PRESSに連載していた「良いコードへの道」をベースに大幅に加筆・修正して完成させました。もともと連載終了時から書籍化の話はあったのですが、形にするまでになんだかんだで1年以上かかりました。時間はかかりましたが、テーマや切り口など実用的かつ楽しい本に仕上がったのではないかと思います

内容は書名のとおり良いコードテーマにしたプログラミングの本です。

達人プログラマなら当たり前の良いコードの考え方を、初心者や中級プログラマ向けにできるだけわかりやすく解説しています。例えば「名前付け」「スコープ」といった基本的かつ重要な内容は1章をまるまる使って解説しています

特に以下の方に読んでもらいたいと願っています

4月ですので新人教育にもぜひご活用ください。

はじめにと1章がgihyo.jpサイトで立ち読みできます

公式ハッシュタグgoodcodeです。

感想などを書いていただけると嬉しいです。

また、Cacooを使って「良いコードの条件」をマインドマップ風にあげていく企画も実施中です。ぜひ「あなたが考える良いコードの条件」を書きこんでみてください。

目次は以下です。

1章〜2章では良いコード定義価値、良いコードを実現するための習慣などを紹介しています

3章〜6章は基礎編です。名前付け、スコープコードの分割と集約といった基本的な内容です。

7章〜8章では良いコードを実現する上で後回しになったり省略されがちな、パフォーマンスユニットテストといった内容を扱っています

9章〜11章は応用編です。抽象化メタプログラミングフレームワークといった初心者には少し難しく感じる内容をわかりやすく解説しています

□第1章 良いコードとは何か
■1.1	良いコード定義価値
■1.2	良いコード定義
■1.3	良いコード価値
■1.4	代表者の声
■1.5	まとめ

□第2章 良いコードを書くための5つの習慣
■2.1	良いコードは1日にしてならず
■2.2	習慣その1 読む──コードを読んで読んで、読みまくれ!
■2.3	習慣その2 書く──とにかくコードを書きましょう
■2.4	習慣その3 道具を磨く──使う道具は常に磨いておこう
■2.5	習慣その4 知る──良い知識を得よう
■2.6	習慣その5 聞く──アウトプットと人からフィードバックでさらなる成長を
■2.7	まとめ

□第3章 名前付け
■3.1	良いコードは良い名前から生まれる
■3.2	代表者の声
■3.3	良い名前の条件
■3.4	変数名
■3.5	メソッド名
■3.6	クラス名
■3.7	パッケージ/ネームスペース名
■3.8	プロジェクト名
■3.9	まとめ

□第4章 スコープ
■4.1	スコープ意識していますか?
■4.2	スコープって何?
■4.3	スコープを小さくして覚えておくことを減らそう!
■4.4	代表者の声
■4.5	変数のスコープ
■4.6	メソッドスコープ
■4.7	クラススコープ
■4.8	キャストを使用した可視性の制御
■4.9	より大きな粒度スコープ
■4.10	まとめ

□第5章 コードの分割
■5.1	適切な長さにコードを分割する
■5.2	なぜコードを分割するのか
■5.3	代表者の声
■5.4	2つの方向からの分割
■5.5	お題 クライアントXMLを返すWeb APIの処理を分割
■5.6	ステップ1 ベタコードで書いてみる
■5.7	ステップ2 共通処理をメソッド抽出して分割する
■5.8	ステップ3 処理単位で分割する
■5.9	ステップ4 状態を持つ処理をクラス抽出して分割する
■5.10	まとめ

□第6章 コードの集約
■6.1	コードの重複は悪
■6.2	代表者の声
■6.3	メソッド抽出してまとめる
■6.4	継承でまとめる
■6.5	ユーティリティクラスにまとめる
■6.6	サービス層にまとめる
■6.7	オブジェクトにまとめる
■6.8	定数にまとめる
■6.9	まとめ

□第7章 コードパフォーマンス
■7.1	パフォーマンス意識していますか?
■7.2	代表者の声
■7.3	パフォーマンス計算量で決まる
■7.4	パフォーマンスチューニングの手順
■7.5	アルゴリズムの選択以外のパフォーマンスチューニング
■7.6	パフォーマンスチューニングの指針
■7.7	まとめ

□第8章 ユニットテスト
■8.1	テストはお好きですか?
■8.2	ユニットテストって何?
■8.3	代表者の声
■8.4	ユニットテストの効能
■8.5	お題 Webアプリケーションセキュリティテスト
■8.6	ステップ1 データベーステストデータを登録する
■8.7	ステップ2 画面の実装
■8.8	ステップ3 画面のユニットテスト(正常系)
■8.9	ステップ4 画面のユニットテスト(異常系)
■8.10	ユニットテストの指針
■8.11	まとめ

□第9章 抽象化
■9.1	抽象化プログラミングのパワーを最大化する
■9.2	配列/コレクションって何?
■9.3	配列/コレクションを利用した抽象化とは?
■9.4	代表者の声
■9.5	お題 画像ファイルの一覧を表示するWebアプリケーション
■9.6	ステップ1 ベタコードで書いてみる
■9.7	ステップ2 可読性を高めるためのメソッド抽出
■9.8	ステップ3 関連するデータデータ構造を整理
■9.9	ステップ4 配列/コレクション化して抽象化
■9.10	抽象化の指針
■9.11	まとめ

□第10章 メタプログラミング10.1	プログラミングプログラムする
■10.2	代表者の声
■10.3	メタプログラミングって何?
■10.4	お題 Excelを使った外部DSL10.5	ステップ1 ベタコードで書いてみる
■10.6	ステップ2 メタデータExcelに移動する
■10.7	ステップ3 リフレクションAPIで変換ルールを動的に適用する
■10.8	まとめ

□第11章 フレームワークを作ろう
■11.1	フレームワークの動作原理を知る
■11.2	代表者の声
■11.3	お題 Webアプリケーションフレームワークを作ろう
■11.4	ステップ1 素のサーブレットで書いてみる
■11.5	ステップ2 フロントコントローラアクションクラスの導入
■11.6	ステップ3 ルーティング情報の外部ファイル化
■11.7	ステップ4 よく使う処理を簡単に実行できるように共通化する
■11.8	ステップ5 フレームワークパッケージ化する
■11.9	まとめ

□付録A コードリーディングの方法
■A.1	コードには動的な読み方と静的な読み方がある
■A.2	お題 Apache Commons IOのコードを読む
■A.3	ステップ1 対象のコードダウンロード(チェックアウト)する
■A.4	ステップ2 静的な方法でコードを読む
■A.5	ステップ3 動的な方法でコードを読む
■A.6	まとめ

□付録B 解説付き参考文献
 

2011-04-05 追記:

https://github.com/agata/goodcode

  • 発売日が間違っていました。正しくは4/9です。

2011-04-07 追記:

http://bit.ly/fqE4mQ

2011-04-25 追記:

http://bit.ly/fqE4mQ

2010-10-24

コラボレーションカンファレンス2010福岡を開催します!  コラボレーションカンファレンス2010福岡を開催します!を含むブックマーク

f:id:agt:20101024213155j:image

株式会社ヌーラボではコラボレーションキーワードに、チームコラボレーションサポートする製品リリースしたり、様々なイベントを開催してきました。

今回、私たちのホームである福岡でコラボレーションをメインテーマとしたカンファレンスを開催します。

コラボレーションは良い仕事をしていく上で大切なものですが、なんだかぼんやりとしてとらえどころのないものでもあったりします。カンファレンスではコラボレーションについてみなさまと考えを深められたらいいなと思っています。

開催時間10月30日(土) 13:00〜20:00

開催場所:SRP福岡ソフトリサーチパーク ホール(福岡市早良区百道浜2-1-22)[地図]

参加対象者:コラボレーティブな仕事を行っている方、また行いたい方。

定員:300人

参加費:3,000円

主催株式会社ヌーラボ

コラボレーションカンファレンス2010 in 福岡のホームページ

f:id:agt:20101024213651p:image

個人的に楽しみなのは集まった方全員で行うワールドカフェです。東京や京都でカンファレンスを行った時も大変盛り上がり活発な意見交換が行われましたが、今回は人数も大変多いので更に深くて熱い話し合いが行われることと思います。

講師の方も大変豪華で福岡ではなかなか聞けない話も多いと思います。ぜひお誘い合わせの上ご参加くださいませ。

プログラムを見て、申し込みは、申し込みページから!

それでは会場でお会いしましょう!

トラックバック - http://d.hatena.ne.jp/agt/20101024

2009-11-27

yone098yone098 2009/11/27 16:00 Applet is cool!!!

agtagt 2009/11/27 16:16 Applet is freedom!!

2009-07-05

[]Cubby 2.0.0-rc1 をリリースしましたCubby 2.0.0-rc1 をリリースしました。を含むブックマーク

長い道のりでしたが、Cubby2略してC2もいよいよリリース候補版のRC1です。振り返ってみると1ヶ月に1回リリースしていました。

リリースバージョン
2009-07-052.0.0-rc1
2009-06-032.0.0-beta3
2009-05-012.0.0-beta2
2009-03-142.0.0-beta1

最近ではGAE用のアプリに使われたり、Cubby+Scalaで動かしたり、Guice2+ iBATIS動かしたりなかなかおもしろい使い方が増えてきています。

追記:XMLなどを返すWebAPIの提供などにCubbyを使うこともあるようです。この場合JSPなどは一切使用せずURLと処理のディスパッチにのみCubbyを使用する形になります。

以下リリースノートです。

Cubby 2.0.0-rc1 をリリースしました

http://cubby.seasar.org/download.html

次期バージョン(2.0)のリリース候補版になります。

使用された方はフィードバックを頂けると

大変助かります。

リリース内容に問題がなければ、ドキュメントの整備後に正式版としてリリース

します。

Cubby2.0の特徴は以下になります。

Springのサンプルは以下のSVNから確認することができます。

https://www.seasar.org/svn/cubby/branches/2.0.x/cubby-apps/spring-examples/

Guiceのサンプルは以下のSVNから確認することができます。

https://www.seasar.org/svn/cubby/branches/2.0.x/cubby-apps/guice-examples/

今回のリリースは、以下のとおりです。

詳細はリリースノートをご覧ください。

https://www.seasar.org/issues/secure/ReleaseNote.jspa?projectId=10122&styleName=Text&version=10943

2.0.0-beta3 からは、Guice を使う場合に Module#configure の記述方法が変更

になっています。

https://www.seasar.org/issues/browse/CUBBY-233 をご覧下さい。