無限大な夢のあと

テニスとアニメが大好きな厨二病SEのブログ

【書評】HTML5とApache Cordovaで始めるハイブリッドアプリ開発 ( @yyamada ) 

WINGSプロジェクトの書籍レビュアーに応募し、献本してもらったので、書評を書きました。
今回は表題にある通り「HTML5Apache Cordovaで始めるハイブリッドアプリ開発」の書評となります。

HTML5とApache Cordovaで始めるハイブリッドアプリ開発 (CodeZine BOOKS)

HTML5とApache Cordovaで始めるハイブリッドアプリ開発 (CodeZine BOOKS)


私のモバイルアプリ開発のバックグラウンドを説明しますと、業務ではiOSでネイティブアプリの開発を行なっており、Androidの開発経験は業務ではまだありません。
JavaScriptのレベル感としては業務で少し触ったりする程度です。


本題のレビューをさせていただきます。

実際に起動ができるまで

開発環境

node -v
v8.7.0
  • npm
npm -v
5.4.2
  • jdkのバージョン
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

AndroidでBuildできるようになるまで

Androidではandroidコマンドが非推奨になった影響などで書籍に書いている方法ではうまく行きません。
私は以下のアプローチで解決できました。

brew tap caskroom/cask
brew cask install android-platform-tools

具体的には以下のandroidコマンドのインストールで失敗します。

 brew install android

こちらに関しては、

brew tap caskroom/cask
brew cask install android-platform-tools

で代わりに環境は構築できました。
また、androidコマンドを使おうとすると、以下の表示がされて、非推奨になっていることがわかりました。

*************************************************************************
The "android" command is deprecated.
For manual SDK, AVD, and project management, please use Android Studio.
For command-line tools, use tools/bin/sdkmanager and tools/bin/avdmanager
*************************************************************************
Invalid or unsupported command ""

Supported commands are:
android list target
android list avd
android list device
android create avd
android move avd
android delete avd
android list sdk
android update sdk

Androidで起動できるまで

Androidを実行できるまでもandroidコマンドが非推奨の影響か、プラットフォームを追加する際にバージョン指定が必要になります。

cordova platform add android@6.2.3
cordova emulate android

また、今回の検証マシンでは元々Androidエミュレーターのパスを通したりして検証しましたが、ゼロから動かす際はここも調整が必要かもしれません。

実際にサンプルを動かして

Android自体は実機を持っていなかったのですが、iOSは実機が持っているので、こちらで実行したりしてサンプルを確認しました。
実機での起動は少し手順が必要ですが、そちらを終えるときちんと起動できました。
ただ、サンプル自体はそのまま動かず、plugin installが必要です。
また、全てのサンプルを動かしたわけではないですが、最初のcameraサンプル以外は動かないものが多かった印象です。
自分自身のライブラリの環境が最新であることも影響あると思います。

2017-10-15 18:20:43.793746+0900 Cdv4[431:36008] ERROR: Error: Can't find variable: device
2017-10-15 18:20:59.127256+0900 Cdv4[431:36008] ERROR: Error: Can't find variable: Connection

書籍を読んでみて

対象

書籍名にある通り、HTML+CSS+JavaScriptでWeb画面を作成できる人にとって、ハイブリッドアプリ開発の1歩目を学べる書籍だと思いました。
React-nativeなどだと、Reactを学ぶという過程をあるとは思いますが、今回のサンプルではそれも必要ではないので、Angularを使ってはいましたが、より入門者向けだと思いました。

全体的な感想

Cordova自体は初めて触ったのですが、Webと同じようなコードでそれぞれネイティブアプリを作成できるのはすごいなぁと思いました。
目次について、公式ページから引用させていただきます。
HTML5とApache Cordovaで始めるハイブリッドアプリ開発 - WINGS

第1章 Apache Cordovaで本格スマホアプリに挑戦しよう
第2章 Apache Cordovaでスマホアプリ開発を始める前の環境設定
第3章 カメラプラグインを使って、Apache Cordovaのサンプルアプリを作ってみよう
第4章 基本のプラグインを使ってハイブリッドアプリを作ってみよう
第5章 デバイスのファイルにアクセスするプラグインを使おう
第6章 ファイルを操作するためのプラグインで、テキストや画像をアプリ内に保存する
第7章 サーバへのファイルアップロード、ダウンロードを便利にするプラグインを使う
第8章 オーディオファイルの再生を便利にするプラグインを使う
第9章 マイクやカメラを使って音声・写真・ビデオデータを取得するプラグインを使う
第10章 カメラとアルバムから写真データを取得するプラグインを使う
第11章 連絡先データにアクセスするプラグインを使う
第12章 カレンダーの予定を管理するプラグインを使う
第13章 カレンダーを管理するプラグインを使って、予定の追加と削除を行う
第14章 Cordovaでアプリを公開するためのビルド方法をカスタマイズしよう
付録A プラグイン・参考資料

また、実際に作成するアプリで使いたいような機能の土台が一通り揃っているイメージで、仮にCordova自体を使わない場合でもハイブリッドアプリを作るに当たって参考になる書籍だと思いました。

[iOS/Android対応] HTML5 ハイブリッドアプリ開発[実践]入門 (Software Design plus)

[iOS/Android対応] HTML5 ハイブリッドアプリ開発[実践]入門 (Software Design plus)

iOSDC Japan 2017へスピーカーとして参加してきました #iosdc

iosdc.jp
表題の通り、前夜祭も合わせると3日間に及びiOSのお祭りに参加してきました!!!
色々バタバタしていて、2週間遅れの参加ブログになります。

スピーカーとして参加しての感想

今回、業務でつまづいた点をCFPとして提出したところ、採用していただき、発表してきました。

www.slideshare.net

資料作成について

前回のScala関西での発表の失敗から、同僚にも厳しめにレビューしていただき、以下の点などを工夫しました。

  • アニGifを使って、紹介したい機能が伝わるように改善しました
  • コードを見やすくするように、スクショを使った
  • 全体的にとにかく文章を少なくした

発表を行って

当日の発表は、参加者も100人越えで、笑いも取れて、質問も出たりなどして今までの発表の中では一番成功したかと思います。
終了後には、色々な方も声をかけて頂いたりして、嬉しかったです。

また、初日の前夜祭の後のスピーカーディナーというスピーカー限定の懇親会では、他の企業の方の採用している技術(GraphQL)などについてもお話を聞けたりして、交流を深めることができました。

感想

総じて、カンファレンスに参加する時は、スピーカーとして参加する方が当事者としてお祭りを盛り上げている感もあり、準備が相当大変ではありますが、メリットしかないと思いました。

参加者としての感想

参加したセッション

また、参加者側としては、参加できなかった1日目の前夜祭、2日目の自分の発表前後以外では、以下のセッションを聞かせていただきました。

1日目

資料を一生懸命作っておりました!!!!

2日目
  • Swift4.0対応しようとしたら大変な目に遭った話

speakerdeck.com

speakerdeck.com

  • LT

資料は以下のまとめページからご覧ください。
iOSDC 2017 まとめ - Qiita

3日目
  • Human Interface Guidlinesから滲み出る限界感を考える

speakerdeck.com

  • iOSエンジニアのためのNLP基礎

speakerdeck.com

speakerdeck.com

speakerdeck.com

  • 実践CloudKit

資料のリンクぎれ?

  • LT

資料は以下のまとめページからご覧ください。
iOSDC 2017 まとめ - Qiita

参加したセッション選び

Reactiveなども興味があったのですが、使ったことないAPIの話やUI、機械学習系の話を中心に聞きました。
また、聞きたいセッションが被っていたりして、聞けなかったものも多く、後で資料をゆっくり見ようと思っていましたがまだ見れていないです。。
ビデオなどがアップロードされたら、ぜひ見てみようかと思います。
また、LTは全て見たのですが、どれも笑いが取れる仕組みがあり面白く、普通のセッションよりハードル高いのではないかと思ったくらいでした。
600人くらいの前で発表するのは緊張しそうですが、1度は経験してみたいです。

感想

懇親会も全て参加したのですが、自分達が業務/プライベートで作っているアプリを紹介してくれたり、色々情報交換できて楽しかったです。
また、スタッフさんの熱量もすごく、まさに文化祭に参加している感じでとても楽しかったです。
翌日がお休みだったということもあり、ゆっくり休めたのも満足度が高いです。

全体の感想

控えめに言っても最高でした!!!
次回もぜひスピーカー側で参加したいです。
スピーカーの皆様、スタッフの皆様、本当にありがとうございました!!

【書評】Angular アプリケーションプログラミング

今回もWINGSプロジェクト様( @yyamada )の書籍レビュアーに応募させていただき書評を書かせていただくことになりました。
WINGSプロジェクトの皆様、著者の山田様ありがとうございます。
今回は表題にもある以下の書籍を献本していただきましたので、こちらのレビューをさせていただきます。

Angularアプリケーションプログラミング

Angularアプリケーションプログラミング

ここからレビューとさせていただきます。

今回、Angularのバージョンが4になったことでどんなところが変わったのかをざっと見ようかと思ったのですが、文法的には多くは変わっておらず、既存実装のパフォーマンス向上が図られたと言う印象でした。

前回のAngular2のバージョンの書籍の際にもレビューをさせていただきました。
dke-msy-node.hatenablog.com

その書籍と比較した時大まかには流れは一緒ですが、以下の点に違いがある印象です。

  • フィルターという名前がパイプという名前に変わっていて、機能の説明量が増えた
  • 全般的に網羅性が高くなっており、前回なかった「モデル駆動型のフォーム」の説明などReactive的なトピックも取り扱っている
  • Typescriptの簡易リファレンスが追記された

今後、新規プロジェクトでAngular4を採用する際には、ぜひ活用させていただきたいと思いました。

大まかには前回の書籍レビューブログとの差分になりますので、そちらもご覧ください。

現時点でAngularを始める方にとっては、リファレンス的に購入をおすすめできるものだと思います。

Scala関西Summit 2017に参加しました! #scala_ks

関西のScalaの祭典、Scala関西Summit 2017に参加して来ました!
下記はスピーカー視点で失敗したなぁと思った内容をまとめているので、興味のある方はご覧ください。
dke-msy-node.hatenablog.com

こちらのブログは参加しましたブログ?で、他の方のセッションの話やスピーカーの方々と前泊した話、懇親会/2次会の話などをこちらにまとめます。

スピーカーの方々と前泊

弊社の河内さんが今回Scala関西Summit 2017に参加する肩に声をかけ有志でAirbnbで宿を取って前泊しました!
全部で17人も参加したすごい規模で、10名以上がスピーカーという豪華な顔ぶれでした。
1泊組と、2泊組に別れて宿を取り、12時くらいまではそれぞれが行き来するような感じでした。
全員ではないですが、いるメンバーだけで取った写真はこちら(よこなさんはちょうど遊びにきていました!)
f:id:noimpslmtbrk:20170911004254j:plain

ちなみにこの写真を取った後には全員集合し、資料の最終チェックやらをしつつ、お互いの色々な情報交換をした有意義な時間でした!
この日話題をかっさらったエフコードさんの関係者だらけだったので、みんなでお話を伺ったりもしました。
【プレスリリース】チーフアーキテクトとして中村学が入社、顧問に水島宏太氏・麻植泰輔氏が就任。プログラミング言語Scalaを主軸とする開発組織体制を強化。 – NEWS

また、この日に有志で行った亀寿司の美味しさが今でも忘れられません。
https://tabelog.com/osaka/A2701/A270101/27001919/
f:id:noimpslmtbrk:20170911010015j:plain
f:id:noimpslmtbrk:20170911010013j:plain
f:id:noimpslmtbrk:20170911010017j:plain

f:id:noimpslmtbrk:20170911010009j:plain

参加したセッションの話

私は以下のセッションに参加させていただきました。

  • 元インフラエンジニアがScalaを触ってつまづいたところ。
  • Scala and Akka apps on Kubernetes in ChatWork

speakerdeck.com

  • Scala の Functional Programming を支える技術

www.slideshare.net

  • Akka on RaspberryPi

www.slideshare.net

  • Scala on JVM をプロファイリングするツールの紹介

speakerdeck.com

  • Ladder of CQRS+ES

www.slideshare.net


個人的にDDDをやっている身としてCQRSはよく聞くのですが、実践するにあたってどんな苦労があるのかが伝わって来る「 Ladder of CQRS+ES」はすごく興味深かったです

CQRS自体はエリックさんのDDD本、実践DDDの方にも取り扱われていない内容です。

エリック・エヴァンスのドメイン駆動設計

エリック・エヴァンスのドメイン駆動設計

実践ドメイン駆動設計

実践ドメイン駆動設計

書籍的には以下で取り扱われているらしいです。

私自身がCQRS+イベントソーシングの理解度が低いので直接的に中身には触れませんが、それらを実装するにあたって、どんな苦労があって、どのようなアプローチを取っていったかがラダーを登っていくようにわかるという資料になります。
あとでじっくり読み直したい内容です。

懇親会の話

LTもあったりなど大いに盛り上がりました!
speakerdeck.com

www.slideshare.net

懇親会では、本当に色々な方とお話させていただき、とても勉強になりました!
割合、スピーカの方々とお話する割合が多かったのは、スピーカーだった+前泊の河内さんがつながりを作ってくださったおかげだと思います。
本当にありがとうございました。

懇親会の後の2次会の話

麻植さんが声をかけてくださり、有志(ただし、30人!)で2次会に行きました!
f:id:noimpslmtbrk:20170911004246j:plain

こちらでは私のテーブル付近ではスクラムの話で盛り上がり(私が暴走してただけ?)、他社さんではどのようにスクラムをやっているかのお話も聞くことができてとても良かったです。続きもお話したいので、ぜひ新宿GeekLoungeにみなさんお越しください!
shinjuku-geek-lounge.connpass.com

最後に

控えめに言ってもScala関西Summit 2017、最高でした!
来年もぜひ参加したいです!!!!!

Scala関西Summit 2017にスピーカーとして参加させて頂きました! #scala_ks

summit.scala-kansai.org
関西のScalaの祭典、Scala関西Summit 2017に参加して来ました!
また、今回はありがたいことにスピーカーとしての参加でもありました。

www.slideshare.net

東京に住んでる私が今回参加スピーカーとして参加させて頂いた経緯及びその結果についてお話したいと思います。
他の方のセッションの話やスピーカーの方々と前泊した話、懇親会/2次会の話は以下のブログにまとめました!
dke-msy-node.hatenablog.com

また。この文章は個人の見解であり、所属する組織の公式見解ではありませんのでご注意ください。

スピーカーに応募させて頂いた経緯

自分が現在所属しているセプテーニ・オリジナルが今回Scala関西Summit 2017のプラチナスポンサーをさせていただくということで、招待枠を頂けるので会社で交通費/宿泊費を負担するので、希望者のうち3人は参加可能という話がSlackで告知されました。

この交通費/宿泊費が会社負担ということが一つチャンスだと思いました。
自分自身の今年の目標として、個人・会社のブランディング/採用の促進のためにカンファレンスの発表を複数回行いアウトプットすることを掲げていて、Scalaでもどこかのタイミングで挑戦したいと思っていたからです。
Scalaの発表は今までのいろんな方の発表を今まで見てきていて敷居が高いと感じていたのですが、Scalaの大きなイベントはScalaMatsuriを除くとそう多くないので、まずは今回のチャンスでもあるScala関西2017へCFPを出してみようと思いました。
(さすがに自腹で関西まで遠征して発表するところまでは踏み切れていませんでした。。)

発表資料のテーマについて

いざCFPを出すとなった時にどのようなテーマで出すかについて、非常に悩みました。
JJUG CCC Spring 2017で「グラフデータベース入門」というテーマを採択していただき、発表させて頂きました。

www.slideshare.net

こちらはいくつかCFPを出した中でのいわゆるニッチ戦略を取ったもので、自分自身がR&Dプロジェクトでグラフデータベースの経験があったので他の方があまり経験がないテーマなので、もしかしたら採択されるかもしれないという想いを持っていました。
結果的に採択して頂き、発表はさせて頂いたのですが、自分自身の中で一つだけ疑問がありました。
個人や会社のブランディングのために発表はさせていただくのはわかるのですが、このテーマの発表で果たして発表は促進されるのだろうかと。
自社コミュニティの告知は行えはしましたが、そこからどれくらいコミュニティの勉強会への流入があったか。
また、発表のようなアウトプットを行うことで自分自身の技術力を高める目的もあったのですが、入門内容の紹介ということで現在高めたい技術であるScalaやSwiftのコーディングに直接関係ないものになるので、果たして今優先順位的に時間をかけるべきだったのかという想いもありました。
(もちろん発表させて頂いたことで、新人研修の時の講師だった方、インターン時代の友人、前職の後輩も観に来てくれてお話できたことや今回のScala関西Summit 2017で資料観ましたよーとお話してくれる方もいて、メリットは非常に大きかったです。)

そこで今回はScalaやSwiftのコーディングに直接関係あるもので、今回もニッチ戦略としてCFPにうまく採用されるようなテーマを考えた結果、
iOSエンジニアのためのScala入門(あるいはScalaエンジニアのためのSwift入門)」とすることを決めました。

もちろん、グラフデータベースにScalaを絡めるケース自体も考えたのですが、Scala自体の学びよりグラフデータベース側の学び中心となる割合が大きくなると思い、CFPを出すのは(記憶が正しければ)やめたはずです。

今回採用して頂けて本当にありがたかったです。
Scala関西Summit 2017のスタッフの方々、本当にありがとうございました。

今回の発表にあたって自分が解決したかった課題

いざCFPを採用して頂いて嬉しかったとともに、Scalaのカンファレンスで発表するにあたって、一つ自分自身の中で解決したい課題がありました。
その課題というのは、入門者向けセッションにおいて実際に参加している入門者を置き去りにしないことです。
(あくまでも個人の感じた範囲であり、事実とズレもあるかもしれませんし、もしに不快に思って頂いた方がいたら本当に申し訳ございません)

もちろんScalaのカンファレンスに参加するくらいなので、参加者としてもある程度プログラマーとして経験値があったり、趣味でScalaを書いていたりする人が参加するものかもしれないので、他の経験値で補うことができるので、そのような配慮は必要ないかもしれません。

ただ、他言語経験者でScala自体は触ったことはないけれど、勉強したいという方は一定数いるはずという想いもあり、そのような方でも置き去りにしないような形で発表できたら自分が参加者だったら聞きたいなと思い、作り始めました。

発表資料を作ってみて

一旦、仮で作成して社内練習会で発表したのですが、この発表で「ここだけは一番押さえて欲しいところはどこであるか」と聞かれた時に、自分自身としてはScala/Swift両言語をクイックツアー的に捉えてもらえるのが意図としてあったのを改めて自覚ができたので、そちらの方に梶を切って資料の修正を行いました。
(もしかしたら、この時点でもすでに内容は薄くなっていた可能性はあります。。)

ただ、入門者を置き去りにはしないコンセプトを作るにせよ、Scala自体の経験者でも学びがあるように作るにはどうすれば良いかも考えました。
ですが、コードの書いている時間がScala < Swiftで、Scalaの経験が少ないこともあり、途中でツッコミが起こりそうなトピック(Genericsなど)を取り扱うかを悩み、結果ツッコミが怖かったことと発表時間の関係で削っていた結果、現在の資料の形に落ち着きました。
その結果、クイックツアーで入門者を置き去りにはしないのですが、どちらかの言語を経験している方からすれば文法の比較の紹介に留まってしまう内容になりました。また、ツッコミが怖いところを落とした結果、プログラミング入門者向け近くまでの内容の薄さになってしまいました。

この時点で発表資料として、以下の問題があると自分の中では考えていました

  • 途中でツッコミが起こりそうなトピック(Genericsなど)を取り除いた結果、プログラミング入門者向け近くまでの内容の薄さになっていないか。
  • クイックツアーと言いつつも学べることに偏りがあり、聞く人側の視点で作れていないのではないか。
  • タイトルと発表資料の中身が乖離していないか。

実際に発表を行って

やはり発表したあとに、周りの聞いている方の反応的にやらかしてしまった感があったのですが、そのあとにScala関西Summit 2017のハッシュタグで、セッションを聞いていた方がコメントくださっているのを見て、自分自身の杞憂でなかったことを実感し、改めて発表の難しさを痛感しました。

今からテーマを変えられるなら、「他言語経験者がゼロから始めるScalaとSwift入門」と言ったテーマが適切な気がします。
個人的には、自分ができたこととして、ツッコミが怖くても取り扱いを行うべきだったと実感しています。
あと、完全にScalaエンジニアばかりが多い中で、iOSエンジニアのため~というテーマで書いていたものの、Swift、Scala両方の人にもわかるものという追求をしてしまったのもよくなかったです。。
(ただ、スタッフの方でiOSはそれなりにやっていて、Scala詳しくないという方は勉強になりましたと言って頂けて嬉しかったです!)

今後のアクション

今週の9/16(土)に、iOSDC JAPAN 2017で、「動画コンテンツにおいて、バックグラウンドの音声との制御でつまづいたところ」というテーマで発表します。
iosdc.jp

iosdc.jp

上記で発表するにあたり、以下を意識して今回の学びをぜひ活かしたいと思います。

  • 聞く側の視点を意識して作る(この発表を聞きにきてくれる人は何を期待しているのか)
  • ツッコミどころがある程度来ることを覚悟して資料を作る(他の人からのツッコミも新たな学びに繋がるので、逃げない)
  • タイトルから中身を乖離しすぎない(乖離しすぎる時は発表前にタイトルを変えるなどの対応を行う)

実際には次の発表は実際に業務でつまづいてどのように解決したかを発表する内容なので、今回とケースは違います。
ただ、上記の学びを活かせるはずなので、その上で堂々と発表したいと思います。
もし、ご参加される方はセッションを聞いてくださると嬉しいです。

という珍しくスピーカーの中の人の舞台裏?の話でした。
今後カンファレンスなどで発表したいと思う人が読んでくれて、少しでも参考になれば嬉しいです。

Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 (WEB+DB PRESS plus)

Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 (WEB+DB PRESS plus)

Scalaスケーラブルプログラミング第3版

Scalaスケーラブルプログラミング第3版

速習TypeScript 書評 -WINGSプロジェクト( @yyamada ) 

WINGSプロジェクトの書籍レビュアーに応募し、献本してもらったので、書評を書きました。

今回は表題にある通り「速習TypeScript」の書評となります。

速習TypeScript: altJSのデファクトスタンダートを素早く学ぶ! 速習シリーズ

速習TypeScript: altJSのデファクトスタンダートを素早く学ぶ! 速習シリーズ

前提として、私自身は業務ではJavaScript(ECMAScript2015)で開発は行っておりますが、TypeScriptでは行ったことはなく、2-3年前に軽く書籍を読んで遊びで書いたくらいです。
今回、業務で実際にTypeScriptを使っているモジュールがあるため、改めて勉強が必要だと思い、レビューアーに応募させて頂きました。

下記、レビュー内容となります。

一言で言うと、「速習TypeScript」という名がふさわしい、要点を抑えつつ100ページ超にコンパクトに内容がまとまっている書籍でした。
本書籍ではインストール方法や文法の紹介にとどまらず、以下のような点まで紹介がありました。

  • Playgroundはもちろんのこと、TypeSearchやVisual Studio Codeなどの便利なツールの紹介
  • コンパイルオプションなどを指定できるtsconfig.jsonの簡易リファレンス
  • アロー関数と関数リテラルのthisの扱いが異なるなどの実際に使ってみるとつまづくポイント

tsconfig.jsonの簡易リファレンスの一部 f:id:noimpslmtbrk:20170703181454p:plain


TypeScriptを使い始めるにあたって、ツールやコンパイルオプションなどの紹介だけでもかなり便利ですが、つまづきポイントまで記載があるのは細部にこだわっていてとても親切だと思いました。
また、書籍自体がコンパクトなのにも関わらず、文法の説明が細かい点もセールスポイントです。

全体的にECMAScript2015とTypeScriptとの比較から説明されていることが多く、Symbol型の存在などECMAScript2015についても理解が深まりました。
また、TypeScriptでは以下のような文法/機能が使えるというのが今回書籍を読んでみて自分にとって参考になった点です。

  • 変数内への文字列埋め込み
  • 文字列リテラル
  • タプル
  • 共用型
  • エイリアス
  • null非許容型
  • 型ガード
  • abstract
  • interface
  • 構造的部分型
  • 交差型

また、これらについては、普段業務で使っているScalaやSwiftで使っていないものについては名前だけではわからなかったのですが、
実際に具体例を用いて説明があるので、非常に理解の助けになりました。

まとめますと、この書籍一冊でTypeScript入門はもちろんのこと、TypeScriptを既に知っている方も知識の確認ができるので、非常にオススメです。

最後に、目次の内容も転載致します。

【目次】
Part1:はじめに
 JavaScriptの代替言語 - TypeScript
  主なaltJS
  TypeScriptの主な特徴
  (1)開発環境が豊富である
  (2)JavaScriptのスーパーセットである
  (3)ECMAScript 2015の仕様にいち早く準拠
 TypeScript学習の準備
  TypeScript Playground
  コマンドラインからの実行
  [1]Node.jsをインストールする
  [2]TypeScriptをインストールする
  [3]TypeScriptでコンパイルを実行する
 対象読者
Part2:変数/データ型
 変数 - let/var命令
  型を伴う変数宣言
  リテラル表現
  (1)数値リテラル
  (2)文字列リテラル
  データ型を明示的に変換する「型アサーション
  補足:var/let命令の違い
  (1)ブロックスコープに対応したlet命令
  (2)変数の重複を認めない
 定数を宣言する - const命令
 配列・連想配列・列挙体・タプル
  基本的な値の集合を表す - 配列
  補足:Arrayコンストラクターは使わない
  文字列キーで管理する配列 - 連想配列
  連想配列を利用する場合の注意
  関係する定数を束ねる列挙型
  複数の型が混在したタプル型
 高度な型
  共用型
  型エイリアス
  文字列リテラル
  null非許容型
  型定義ファイル
  [1]型定義ファイルをインストールする
  [2]インストールされた型定義ファイルを確認する
  [3]jQueryを含んだコードをコンパイルする
Part3:関数
 関数の基本構文
  function命令による関数の宣言
  関数リテラルによる宣言
  アロー関数(ラムダ式)による宣言
  アロー関数はthisを固定する
 関数のさまざまな表現
  省略可能な引数を宣言する
  引数にデフォルト値を設定する
  (1)任意引数のうしろに必須引数は配置できない
  (2)デフォルト値には式も指定できる
  (3)引数にundefinedを指定した場合
  不特定多数の引数を表現する - 可変長引数
 関数のオーバーロード
  引数/戻り値型としての共用型
  型ガード
Part4:オブジェクト指向構文
 クラスの基本
  クラスを定義する - class命令
  クラスの内外からのアクセスを制御する - アクセス修飾子
  コンストラクターとプロパティ設定
  getter/setterアクセサー
  (1)読み書きを制御できる
  (2)値チェック/戻り値の加工などが可能
  静的メンバー
  名前空間
  階層的な名前空間
 継承/実装
  継承の基本
  メソッドのオーバーライド
  抽象メソッド
  インターフェイス
  インターフェイスの例
  インターフェイスを継承することも
  補足:構造的部分型
  型注釈としてのインターフェイス
  補足:オブジェクト型リテラル
  型としてのthis
 ジェネリック(総称型)
  ジェネリック型の定義
  型引数の制約
  ジェネリックメソッド
  例:オブジェクトのマージ
Appendix:その他
 Visual Studio Codeによる開発
  VSCodeの使い方
  [1]VSCodeをインストールする
  [2]プロジェクトフォルダーを開く
  [3]tsconfig.jsonを準備する
  [4]TypeScriptコードを準備する
  [5].tsファイルをコンパイル/実行する
  [6]コンパイル済みのコードを実行する
 tsconfig.json簡易リファレンス
書籍情報
 著者プロフィール
 基本情報
 サポートサイト

以上、レビューとさせて頂きます。

JavaScript 第6版

JavaScript 第6版

開眼!  JavaScript ―言語仕様から学ぶJavaScriptの本質

開眼! JavaScript ―言語仕様から学ぶJavaScriptの本質

パーフェクトJavaScript (PERFECT SERIES 4)

パーフェクトJavaScript (PERFECT SERIES 4)

デザインサンプルで学ぶCSSによる実践スタイリング入門 書評 -WINGSプロジェクト( @yyamada ) 

表題にある通り「デザインサンプルで学ぶCSSによる実践スタイリング入門」の書評となります。

デザインサンプルで学ぶCSSによる実践スタイリング入門 (CodeZine BOOKS)

デザインサンプルで学ぶCSSによる実践スタイリング入門 (CodeZine BOOKS)

こちらの書評ですが、率直な感想として実践的ですぐに使えるサンプルばかり載っていて、明日から活用できるということでした。

前提として、私のCSSに関してのレベルですが、以下の入門書を一冊読み、都度レイアウトについてWebで検索して、何とか動かすという形が多いです。

10日でおぼえるCSS/CSS3入門教室

10日でおぼえるCSS/CSS3入門教室

元々、サーバーサイドの開発が多く、最近ではiOSの開発をメインに行っているため、それで何とかなっていました。
ただ、職場の新人がCSSでデザインするタスクなどをこなしているのを見て、いざ質問された時に答えられないと面子が立たないなぁと思っていたので、今回書評に応募させていただきました。

ここから、内容について触れていきます。
冒頭で、実践的で明日から活用できると思った点は、デザインでよく見るけど、なんて言うデザインなのか検索できない、またはどう実現するかわからないものについてよく記載してあることでした。
例えば、「1.5 擬似要素で見出しを立体的に表現する」の中で言うと、私の中では以下のものがそれに当たります。

  • 箱型の見出し
  • 折れリボン風見出し
  • カットリボン

また、私が一番嬉しかった章として、8章のfloatプロパティによるレイアウトで紹介されていたレイアウト崩れの対処法がいくつかパターンとして書いたいたのは今後ハマった時に活用させていただきます。

本当にサンプルが豊富で、今後自分で作りたいアプリで検索機能を作りたいなぁと思っていたので、5章のフォーム(検索ボックス)をぜひ活用させていただきたいなと思いました。

以上、書評とさせていただきます。

作りながら学ぶ HTML/CSSデザインの教科書

作りながら学ぶ HTML/CSSデザインの教科書

これからWebをはじめる人のHTML&CSS、JavaScriptのきほんのきほん

これからWebをはじめる人のHTML&CSS、JavaScriptのきほんのきほん