12年かけてIT技術記事を100本書いたよ

会社でアドベントカレンダーを書くことになり、ネタを考えていたところ、Webで書いた記事が100本を超えていることに気づきました。

「あー、12年もかけて100本も書いたんだなー」ということでざっくり振り返ってみました。

印象に残っている記事

たくさん書きましたが5本ほどピックアップしてみました。

好きなことをアピールできた「アジャイルサムライ」

www.infoq.com

こういうレポート系は滅多に書かないのですが、自分のアジャイルへの熱い思いがひしひしとした入っていて、感慨深いものがあります。 日本ではアジャイルが流行らないのかなぁと残念に思った時期もあり、最近普通になってきたことが嬉しい限りです。

エンジニアとの新しい出会いがあったよ「Seasar.NET」

codezine.jp

記事自体書くのも大変でしたし、当時ブームだったDIについて書き、理解できて楽しかったという思い出があります。 記事を読んだ当時のリーダーの杉本さんに誘っていただき、Seasar.NETのコミッタになり、Seasar界隈のいろいろな人な出会いがあったのが懐かしいです。

メディアの立ち上げに関われて嬉しい「log4net

codezine.jp

Webメディアの「CodeZine」が2005年に始まったときに書いた記事です。この記事の番号(URL)は71番ですが、最近は1万番を超えていて、 感慨深いものがあります。 立ち上げ当時は翔泳社さんにこの記事を結構プッシュしてもらえたことが懐かしいです。

うまくかけた& 読まれてる「Visual Studio & GIT」

codezine.jp

自分がGitを勉強したいなぁーという理由で書いたのですが、VisualStudioをクライアント、VSTSのGITをサーバとした、チュートリアルがいい感じで一筆書き(重複なく、説明が前後しない)できた満足できる記事でした。 うまくかけた記事のPVがいいかというと全くそんなことは無いのですが、この記事はPVもまあまあ良かったので、嬉しい限りでした。 そのうちVS2017版を書きたいとは思いつつ、結構たいへんなので、そのうち・・・

共著したよ「@IT記事など」

最近はほとんどしてないですが、7本ほど、同僚と執筆しています。 執筆を勧めた方が今も書いていたりするとなんとなく嬉しい気持ちになります。 ちなみに当時はJavaがすごい盛り上がっている時代で、その時の@ITのJavaTipsにかけるなんて嬉しいーという記憶がありました。

なぜ100本も書いたのか

今の仕事と直結しない、将来的に重要な技術を深く学ぶためかもしれないです。例えば今書いているIDDD連載がそのひとつです。DDD(ドメイン駆動設計)が重要な技術で、それを理解し、わかりやすく周りの人に伝えたいという思いがあります。

codezine.jp

今の仕事に直結するビジネス書や技術書は必要に迫られて読みますが、今すぐ追わなくても良い主要技術や最新技術やきっかけがないと理解は困難です。深く理解するためにはアウトプットすることが一番だと思っています。アウトプットはブログでも良いのですが、性格的に締切があって多くの人に見てもらう商用記事のほうがあっているようです。 また、自分がどういう技術が好きかということをアピールすることは、エンジニアとして生きやすくなります。自分の熱い技術について自己開示することは、素敵な仲間を集めるときにも有効に働きます。同じ関心がある人と話すことは、理解を深めたりモチベーションを維持するために有効に働きます。

mayonez.jp

記事を書きたい方は

ちなみに執筆テクニックを身につけたい方は、身近に執筆経験者がいれば、その方に相談してみると良いかと思います。 また、私が参加しているWINGSプロジェクトのようなIT執筆を得意とするプロジェクトもありますので、そういうチームに参加して、執筆をしてみるのも良いかと思います(山田さんいつもありがとうございます)。

www.wings.msn.to

正直、執筆を続けることは大変なのですが、書かなかったら書かなかったらで後悔するので、仕事に支障ない限りで今後も地道に書き続けていけたらと思っています。 執筆に興味をもたれた方は、執筆の世界に踏み込んでみてはいかがでしょうか。

会社のアドベントカレンダーの記事

ちなみに冒頭で書いたアドベントカレンダーの記事はこちらになります。よろしければ、こちらもご覧くださいませ。

blog.nextscape.net

過去記事インデックス

ご参考まで、過去のWeb記事一覧です。

www.buildinsider.net www.infoq.com www.infoq.com www.infoq.com www.infoq.com www.infoq.com http://technet.microsoft.com/ja-jp/sqlserver/sql_katsuyo.aspx http://technet.microsoft.com/ja-jp/sqlserver/sql_katsuyo08.aspx http://technet.microsoft.com/ja-jp/sqlserver/sql_katsuyo10.aspx

codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp codezine.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp news.mynavi.jp

Strutsベースのアプリケーション環境を用意(AppFuse):JavaTips 〜Apache/Jakarta編 - @IT

Antでwarファイルを作成する:JavaTips 〜Apache/Jakarta編 - @IT

MergeDocでEclipseのポップアップ表示を日本語化する:JavaTips 〜Eclipse活用編 - @IT

Eclipse 3.0のインストールと日本語化を行う:JavaTips 〜Eclipse活用編 - @IT

Strutsでコンフィグレーションファイルを分割する:JavaTips 〜Apache/Jakarta編 - @IT

Antの活用(ファイル操作):JavaTips 〜Apache/Jakarta編 - @IT

Strutsのプラグインを作る:JavaTips 〜Apache/Jakarta編 - @IT

Antの活用(ファイルセットの利用):JavaTips 〜Apache/Jakarta編 - @IT

POIを使用してJavaからExcelデータを読み込む:JavaTips 〜Apache/Jakarta編 - @IT

Antでアプリケーションのデプロイ作業を効率化する:JavaTips 〜Apache/Jakarta編 - @IT

Strutsの設定ファイルから仕様書を生成する:JavaTips 〜Apache/Jakarta編 - @IT

POIを使用してExcelの書式を設定する:JavaTips 〜Apache/Jakarta編 - @IT

EclipseでライブラリとJavadocを関連付ける:JavaTips 〜Eclipse活用編 - @IT

POIを使用してJavaからExcel出力を行う:JavaTips 〜Apache/Jakarta編 - @IT

Eclipseでライブラリとソースコードを関連付ける:JavaTips 〜Eclipse活用編 - @IT

Eclipseのソース管理にVisual SourceSafeを活用:JavaTips 〜Eclipse活用編 - @IT

Eclipseのソース管理にVisual SourceSafeを活用:JavaTips 〜Eclipse活用編 - @IT

EclipseのCVS機能で排他的な開発を行う:JavaTips 〜Eclipse活用編 - @IT

Azure SQL DatabaseのbacpacでSQL Serverインポートエラー(CREATE MASTER KEY失敗 : SQL72045)

Azure SQL Databaseからエクスポートして生成したbacpacファイルを、ローカルのSQL Server(2012,2014,2016など)にSSMSでインポートする場合、以下のエラーがでることがあります。

パッケージをインポートできませんでした。

Error SQL72045: スクリプトの実行エラーです。実行されたスクリプト:

CREATE MASTER KEY;

内容

Azure SQL Database側で、マスターキーが設定されています。

回避策は以下のMSDNブログに書いている通りです。

Exported database from Azure SQL failed to be imported to Azure SQL or to local SQL Server – Azure SQL Database Support

原因

AuditやTDE(透過的暗号化)を使うときマスターキーが使用されます。Azure SQL Databaseではパスワードがないマスターキーの作成が可能ですが、ローカルのSQL Serverではマスターキーのパスワード設定が必要です。

回避策

選択肢1 (設定変更)

  • Azureでエクスポートする前に、エクスポート元の既存DBのマスターキーを変更する。

選択肢2(PowerShellパッチ)

  • PowerShellファイルをダウンロードして「RemoveMasterKey.ps1 -bacpacPath “C:¥BacPacs¥Test.bacpac"」というコマンドを実行→拡張子にpatchが付与されたファイルが追加されます。このファイルを使ってインポートする。
  • PowerShellの中では、以下の処理を実施している
    • スキーマやセキュリティ情報を含むmodel.xmlからマスターキーオブジェクト(<Element Type=“SqlMasterKey” />)と資格証明オブジェクト(SqlDatabaseCredential)を削除
    • model.xmlを変更していないかを示すチェックサムがあるので、計算して、Origin.xmlに記載

選択肢3(手動パッチ)

  • 選択肢2がうまくいかない場合のため、手動によるBacpacの編集を解説しています。
    • 手動でZIP(bacpac)を解凍し、model.xmlとOrigin.xmlを編集し、再度ZIP圧縮します。
    • 詳細の説明はこちら→ Editing a .bacpac file – Azure SQL Database Support 。ここにはOrigin.xmlに保存するハッシュを計算するps1もあり。
    • トラブルシューティングのための説明となります。DBファイルサイズが大きい場合などに発生しうるのかもしれません。
    • なお、model.xmlなどのファイル名の大文字小文字は重要です。
    • 設定そのものとDataフォルダの中身(BCP用データ)に関係はないため、Dataフォルダを軽いものだけにしてテストをすると良いと思います。Windows標準のZIPではだめでしたが、別のZIP圧縮ツールではうまく行ったということもありました。

選択肢2が楽で良いのですが、まれに選択肢3を使わなければ行けない場合がありました。

参考

1日で基本が身に付く! JavaScript超入門


たった1日で基本が身に付く!  JavaScript 超入門

たった1日で基本が身に付く! JavaScript 超入門

「たった1日で基本が身に付く! JavaScript超入門」を読みました。

 このエントリーは、WINGSプロジェクトのレビュアーに応募し献本してもらいましたので、その書評となります。

 

この本の良いところは、効率よくJavaScriptの基本を学べるところではないかと思います。

JavaScriptは、歴史も長く、関連するオープンソースも多数あり、情報量が非常に多い言語です。

書籍のメイン部分については、素のJavaScriptを使って、環境構築方法や構文を学べます。

そして、HTMLの操作や、イベントといったつまずきがちな部分を1章ずつ取って、わかりやすく説明しています。

さらに、WebAPIやJSONについて説明しつつ、実際にWebプログラミングを書いてみて動的なサイトを作ってみることができます。

最後には、W3Schoolsやjsdo.itといったサンプルサイトや、JQueryの概要について紹介しています。

JavaScriptに興味ある人が最初に手に取る一冊として最適ではないかと思いました。

 

 

「たった1日で基本が身に付く! HTML&CSS 超入門」を読みました

たった1日で基本が身に付く!  HTML&CSS 超入門

たった1日で基本が身に付く! HTML&CSS 超入門

「たった1日で基本が身に付く! HTML&CSS 超入門」を読みました。著者の方は、スクールの講師としてWebを教えるなどされていることもあり、大変読みやすい一冊でした。

この書籍の良さは、HTML/Web技術の変遷を踏まえつつ、抑えるべきポイントをシンプルに説明していることだと思います。

このエントリーは、WINGSプロジェクトのレビュアーに応募し献本してもらいましたので、その書評となります。

HTML関連(前半)

HTML4.01、XHTML1.0、HTML5が存在する中で、違いを理解しつつ要点を学ぶことができます。

  • サンプルは、主に最新のHTML5が主体で解説されています。ただ、HTML4のときは△△のように書いていたが、HTML5で○○のように書くという補足もあります。そのため、実際のWebサイトのHTMLを読んだときの理解も捗ります。
  • HTML構文の説明だけではなく、Web制作の流れや、ディレクションする上で必要な用語の解説も含まれています。また、divタグの使い所やid/classの使い分けなどの実践的なノウハウも書かれています。
  • さらにHTMLのフォームについても紹介しています。

CSS関連(後半)

HTML同様にCSSについても、わかっているようでわかっていない違いをうまく整理されています。

  • まず、子セレクタと子孫セレクタといったセレクタの種類と違いに関する説明を始めに行っています。
  • そして、デザイン崩れの調査時に理解するべきスタイルの継承について解説しています。親要素に指定したプロパティ値が子要素へと引き継がれる仕組みや、テキスト、リスト、テーブル関連以外の要素に対しても継承するinheritキーワードの解説をしています。
  • そして、スタイルの競合についても紹介しており、作成者スタイルシート>ユーザー(閲覧者)スタイルシート>ブラウザデフォルトの優先度を!importantにて上げる方法や、セレクタの詳細度、詳細度が同じ場合の場所による優先度(後勝ち)について紹介しています。
  • さらに、CSSとして重要な、ボックスモデルのcontent、height、width、padding、border、marginについて紹介し、色指定、テキスト、フォントについても紹介しています。
  • 実際に段組みレイアウト設定を用いて、固定レイアウト(px)と可変レイアウト(%)の違い、ブロックレベル要素(改行されて表示され親要素と同じ幅をもつh1-h6,p,table.ul,ol,dl,div)とインライン要素(横並びに配置でき、高さや上下マージンが指定できないa,em,img,span)などについて紹介しています。
  • またフロートレイアウトについても図を用いてわかりやすく解説しています。

最後に

  • 初心者向けとしてははもちろんですが、すでにHTMLやCSSの概要を把握しつつも、いま一つ理解が足りなかったり、人に教えることができないといったレベルアップを考えている方にもおすすめしたい一冊です。
  • HTMLやCSSを学びたいときに、分厚いリファレンス本を買ってもポイントが分からず使いこなせないことがあります。また初心者向けの本は簡単過ぎて得るものが無いことがあります。この本のバランスはとても良いため、知っている知識を体系的に理解するために最適な内容だと思いました。

よろしければ一度、読んでみてはいかがでしょうか。

macOS SierraでWindows PC風のキーバインド(ショートカット)を設定

問題

そろそろ安定しているから大丈夫だろうとMacBookAireの「OS X El Capitan」から「macOS Sierra」にアップグレードしたところ、他の方と同様にkarabinerが使えないという点でハマりました。

www.apple.com

私はWindowsでの作業も多いので、PC風のキーバインドにしています。(Cntl+Cでコピーだったり、Cntl+Aで全選択だったり、また、FN+左でHome、FN+右でEndなど。)

対策

対策は他の方と同様で、Hammerspoon、キーバインドの変更となりました。

Hammerspoon

www.hammerspoon.org

Hammerspoonは、macOS の操作を自動化できるツールです。 Luaという記法で記載します。

Lua - Wikipedia

Init.luaを次のように記載します。

HammerspoonのConfig (Init.lua)
hs.hotkey.bind({"ctrl"}, "c", nil, function() hs.eventtap.keyStroke({"cmd"}, "c") end) 
hs.hotkey.bind({"ctrl"}, "v", nil, function() hs.eventtap.keyStroke({"cmd"}, "v") end) 
hs.hotkey.bind({"ctrl"}, "w", nil, function() hs.eventtap.keyStroke({"cmd"}, "w") end) 
hs.hotkey.bind({"ctrl"}, "q", nil, function() hs.eventtap.keyStroke({"cmd"}, "q") end) 
hs.hotkey.bind({"ctrl"}, "f", nil, function() hs.eventtap.keyStroke({"cmd"}, "f") end) 
hs.hotkey.bind({"ctrl"}, "a", nil, function() hs.eventtap.keyStroke({"cmd"}, "a") end) 
hs.hotkey.bind({"ctrl"}, "x", nil, function() hs.eventtap.keyStroke({"cmd"}, "x") end) 
hs.hotkey.bind({"ctrl"}, "z", nil, function() hs.eventtap.keyStroke({"cmd"}, "z") end) 
hs.hotkey.bind({"ctrl"}, "s", nil, function() hs.eventtap.keyStroke({"cmd"}, "s") end) 

「コントロール+C」を「コマンド+C」に変換したりしてます。

DefaultKeyBinding.dictで、キーバインド変更

続けて、MacOSキーバインドを変更して、Fnキーと矢印キーの調整します。

qiita.com

DefaultKeyBinding.dictというファイルを作って、キーバインドを設定します。

 mkdir -p ~/Library/KeyBindings
 cd ~/Library/KeyBindings
 touch DefaultKeyBinding.dict
 open -a TextEdit DefaultKeyBinding.dict

エディタが開いたら次のように記述(UTF-8)。

{
     /* home */
    "\UF729"  = "moveToBeginningOfLine:";
    "$\UF729" = "moveToBeginningOfLineAndModifySelection:";

    /* end */
    "\UF72B"  = "moveToEndOfLine:";
    "$\UF72B" = "moveToEndOfLineAndModifySelection:";

    /* page up/down */
    "\UF72C"  = "pageUp:";
    "\UF72D"  = "pageDown:";
}

MACを再起動で反映されます。

だいたい動いたので、しばらくはこれで行こうかと思います。

今後は、karabiner elementsの発展に期待です。

参考

https://groups.google.com/forum/#!topic/osx-karabiner/xkh0oZfY7pk slongwell.github.io

aoki1210.hatenablog.jp

Surfece4キーボードでのAutoHotKey設定メモ(多少 Mac風)

Surface4を快適に使うための個人的なメモ。 AutoHotKeyの設定。

autohotkey.com

;; キーの凡例
;Shift +   Shift
;Ctrl  ^   Control (Ctrl)
;Alt   !   Alt
;Win   #    

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Windows10の仮想デスクトップの移動
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CTL+右矢印で次のウィンドウ
^Right::send {LWin down}{LCtrl down}{Right}{LWin up}{LCtrl up}
;; CTL+左矢印で前のウィンドウ
^Left::send {LWin down}{LCtrl down}{Left}{LWin up}{LCtrl up}

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; タッチパッドの4本指スワイプで仮想デスクトップの右と左を移動
;; https://www.wptutor.io/misc/windows-virtual-desktop-swipe-gestures
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

swipeDirection := ""

^!Tab::
  swipeDirection := "L"
return

^!+Tab::
  swipeDirection := "R"
return

$Enter::
    if (not swipeDirection) {
        SendInput {Enter}
  } else if (swipeDirection = "L") {
        SendInput ^#{Left}
  } else if (swipeDirection = "R") {
        SendInput ^#{Right}
    }
  swipeDirection := ""
return



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Surface4 Proキーボードでなくなった右FNの代わりに、アプリケーションキーを使用
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; あんまりつかわないので、アプリケーションキー(右クリックメニュー)単体は無効
AppsKey::
AppsKey Up::
  return

; 「FN+←」の代わりに「アプリケーションキー+← 」でHome
AppsKey & Right::
If GetKeyState("shift")
   Send +{End}
else
   Send {End}
Return

; 「FN+→」の代わりに「アプリケーションキー+→ 」でEnd
AppsKey & Left::
If GetKeyState("shift")
    Send, +{Home}
else
    Send, {Home}
Return

;アプリケーションキー+↑でPageUp
AppsKey & Up::Send, {PgUp}
;アプリケーションキー+↓でPageDown
AppsKey & Down::Send, {PgDn}


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; その他
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;(Mac風)アプリケーションキーとBackSpaceでデリートボタン
AppsKey & Backspace::Send, {Delete}

;; CTL+Hでバックスペース、CTL+DでDELETE、CTL+Nで下、CTL+Pで上
^h::Send {Backspace}
^d::Send {Delete}
^n::Send {Down}
^p::Send {Up}

;; CTL SPACEで、ALT TAB
LControl & Space::AltTab


;;;;執筆の時だけ使用
;^f::Send {Right}
;^b::Send {Left}
;^a::Send {Home}
;^e::Send {End}


「JavaScript本格入門」の改定新版を読みました

JavaScript本格入門」の改定新版を読みました。6年前の発売以来、3万部発行された書籍の改訂版とのことです。

このエントリーは、WINGSプロジェクトの「[改定新版] JavaScript本格入門」のレビュアーに応募し献本してもらいましたので、その書評となります。

aoki1210.hatenablog.jp

上記の過去エントリーでも改定前の書籍を紹介していますが、JavaScriptをしっかり学ぶ上で非常におすすめの一冊となっています。

というのも、JavaScript深く学ぼうとした場合、構文にしか触れていない入門書か、ディープすぎる分厚い専門書と両極端な書籍が多い状態でした。

この書籍の良いところは、基本的な構文なども含まれている上、実際に本格開発をする場合に必要な情報も含まれていることが挙げられます。 「本格入門」という言葉どおり、入門書と専門書の両方が取り込まれた、非常にバランスの良い本だと思います。

改訂新版JavaScript本格入門 ~モダンスタイルによる基礎から現場での応用まで:書籍案内|技術評論社 にある目次を見てみるとわかりますが、基本構文、ブラウザの開発者ツール、ライブラリ、関数、スコープ、DOM、デバッグAjax、Promise、Web Worker、ユニットテスト(Jasmine)、ビルドツール(Grunt)、コーディング規約、といった幅広い内容を網羅しています。

↓書籍の目次(参考)

  • Chapter 1 イントロダクション
  • Chapter 2 基本的な書き方を身につける
    • 2.1 JavaScriptの基本的な記法
    • 2.2 変数/定数
    • 2.3 データ型
    • 2.4 演算子
    • 2.5 制御構文
  • Chapter 3 基本データを操作する - 組み込みオブジェクト -
    • 3.1 オブジェクトとは
    • 3.2 基本データを扱うためのオブジェクト
    • 3.3 値の集合を管理/操作する - Array/Map/Setオブジェクト -
    • 3.4 日付/時刻データを操作する - Dateオブジェクト -
    • 3.5 正規表現で文字を自在に操作する - RegExpオブジェクト -
    • 3.6 すべてのオブジェクトのひな形 - Objectオブジェクト -
    • 3.7 JavaScriptプログラムでよく利用する機能を提供する - Globalオブジェクト -
  • Chapter 4 くり返し利用するコードを1箇所にまとめる - 関数 -
    • 4.1 関数とは
    • 4.2 関数定義における4つの注意点
    • 4.3 変数はどの場所から参照できるか - スコープ -
    • 4.4 引数のさまざまな記法
    • 4.5 ES2015における引数の記法
    • 4.6 関数呼び出しと戻り値
    • 4.7 高度な関数のテーマ
  • Chapter 5 大規模開発でも通用する書き方を身につける - オブジェクト指向構文 -
  • Chapter 6 HTMLやXMLの文書を操作する - DOM(Document Object Model) -
    • 6.1 DOMの基本を押さえる
    • 6.2 クライアントサイドJavaScriptの前提知識
    • 6.3 属性値やテキストを取得/設定する
    • 6.4 フォーム要素にアクセスする
    • 6.5 ノードを追加/置換/削除する
    • 6.6 JavaScriptからスタイルシートを操作する
    • 6.7 より高度なイベント処理
  • Chapter 7 クライアントサイドJavaScript開発を極める
    • 7.1 ブラウザーオブジェクトで知っておきたい基本機能
    • 7.2 デバッグ情報を出力する - Consoleオブジェクト -
    • 7.3 ユーザーデータを保存する - Storageオブジェクト -
    • 7.4 サーバー連携でリッチなUIを実装する - Ajax -
    • 7.5 非同期処理を簡単に表現する - Promiseオブジェクト -
    • 7.6 バックグラウンドでJavaScriptのコードを実行する - Web Worker -
  • Chapter 8 現場で避けて通れない応用知識
    • 8.1 単体テスト - Jasmine -
    • 8.2 ドキュメンテーションコメントでコードの内容をわかりやすくする - JSDoc -
    • 8.3 ビルドツールで定型作業を自動化する - Grunt -
    • 8.4 今すぐECMAScript2015を実践活用したい - Babel -
    • 8.5 読みやすく保守しやすいコードを書く - コーディング規約 -

関数やオブジェクト指向の部分では、他の言語と異なる特徴をわかりやすく書いているため、JavaScriptの特性について理解しやすくなっています。また、最新のECMA Script2015にも対応したということで、最近の方向性についても理解できると思います。

最近のITエンジニアにとってJavaScriptは必須の知識となりつつありますが、この本は独学でも新人教育のような講義スタイルでも役立つ素敵な教材だと思います。