カテゴリー別アーカイブ: 書籍

書評 | テスト駆動開発(オーム社)

https://www.ohmsha.co.jp/book/9784274217883/

本書は、残念ながら絶版になってしまった「テスト駆動開発入門(ピアソン・エデュケーション)」を、日本におけるTDDの第一人者である和田卓人氏(@t_wada)が訳しなおしたものです。

しかし、本書はただ訳が新しくなっただけではありません。

  • サンプルコードの強化
    • 言語とテスティングフレームワークが執筆時の最新バージョンに!
    • サンプルコードの変更箇所がわかりやすく明示されるように!
    • TODOリストも箇条書きでわかりやすく!
    • 各章の最後にその省のサンプルコード全掲示!
  • 付録C「訳者解説:テスト駆動開発の現在」
    • 原著が出版されてからこれまでのTDDの経緯を和田さんが書き下ろし

といった特徴があります。この辺りは、和田さんのエントリや、ajito.fmの和田さん登場回などでも詳しく説明されていますので、そちらをどうぞ。

このエントリでは、これらのことを踏まえつつ、私が読んで思ったことを書いていきます。

訳註が最高!

本書を読んでいて、地味に素晴らしいと思ったのは、「訳註」の存在でした。

色々な人が本書のレビューを書いていますが、訳注に触れたものはあまりありませんでした。しかし、この訳註こそ、陰ながら読者を支える非常に重要な役割を果たしていると思います。

例えば、

  • 初出する用語について補足する
  • コードを変更してテストを実行した際の挙動を補足する
    (「ここで実行すると○○と××が失敗するが、□□を実施して実行すると成功するようになる」)
  • 過去のバージョンを対象とした記述について現在はどうであるのか補足する

といったケースがいくつも追加されています。これがあることで、読者は書籍を写経しながら読み進めながらも、迷いなくより現実にあった形を知ることができるようになっています。

おそらく、この訳註は本書の執筆中に著者、レビュアー、編集者とで何度も調整されたものでしょう。関係者の努力にただただ感謝するばかりです。

参考文献も最高!

本書は「テスト駆動開発」という「開発手法」を解説していることもあり、「設計原則」、「パターン」、「テスト手法」、「開発プロセス」など、多くのことを扱っています。そのため、それぞれについてより深く扱っている各種の書籍を、本書の「参考文献」から知ることができます。

また、より素晴らしいことに、前著出版後に改版されているものについても、しっかりと照会されています。本書の参考文献から、さらにたどっていくことで、膨大な先人の知識、ノウハウが得られることでしょう(このあたりは、TDDBCのクロージングセッションなどで、和田さんがよく言っていますね)。

全部書いてある!

前著を読んでからだいぶ経ち、久しぶりに本書を読んだのですが、それでもTDDに関する内容が全部書いてあることに驚かされました。

既にTDDを実践していたり前著を持っている人でも、本書の第Ⅲ部―中でも「第25章 テスト駆動開発のパターン」、「第26章 レッドバーのパターン」、「第27章 テスティングのパターン」、「第28章 グリーンバーのパターン」、「第29章 xUnitのパターン」、「第32章 TDDを身につける」―は読み返してみると、新たな発見や気付きが得られると思います。

 

本書は、昨今では当たり前になりつつある「テストを書く」というスキルを身に付けるのに、最初の一冊として非常に優れていると思います。ぜひ、書籍を手に取り、できれば和田さんも進めているように「写経」しながら読み進め、開発者として使える「武器」を増やしてほしいと思います。

「アプリを作ろう! Visual C#入門」という本を書きました

アプリを作ろう!  Visual C#入門 Visual C# 2017対応
https://www.amazon.co.jp/dp/4822253554/

サポートページ
http://ec.nikkeibp.co.jp/item/books/P53550.html

本書は無償で入手できるVisual Studio Community 2017でVisual C# 2017を使用して、プログラミングの楽しさが体験できる入門書です。
開発経験がなくても、全9章を順番に学習することで、プログラミングや開発環境の基礎知識、画面のデザイン、コードの書き方、エラーが起きたときの対処方法などを理解できます。
章ごとに短いトピックで区切られているので、自分のペースで学べます。PCスクールなどの教材としても適しています。

という本を執筆し、この度出版する運びとなりました。

企画自体は1年半近く前からありまして、最初はVS2015向けに書く予定でした。しかし、VS2017のBetaが出てき手タイミング変更を余儀なくされ、年末から再スタートしました。

本書の特徴は何といってもまさに「入門」のための書籍であるということです。

例えば、敢えてC#の言語機能を詳しく説明することはせず、サンプルアプリで使う機能に絞って都度説明するようにしています。初学者のには一度に覚えることはなるべく少なくしてあげないと、混乱してしまうためです。

また、本書の構成で一番気を使ったのが、「どの章でやめても、動かして遊べる」ことでした。初心者向けの教育で何より大事なのは、小さなステップで成功体験を積ませることだと私は思っています。したがって、「今やっている章と次の章をやらないと、そもそもプログラムが動かない」というのは、絶対に避けなければいけません。

そういったことを念頭に置き練った構成が、「各章ごとにアプリがパワーアップしていく」というものです。これにより、初心者でも飽きずに、少しずつ動かして動作を確認しながら進めることもできますし、アプリは少しずつ作って成長させていくものだということも教えられるのではないかと考えています。

すでに述べた通り、本書はC#の機能を網羅することを目的とはしていません。言い換えれば、本書はあくまで「1冊目」としての位置付けだということです。プログラミングは膨大な知識とスキルが必要であり、これは1冊の本を読んだだけでは身につくことはまずないでしょう。むしろ1冊で収めようとすることで情報過多になり、かえってわかりにくくなることだってあると思います。そこで、本書でなんとなく「プログラミングというもの」やIDEの使い方を身に着け、次に網羅系のテキストでより深堀して学ぶというのがお勧めです。

身近にWindowsを使っていてプログラミングを始めたいという人がいるようであれば、ぜひ本書を手に取ってみてください。

書評 | Amazon Web Servicesではじめる新米プログラマのためのクラウド超入門

http://www.shoeisha.co.jp/book/detail/9784798144696

WINGSプロジェクト様より献本御礼。

本書はAWSの多種多様なサービスの中から、S3、EC2、ELB、Route 53といった主要なサービスを中心に、その概念や役割、そしてGUIによる設定方法について述べた書籍です。また、ネットワーク等いわゆる「インフラ」に関わる基本的な知識についても解説がついており、初学者に対して非常にやさしい構成であると感じました。

GUIによるAWSの管理コンソール捜査については、ハードコピーがふんだんに使われており、書籍をなぞりながら実際にAWSを体験できるようになっています。その分ページ数がかさんでいるため、ある程度知識のある読者にとっては内容が薄いように感じる顔しれません。しかし、あくまで本書は「新米プログラマのための」と銘打ってありますので、そのあたりは差し引いて考えるべきでしょう。

本書で一点気になったこととしては、著者の前著でもそうだったのですが、説明図の中のLinuxコマンド例が

rm -rf /

なのですよね。これは図のもとにしたイメージ素材がそうだったのか、はたまた著者のお茶目心なのか判断に困るところです……

そういった些末なところを除けば、新米プログラマだけでなく、他のクラウド・プラットフォームユーザーがAWSについてざっと知りたいといった用途にも、個人的にお勧めできると思います。

書評 | プログラマのためのDocker教科書

プログラマのためのDocker教科書 インフラの基礎知識&コードによる環境構築の自動化

WINGSプロジェクトにてレビューアを募集していたので応募し、献本していただきました。

本書はこの1,2年ですっかりメジャーになったDockerおよびその周辺ツールについて、実際のコマンド、設定ファイルの例、動作イメージなどをふんだんに盛り込んで紹介しています。

Dockerは進化スピードも速く、またいわゆるWeb系のコミュニティで人気があることもあり、これまで日本ででは体系的にまとまった情報を得る手段があまりありませんでした。本書ではDockerのインストール方法から基本コマンドの説明、ローカルリポジトリの利用方法、さらにはDocker Machine、Docker Swarmといった周辺ツールの説明も順を追って説明されているため、最初の一冊にふさわしい内容と言えます。また、コマンド等のオプションについても、主要なものは個別に取り上げ、説明されていますし、索引も非常に充実しており、リファレンスとしても活用できるでしょう。

その他、一番最初にネットワークなどの「インフラ」用語について解説されているのも好印象でした。「プログラマのための」と銘打っているように、インフラに精通していないプログラマ(程度問題ではありますが)でも、一通りの知識をつけることができ、例えば新入社員~2,3年目の経験の浅いプログラマにはうってつけです。

ただ、気になる所がないわけではありません。

まず、dockerコマンドのオプションの例を実際に打ち込みながら学習を進めていると、たまにそのコマンドを実行する前に何をすればよいのかわからないことがありました。例えばあるコンテナが動作している前提で実行するコマンドがあり、そのコンテナをどうやって作ればよいのかわからない、といったケースです。少し考えればなんとなくは分かりますが、全くの初心者にはちょっとつらいかもしれません。

他には、ボリュームやリンクといったコンテナ間の連携機能の動作イメージが少しわかりにくく感じました。これらはそもそもが少し難解な概念だということもあるとは思いますが、ボリュームオプションで指定したボリュームに他のコンテナからどのような順でアクセスしているのかを、順を追って説明した図などがあればよかったです。

とはいえ、これらの問題は本書の本質的な価値にはほとんど影響ないでしょう。総じて良くまとまっており、Dockerを触ろうと思った人に、自信を持ってオススメできる一冊だと思います。

書評 | C#実践開発手法 by @masaru_b_cl #‎CS実践開発手法‬

監訳者の長沢智治氏(@tnagasawa)より献本御礼。

C#実践開発手法 – デザインパターンとSOLID原則によるアジャイルなコーディング

本書はAdaptive Code via C#: Agile coding with design patterns and SOLID principles(Microsoft Press, 2014)の日本語版で、変化に容易に適応できるソフトウェア開発を実現するために、
アジャイル開発、デザインパターン、SOLID原則を、C#でどのように実践するかを解説する書籍です。方法論と実践の間の橋渡しをする解説書で、サンプルコードはVisual Studio 2013ベース。
C#の基本をひととおり理解した開発者が、ワンランク上を目指すために読んでおきたい1冊です。

SOLID原則やデザインパターンに関して説明する書籍として著名なのはボブおじさん(Uncle Bob)ことロバート・C・マーチンの「アジャイルソフトウェア開発の奥義」です。しかし、サンプルコードはJavaであり、C#を題材にした同種の本は、これまではありませんでした。本書はそういった現状を解決してくれる書籍になるのではと、期待に胸を躍らせていました。

そして、本書を読んでみて、率直な感想としては「これはいいものだ」ということです。オブジェクト指向プログラミングのSOLID原則を平易なコードを使って解説してあり、初学者でもある程度の雰囲気はつかめるでしょう。第3部ではASP.NET MVCのWebアプリケーションを用いて、実践的なSOLID原則を考慮したリファクタリングの過程も紹介してあり、一つの指針として参考になるでしょう。

また、本書の他にない特徴は、アジャイルプロセスの一つである「スクラム」の簡易な解説書でもあるということです。第1部でプロセスや用語について解説し、第3部ではその用語も使いつつ、スクラムの「2スプリント」分の進め方を疑似体験できるようになっています。このあたりは「アジャイルソフトウェア開発の奥義」が同じくアジャイルプロセスのXP(エクストリーム・プログラミング)を最初に紹介し、同じように実践例を見せていることを強く意識しているように感じました。

あと、地味だけどよいなぁと思ったのは、第2章という早めの段階で「依存関係」について、丁寧に説明していることです。アセンブリの依存関係、型の依存関係、メソッドの依存関係の解説ももちろんですが、実行時のアセンブリ探索の手順まで簡易に説明してあるのが良いです。このあたり、初心者が2つ以上のアセンブリで構成されるアプリケーションを作成するときに結構「ハマり」ポイントですので、

ただ、情報量という面では「アジャイルソフトウェア開発の奥義」にはかないません。パッケージ(アセンブリ)の構成やコードメトリクスのような、さらに進んだ話題は相変わらずこちらを参照することになるでしょう。また、「C#ならでは」というものも、それほど多くはないという印象でした。この点については少し残念でした。

そういった意味で、本当に初学者がSOLID原則を学ぶ書籍としては、個人的にはいまだに「Head First デザインパターン」を勧めたいです。コードはJavaですが、ほぼC#でも再現可能であり、いわゆる「GoFデザインパターン」の主要なものを題材に、順を追ってSOLID原則をはじめとしたオブジェクト指向プログラミングで大事な「原則」の多くを学べるからです。

とはいえ、ほぼ最新に近いC#のコードでこういった各種の原則の一部を学べる意義は大きいと思います。現場ですぐに使える知識を本書で学んでから、より高度な内容を学んでいくというのも良いでしょう。まさに「C#の基本をひととおり理解した開発者が、ワンランク上を目指すために読んでおきたい1冊」として、ふさわしい一冊です。

2013年に読んだ書籍、テキストまとめ by @masaru_b_cl

今年は次のようなテキスト、書籍を読みました。備忘録的にまとめてみます。

 

アーキテクチャ関連

「アーキテクト」を目指す身として、「アーキテクチャ」の理解は欠かせないはず!ということで、今年は次の2冊を読みました。

 

パターン・ランゲージ

井庭先生(@takashiiba)のパターンに関する書籍は今年3つ読みました。

中でも「コラボレーション・パターン」がお気に入りです。仕事をチームで進める以上、コラボレーションは避ける事が出来ません。効果的なコラボレーションのやり方を今後模索していきたいと思います。

 

教育(インストラクション)

今年は新人教育担当者となったこともあり、これまで以上に「教育」というものを考えさせられた1年でした。実際に新人研修期間は、とにかく自分で思う通りにやってみたのですが、本当にこれでよかったのかという思いもあり、「教育」というものをしっかりと学んでみようと思い、こんな書籍を読みました。

教育(インストラクション)に関わる事柄が綺麗にまとまっていて、しかもより進んだ学習への道筋も「参考文献」として提示してくれていて、非常に良かったです。今後はその参考文献を中心に、より理解を深め、実践していきたいと思っています。

 

その他システム開発系

  • データベース・リファクタリング
    データベース・リファクタリング
    まだ読んでいる途中ですが、プログラムのリファクタリングと同じように、データベースの「振る舞いを変えずに構造を変える」方法について述べた書籍です。「ピアソン」の本なので、あえなく絶版となってしまっていますが、こんな動きもありますし今後の復活を願ってやみません。
  • Pro Git
    VCSのGitについて、概念から中身までざっと説明した書籍。しかも無料で読める第一資料です。
  • 実践 F# 関数型プログラミング入門

    こちらもまだ読んでいる途中です。一からF#を学ぶなら、今のところこの本以外の選択肢は無いんじゃないでしょうか?写経しながらボチボチ進めています。

 

こうやってまとめてみると、案外読んでいるものですね。来年も技術者として、常にインプットとアウトプットを心がけていくつもりです。

書籍:10日で覚えるjQuery入門教室

10日でおぼえるjQuery入門教室 第2版

http://www.seshop.com/product/detail/16251/

 

最初からこうして教えてほしかった!サクサク学べる「動き」と「仕掛け」

jQueryは、HTML5ベースのWebサイトやスマートフォンサイトの制作に欠くことのできない、JavaScriptライブラリの定番として、Web制作者からプログラマまで幅広く活用されています。

本書は、jQueryを使いこなせるようになるための学習書です。仕組みから、プラグインの使い方、イベントの実装とカスタマイズの方法まで、わかりやすく丁寧に解説しています。Web制作の現場でよく使うセレクターやメソッドを厳選しているので、必要なところを効率よく学ぶことができます。また、手を動かしながら学んでいけるので、動きのあるリッチなUIの作り方が簡単に身に付きます。HTMLとCSSはわかるけどjQueryは苦手という人にもおすすめです。

 

jQueryを体系立てて学んだことがなかったため、読んでみました。(WINGSプロジェクト様献本御礼!)

jQueryの一番の「キモ」は「セレクター」だと思うのですが、様々なパターンについてしっかりと解説されていて、しかも手を動かしながら学ぶことができるので、非常にわかりやすかったです。特に「次の要素」などのセレクターがあることは私は知りませんでした。あまりに凝ったセレクターは可読性を損なうとは思いますが、効果的に対象要素を特定するためにはその理解は不可欠なので、手駒が増えたことは良かったです。

また、AJAX機能についても、get、getJSONメソッドについて説明されています。そして、自サイトのWeb APIまたはJSONPに対応したWeb APIを叩くための、基本的な知識も得られるようになっていました。昨今はAJAXは当たり前になっていますので、その辺をサポートしていることは非常に好ましいと思いました。

ただ、サーバーサイド処理との連携を説明するためにPHPを使うため、別途XAMPPをインストールしないといけないのには注意が必要です。個人的にPHPにはなじみがないので、ちょっと面食らったのは事実です。

あと気になったのは、LESSON38などのある程度複雑なコードになると、紙面の都合なのかマジックナンバーがコードにべた書きされていることです。もちろん本文で補足はされているのですが、ちょっとコードだけ読むとわかりづらいかなーと思いました。

とはいえ、全体を通しては非常によくまとまっていますので、初学者はもちろん、簡易リファレンスとして中級車にもお勧めできると思います。

 

なお、1箇所おそらく第1版からの修正漏れだと思いますが、「onメソッド」と書くべきところが「bindメソッド」になっていました(p.178)。こちらは翔泳社のQ&Aページから指摘済みです。

JavaScriptライブラリ実践活用[厳選111]のKnockout、QUnit分がBuild Insiderに転載されました

 

共著書「JavaScriptライブラリ実践活用[厳選111]」の一部の記事が、Build Insiderへ転載されています。

 

書籍転載:JavaScriptライブラリ実践活用[厳選111]

 

その中の、Knockout、QUnitについて、先日転載されました。

 

 

フィードバック、お待ちしております。

JavaScriptライブラリ実践活用[厳選111]のBackbone.js分がBuild Insiderに転載されました

共著書「JavaScriptライブラリ実践活用[厳選111]」の一部の記事が、Build Insiderへ転載されています。

 

書籍転載:JavaScriptライブラリ実践活用[厳選111]

 

その中で、まず拙稿のBackbone.jsについての3つが公開されました。

 

 

是非ご覧いただき、内容についてのフィードバック、お待ちしております!

書籍:JavaScriptライブラリ実践活用[厳選111] 3/20発売

JavaScriptライブラリ実践活用[厳選111]:書籍案内|技術評論社

[表紙]JavaScriptライブラリ実践活用[厳選111]

 

昨年末くらいからずーっとやっていた原稿がついに本となり出版されます。さまざまなライブラリの111もの実践サンプル、解説がまとめられた本です。

私はBackbone.js、Knockout、linq.js、RsJS、SNBinder、Underscore.js、Jasmine、JSMockito、QUnitの解説を担当しました。中でもlinq.jsは諸説初掲載なんじゃなかろうかと。もちろんライブラリの使い方だけでなく、Backbone.jsのMVC、KnockoutのMVVM、linq.jsのEnumerable、RxJSのObserver、Observableといった、基本的な概念も解説してあります。

 

JavaScriptはライブラリ乱立状態ではありますが、その選定の一助となれば幸いです。

 

あわせて読みたい