著書目録
わたし(arton)の著書目録です。雑誌記事についてはArticlesListにあります。
新しいものが上にあります。
なお、書影についてAmazonを利用しているためリンクもAmazonのページへ貼っていますが、購入するのであればAmazonで、という限定的な意味を持つものでは(当然ながら)ありません。
たとえばSEショップもどうぞ。
JavaプログラマのためのRuby入門
2009年
高井さんとの共著です。
RubyのソースをJavaのソースと対比させて、Javaプログラマに「Rubyならこう書く」を示す、Rubyの文法解説書です。Javaプログラム設計者のためのガイドとして、Rubyでのオブジェクトインタラクションの方法について、要素技術ごとにまとめているのも本書の特徴です。
内容
RubyのソースをJavaのソースと対比させて、Javaプログラマに「Rubyならこう書く」を示す、Rubyの文法解説書です。また、ライブラリやアプリケーションなどで定性的に多く利用されいている書式や命名規約といった、Rubyのソース書法についても説明します。巻末には、ビジネスプログラミング向けにコーディング規約を作成するための情報をまとめています。
Javaプログラム設計者のためのガイドとして、Rubyでのオブジェクトインタラクションの方法について、要素技術ごとにまとめているのも本書の特徴です。
なお、タイトルは『JavaプログラマのためのRUby』としていますが、文法要素ごとにRubyのソース、解説、Javaのソースという順に解説しているため、RubyプログラマがJavaでの書き方を調べることにも利用可能です。
本書はJRuby 1.1.5をベースにしているため、MRI 1.8.6 の文法が中心となりますが、一部 MRI 1.9.1についての説明も含みます。また、独立した一章を設けて、JRuby固有のjavaライブラリの利用方法についても解説します。
10日でおぼえる Ruby on Rails入門教室
2008年
名前の通り、10(実際には0日目のガイダンスがあるので11)日を1日あたり大体3時限ごとに区切ってRuby on Railsについて入門します。
内容
本書ではRailsの特徴のうち、テストファーストのサポートを重視しています。そのため、4日目以降は、基本的にユニットテストとファンクショナルテストを軸にチュートリアルを実践します。もちろんモックとインテグレーションテストも利用します。
Railsは1.2.3をベース(InstantRails 1.7ベース)にしていますが、2.0.2についても、注および、付録のPDFでカバーします。
以前の「かんたん」の反省から誤記は相当無くしました(2008年5月時点で、1ヶ見つかっていますが……)。また、練習問題を現実的な範囲で作ってあります。
Visual C# 2005によるWebプログラミング入門
2007年
Visual Studio 2005(Visutal Web Developer)を利用したASP.NET 2.0の開発についての入門書です。
本書は、『Visual C#.NETによるWebプログラミング入門―XML WebサービスとWebアプリケーション構築のノウハウ』の改訂版です。ただし、前著(ASP.NET 1.0)とはほとんど関連性はありません。また、スマートクライアントについての記述はなくなっています。
内容
Visual Web Developer(C#)のIDEの使用方法を含む入門書です。
Visual Web Developerの各ウィンドウペインの説明、登録されているコントロール、コンポーネントの解説、デバッガの利用方法、MSDNの調べ方などに始まり、Webサイト管理ツール、マスターページなどASP.NET開発に必要な情報をできるだけ網羅しています。これらには、クライアントコールバックを利用したAjax、データバインドの詳細、HTTPハンドラを利用したバイナリ転送などの上級のトピックも含まれます。
サンプルとして、タグクラウドなどを含むソーシャルブックマークの実装例を利用したADO.NETの解説が行われます。
Visual C# 2005プログラミング入門
2006年
Visual Studio 2005を利用したWindowsフォームアプリケーション、クラスライブラリ、コンポーネント、コントロールの開発についての入門書です。
本書は、『Visual C#.NETプログラミング入門―.NET Framework徹底活用のノウハウ』の改訂版です。
内容
Visual C# .NETのIDEの使用方法を含む入門書です。
Visual Studio 2005の各ウィンドウペインの説明、登録されているコントロール、コンポーネントの解説、デバッガの利用方法、MSDNの調べ方などに始まり、クラスライブラリ、イベントを伴うコンポーネント、パレット登録時に利用されるアイコンの設定方法、プロパティウィンドウに表示されるツールチップスの実装方法、インテリセンスにテンプレートを出力させるためのXMLドキュメントコメントの書き方、マルチスレッドを利用するコントロールの開発までWindowsフォーム開発に必要な情報をできるだけ網羅しています。
この版では.NET Framework 2.0に合わせて、ジェネリックコレクションの解説や、列挙子、無名メソッドの例なども説明しています。
Seasar2で学ぶ DIとAOP アスペクト指向によるJava開発
2006年
単独の著作です。出版時期は下の「かんたんRuby on Rails」より後になりますが、実際の執筆は2005年夏から冬までの間に行いました。
内容
全体は大きく2つのパートに分かれています。
- 技術解説
- ケーススタディ
技術解説
最初のパートは3つに分かれます。
1つ目は、ソフトウェアのライフサイクルの話で、モジュラー化重要ということの説明です。
2つ目は、DIという実装技術の解説です。昨年の内容なので、セッタインジェクション、コンストラクタインジェクション、注釈付きフィールドインジェクション、インターフェイスインジェクションです。意外とインターフェイスインジェクションが好きですねというのは余談です。
3つ目は、アスペクト指向の解説とAOPLではないJavaというOOPLでどうAOPを実現するかの簡単な(バイトコードモディフィケーションまでは入らない)実装技術の解説です。
このパートはどちらかというと、フレームワーク実装者向きかも知れません(追記:誤解を招く表現。その実装がわけのわからないものではなく、安定した技術に基づいたものだということを示すという意味がもちろんあるわけで、自分で作るかどうかに関わりなく、どのような技術に基づいて作られたのかということを知っておくことは重要だと思います。完全なブラックボックスを利用するのと、その実装――たとえばS2――そのものはブラックボックスとして扱うにしても、中でどのようなことが行われているかについて原理を理解しているのではまったく異なります。この観点から、パート1のうち実装技術の説明をしている章を書いています)。
ケーススタディ
次のパートは、S2コンテナ+S2JSF+S2Daoを利用したWebアプリケーション開発のチュートリアルの形式を取っています。しかし、チュートリアルとは言わずにケーススタディとして扱っています。これは実装中に出した論点について、考え方などについて説明したり考察したりしても結論を出さない(ケースバイケースで結論が変わる)部分が多々あるからです。つまり、設計上の選択がどのような局面で必要となり、それに対してどういう観点を取るとどのような設計が必要となるのか、といった点を解説しています。
ごーやについては昨年夏ころまでの情報を元に考えた結果で 構成しているため、はぶさんや現在のひがさんの考えている (オリジナルの)ごーやとは異なります。
取り上げた題材はWikiの実装です。
これは、業務プログラミングのイメージに近づけたサンプルを出すことよりも、終わった後にそれなりに使えるプログラムにしたほうが良いかな、という考えからです。そういった現実のプログラムとしての実用性とは別に、構造的な実用性としてWikiは、データベースからデータを引っ張り出した後にいろいろな加工をする(Wiki記法の処理)こと、特にその加工方法について拡張性が必要なことが挙げられます。
かんたんRuby on RailsでWebアプリケーション開発
2006年
久々の単独の著作です。
内容
Ruby on Railsのチュートリアルです。
それと同時に、プログラミングを趣味や娯楽としてもう一度考えてみた場合、今、どのようなプログラミングがあるのか? についての私の回答でもあります。
全体は4部、11章構成です。
- セットアップと概観
- セットアップ
- フォームの利用
- データベースの利用(scaffold)
- Ajaxの利用、
- 簡単なアプリケーション機能の実装
- ファイルアップロード
- Ruby-GetTextを利用した日本語化
- 認証機能(プラグインの利用)
- Webサービス連携(外部にスクリプトを作成しそれを利用する)
- もう少し凝ったアプリケーション機能の実装
- リレーションシップを持ったテーブルの利用
- Webサービス連携(Google Mapsの利用)
- 表へ出てみよう
- Webアプリケーションの公開(FastCGIのセットアップなど)
本書の目的はRailsの紹介といったものとは別に次の2点です。
- プログラムを作って動かしてみる
- 自分が使い、他人に見せるプログラムというWebアプリケーションの形態を考えてみる
本書では作って動かして自分で確認するまでを最重要課題として考えました。そのため、以下の特徴を持ちます。
- 確実に動作する環境の提示
- 基本的な説明をフォーム、ActiveRecord、Ajaxに絞る
- アプリケーションを作り、機能を追加し、さらに機能を追加するというサイクルの提示
- ただし、アジャイル開発を意味しません
- サンプルプログラムに、最低限度の実用性(利用価値)を持たせる
Microsoft .NET入門 改訂2版
開発のプロが教える標準FindBugs完全解説-Javaバグパターンの詳細と対策
2005年
再び宇野るいもさんとの共著です。
FindBugsが検出するバグの各パターンについて、コード、なぜそれがバグでどういう場合に入れやすいか、どう対応するのかについてカタログ化した本です。
内容
FindBugsのバグパターンを(文字通り)完全に解説した本です。FindBugsの開発者がバグのパターンとして検出対象にしているコードについて実例を挙げて、なぜこういうバグを入れるのか、入れずにすませるにはどのように考えれば良いのか、あるいはどういう知識を前提として持たなければならないのか、を解説しています。
わたしが担当したのは第2部と第3部、および序章の一部です。それにつけてもスレッドプログラミングはやっぱり難しいですね。その一方で、頭の中で(紙に書いても良いけど)徹底的にシミュレーションしなければどうにもならないというところが、実におもしろいプログラミングができる点でもあります。
JSFプログラミング講座
2004年
再び宇野るいもさんとの共著です。
Struts本のある意味続編と言える、JavaでWebアプリケーションを開発するための新たなフレームワークであるJavaServer FacesとSun Java Studio Creatorについての独習書です。
内容
JaveServer? Facesについての解説とJSFハードコアプログラミングの第1部、Sun Java Studio Creatorの使い方(含むRowSetのバインディング)から、com.sun.jsfcl.app.FacesBeanフレームワークの解説までの第2部、JSFの設定とタグライブラリリファレンスから構成されたJSFとJSCの学習書です。
担当した第2部では、特に初学者/独学者がIDEを利用して開発する場合に陥りがちな問題点について何が問題でどう対応すべきか、といったことをきちんと解説しています。
なお個人的な見解になりますが、現時点では画面デザインを含めてプログラマがヴィジュアルな開発環境を利用するのであればJSF(比較的少人数による開発)、分業体制をとってプログラマは主にロジカルな開発するのであればStruts(+標準タグライブラリ)が良いように思います。
Javaプログラミングの処方箋
2004年
再び宇野るいもさんとの共著です。
Javaプログラミングの開発前の準備、プログラミングそのもの(APIとか言語仕様とか)、テストデバッグチューニング、実装設計についての詰め合わせ。
内容
Javaでどうプログラムを書くかを豊富なサンプルコードであれこれ解説(+考察)。2004年現在で知っておくべきちょっと先の知識(AOP)まで含めていろいろ詰め込んだ1冊。
実際に筆者達(読者にとっては幸いなことにこの2人は所属企業も違えば開発ジャンルも違うので文字通り複眼で見ているのだ)の(もちろん、仕様やイディオムをきちんと押さえた上での)開発経験から導出された知見を元にしているから深い内容のものは底知れぬほど深い。問題自体が浅いものについてもそれなりの深さはキープしている。
- たとえば(以下、実際の目次とは別の言い切り方をしている)
- Javaでは多値を返せない? ――それは設計が悪いんでしょ
- シリアライズって互換性がなくなるからイヤだよね? ――それは仕組みをちゃんと理解してないってことでしょ
- マルチスレッドって簡単だよね? ――んな訳ないでしょ。一緒にきちんと勉強しましょ
- 部分最適化なんて無視でいいよね? ――大して手間がかかるわけじゃないんだから文字列連結くらいちゃんと書いときましょ
- 良くわからんからmainで全部処理しましたけど動けば良いんですよね? ――せめて孤高性とか不変性とか知っておきましょ
- ユーティリティーだからアリアリのAPIがいいよね? ――それじゃだめでしょ
などなど。
J2EEプログラミング講座
実践Java
2002年
マイクロソフトの世界から今度はJavaです。宇野るいもさんとの共著です。
とは言うものの、ネットワーク、分散オブジェクトという通奏低音は全然変わっていなのですが。もっとも、この本ではそれらの側面は出ていませんが。
おまけは、書きすぎて本に入りきらなかった部分をPDFにしたものです。 JUnitやJavadocなどの章となっています。 こういう部分が出てしまうことや(当然これらの分は筆者は無料)、 それを出版社がダウンローダブルにしてあるところ(出版社は持ち出し)が なんともASCII的なところです。 というわけで最終的な校正前の状態なので結構アラはありますが オマケと言っても役に立たないわけではありません。
内容
いわゆる中級者本です。
あるいは、Javaの入門書を飛ばしてJavaプログラミングを開始するC/C++/C#といった類似した構文を持つプログラミング言語経験者に対してJavaの癖のようなものを解説した本です。
当時J2SE1.4が出始めたばかりだったので、J2SE1.4から追加されたクラス(NIOや正規表現)についての解説も含みます。
Visual C#.NETによるWebプログラミング入門―XML WebサービスとWebアプリケーション構築のノウハウ
2002年
続編で、ASP.NETを中心としたWebアプリケーション、Webサービスについての入門書です。
追加情報(.NET Framework 1.1)
筆者による補遺(重要:本文中に、スマートクライアントの厳密名の取り扱いについて.NET Framework 1.1では非常に問題がある記述がされています。必ず補遺を参照してください。申し訳ありません)
内容
Visual C# .NETのIDEの使用方法を含む入門書です。
WebアプリケーションをASP.NETのどのようなオブジェクトを利用して作成するかについてと、スマートクライアント(今で言うノータッチデプロイメント)について書いています。
また、XMLインスタンスをデータベースとして利用するためのADO.NETの入門書でもあったりします。
個人的には、VS.NETやSQL*Serverのインストールについてサービスパックの適用の必要性にまで言及している良心的な書籍であると思っています。
Visual C#.NETプログラミング入門―.NET Framework徹底活用のノウハウ
2002年
この書籍の改訂版が、2006年に『Visual C# 2005プログラミング入門』として出版されています。.NET Framework 2.0以降を利用して開発することを検討している場合は、本書ではなく上記をお勧めします。
オープンソースの世界から、プロプラエタリの王者マイクロソフトの世界です。
とは言うものの、ネットワーク、分散オブジェクトという通奏低音は全然変わっていなのですが。
内容
Visual C# .NETのIDEの使用方法を含む入門書です。
.NET Frameworkの命名規約やオブジェクト指向言語の基礎概念(参照、同値性、インスタンス、継承、不変性など)からバイナリコンポーネントの作成方法(パレットへの登録含む)までをカバーします。
また、つもりとしては、MSDNの調べ方や命名規約による類推によるクラス、メソッド、プロパティの調べ方などについて書いたのですが、Amazonの書評を読むとなんかハックぽく感じて拒否反応を示される人もいるみたいです。
また、これを書いていたころは今ひとつデコレータパターンを良くわかっていなくてちょっと妙な点があるのが難点かも知れません。
なお、この本はコードネームをinternal編と呼び、次のpublic編と、謎のprivate編と併せて全3部からなる予定だったのですが、諸事情からあるいは予定調和でprivate編(これはハックで、VS.NETではなくILdasm、C#ではなくILについて)は無しになってしまいました。暇があったらここで書けばいいんですが、なかなかそうもいきません。
Rubyを256倍使うための本 邪道編
2000年7月脱稿
僕にとっては記念すべき(読者にとってはどうでも良いことだろうけど)第1冊目です。
内容
COMの歴史、ActiveScriptRubyと助田さんのWin32OLEの簡略化した仕様、MS謹製のCOMサーバーの用例など。
WordとExcelをRubyからオートメーションする方法。
VBからRubyを使う方法と、その逆にRubyからVBのフォームを使う方法。
WMIやADOの利用方法。
Keyword(s):[authoring]
References: