Hatena::ブログ(Diary)

Over&Out その後 このページをアンテナに追加 RSSフィード Twitter

2017-06-27

iOSの技術書をクラウドファンディングで執筆します - 共著者8人の紹介 #peaks_cc

「PEAKS」という技術書のクラウドファンディングサービスで、今日から9人の執筆陣によるiOSの解説書「iOS 11 Programming」のファンディングが始まりました。


f:id:shu223:20170626233655j:image:w600



9人の著者陣に僕も入ってるので、宣伝といえば宣伝なのですが、技術書大好きな自分としては、自分が入ってなくても絶対に買うであろう執筆陣/内容なので、いち読者としてもぜひとも成立して欲しいと思ってまして、本記事を書こうと思った次第です。


そう、念のため書いておきますが、クラウドファンディングなので、成立しなければ出ません😭

購入締切日時 2017年07月28日 23:59 までに、購入者数が目標の 500人 に達した時点で執筆開始となります。購入額の決済は、目標人数が達成された時点で行われます。(目標人数に達しなかった場合はプロジェクト不成立となり、決済は行われません。)


ページ内の著者コメントにも書きましたが、僕がお世話になった著書の執筆者であったり、いつもお世話になってる著名オープンソースライブラリのコミッタの方であったり、いつも素晴らしい記事を書かれている方であったり。期待しかない布陣なのです。


万が一それが伝わってなくても悲しいので、僕「以外」の方々についておこがましいですが簡単に紹介させていただきたいと思います。以下サイトに載ってる順に。*1


吉田 悠一 - Core ML

通称ソンソン(sonson)さん。「iOS SDK Hacks」のメイン著者のひとり。


iOS SDK Hacks ―プロが教えるiPhoneアプリ開発テクニック
吉田 悠一 高山 征大 UICoderz
オライリージャパン
売り上げランキング: 226658


2010年とかなり黎明期に書かれた本ですが、Method Swizzling や Accelerate.framework といった他著では扱ってないトピックについて書かれていて、その後何年も本書を開いて参考にさせていただきました。


コンピュータビジョンや機械学習を専門とされていて、今回Core MLについて書かれるということで、ブログ記事や他著にありそうなチュートリアルをなぞってみた的なところを超えた、「中身がわかってる人ならではの解説」が非常に楽しみです。


池田 翔 - Swift 4の新機能とアップデート

通称いけしょーさん。あの Carthage、ReactiveSwift のコミッタであり、Himotoki の作者です。Carthageというパッケージマネージャ、ReactiveSwiftというリアクティブプログラミングをするためのライブラリ*2、Himotokiという「Swift自体がそのコアコンセプトを後追いすることになった」JSONパーサの中身をコミッタ・作者レベルで理解している人が解説するSwift 4、読みたすぎます。


坂田 晃一 - Xcode 9 の新機能

僕は坂田さんと呼んでますがID的にはhuinさん。今年出版された「モバイルアプリ開発エキスパート養成読本」の著者のひとり。


モバイルアプリ開発エキスパート養成読本
技術評論社 (2017-04-11)
売り上げランキング: 38,762


iOSDC等のカンファレンスや勉強会でよく発表されていて、わかりやすくてためになる内容に定評がある方です。


加藤 尋樹 - Drag and Drop / Files と Document Based Application

通称すこんぶさん。try! Swiftの記念すべき第1回目に登壇されていました。

上記はすこんぶさんのブログですが、技術記事はいつも他の記事には書いてない「一歩踏み込んだ」内容で、めちゃくちゃ勉強になります。


川邉 雄介 - UIKitのガイドラインの変更点とAutoLayoutの新機能、アップデート

僕は川邊さんと呼んでますが、ID的にはjeffsukeさん。「よくわかるAuto Layout」の著者の方です。



この本の紹介記事にも書きましたが、「こんなに詳しく、しかも噛み砕いててすごい」と驚く内容の良さでした。*3


ブログ記事もちょっと込み入った内容を綺麗に構造化してわかりやすく書くのが上手い方だなーと思います。


岸川 克己 - Core NFC / PDFKit / SiriKit

通称きしかわさん。きしかわさんです!Realm、try! Swiftの主催、色々な会社の技術顧問、KeychainAccessの作者等いろいろな顔がありますが、なんといっても岸川さんの勉強会等での登壇内容は、そのまま本にして欲しいぐらい詳しく、他で説明されてないような内容まで網羅されていて、それでいてわかりやすいです。


PEAKSクラウドファンディング第1弾は岸川さんの「Inside Swift」でしたが、ぜひとも成立して欲しい企画でした。目標部数が高すぎるからだ!と思わずPEAKSにアンケートでクレームを入れたぐらいでした😭


今回こそは成立させて、岸川さんの書く章を読みたいです。というか、「PDFKit」は何となく岸川さんが書きそうなイメージがありますが、「Core NFC」「SiriKit」というチョイスは個人的にはちょっと意外で、だからこそますます読んでみたい気持ちが高まります・・・!


所 友太 - HomeKit入門とiOS 11における新機能

僕は普通に「ところさん」と呼んでます。みんな持ってた(と僕は思っている)あの「UIKit詳解リファレンス」を書いた方。


iPhoneプログラミングUIKit詳解リファレンス
所 友太
リックテレコム
売り上げランキング: 355,345


「よくわかるAuto Layout」の監修でもあります。あと #potatotips の創始者でもあります。


「UIKit本の次回作は書かないんですか?」と会う度に聞いてて「今書いてます!」と言ってたのに7年経ってもまだ出てないので、こういう機会でもないとなかなか書いてくれない気がしますw 所さんのHomeKit解説、ぜひ読みたいです。


永野 哲久 - Audio/Media関連 新フレームワークとアップデート

iOSのオーディオまわりをいじる人はみんな参考にしたあの「iPhone Core Audioプログラミング」の著者。


iPhone Core Audioプログラミング
永野 哲久
ソフトバンククリエイティブ
売り上げランキング: 88,410


2009年刊行ですが、オーディオ周りの低レイヤのAPIのうちのいくつか(大部分)はこの本にしか書かれてないことが多く、一時期は1万円を超えるプレミア価格がついてました。プログラミング界隈においてはだいたいの情報は英語が源泉ですが、この本をネイティブで読めるので日本語できて良かったーとまで思った一冊です。


この企画の話をいただくまで知らなかったのですが、実はPEAKSの中の人はこの永野さん。今回の発起人でもあります。


おわりに

もしかしたら個人的な思いがほとばしりすぎて宣伝にすらなってないかもしれません。。プロジェクトが成立(=購入者数が目標数に到達)してから執筆される本なので、ある程度内容については著者陣を信用してほしいということになりますが、ガジェット系等のクラウドファンディングと違って成立しなければ決済されないので、"支払ったけど本(電子書籍or紙の本)は届かない"ということはないのでその点はご安心いただきつつ、気になった方はぜひ応援の購入をしていただければありがたいです。



よろしくお願いいたします🙇🏻



*1:なお、紹介に出てくる著書はもちろん全て個人的に所有しております

*2:こういうの何て総称するんでしょう?

*3:「わかりやすいけど内容が薄い」、または「内容は詳しいけど公式ドキュメントの直訳でわかりにくい」(著者が咀嚼できてない)、というパターンは実際にたまに見かける

2017-06-07

【iOS 11】ARKitについてWWDCのラボで聞いてきたことのメモ

iOS 11から追加された、AR機能を実装するためのフレームワーク「ARKit」についてWWDCのラボ(Appleのデベロッパに直接質問できるコーナー)で聞いたことのメモです。注目のフレームワークなので行列ができてましたが、丁寧に色々と教えてくれたので、忘れないうちに書いておこうと思います。


f:id:shu223:20170608032933j:image:w600

(WWDCセッションスライドより)


既存実装とどう共存させるか?

先日の記事にも書いたのですが、今働いている会社のアプリ「Fyuse」はスマホで3D的な写真を撮るアプリで、その撮影を補助するために、撮影対象の周囲に3Dの「ARガイド」を表示するという機能をAVFoundation+Metal+SceneKit+独自の画像処理ライブラリ(トラッキング等)で実装しました。


f:id:shu223:20170606094825g:image


ARKitを使うとなると、要iOS 11以上、要A9以上のプロセッサという条件を満たす必要があるわけですが、当然2017年現在では多くのアプリはこれよりもっと広いiOSバージョン、iOSデバイスをサポートしたいはずです。


で、まず聞いたのは、そういう既存実装とARKitを共存させるのに、

if <# iOS 11以上 #> && <# A9以上 #> {
    // ARKitを使う実装
} else if <# 既存実装を使う条件 #> {
    // 既存実装
} else {
    // それ以外
}

みたいなのを避ける方法があったりしませんか?と。



回答:ない。ARKitを使うにはiOS 11以上、A9以上が必要だ。



・・・はい。そりゃそうですね。変な質問してすみません。でもせっかく来たので食い下がって聞いてみました。


「他のAR利用アプリもiOS 10以下はまだ切れないと思うけどみんなどうしてるの?たとえばポケモンGoとか」



回答:知らない。



・・・はい。そりゃそうですよね。(もし知ってても言えないですしね)



既存実装と比較したARKitのアドバンテージは何だと思うか?

質問が悪かったので、「じゃあ既に実装が済んでいて、ARKitを使うとなると既存実装にプラスしてバージョンわけが必要というデメリットがありつつ、それでもARKitを使う理由はあるのか」という観点から、我々の既存実装と比較したARKitを使うメリットについて聞いてみました。



→ 回答:

  • Appleの純正フレームワークは公開APIよりもっと下のレイヤーを利用した実装ができるので、サードパーティ製の実装よりもハードウェアに最適化されている。よってバッテリー消費量や処理速度の面で優れていると考えられる
  • ユーザーがタップしなくても、ARのセッションを開始した時点でシーンの解析が完了している(これは厳密には我々の用途にとってはアドバンテージではないが、「違い」ではある)
  • デバイスの姿勢も考慮してキーポイントを抽出してるので、デバイスを動かすと云々(すみません、実はこのへんちょっとよくわかりませんでした)

結局のところ、ARのシーンとしてはどういうものが検出できるのか

我々の要件としては、水平面に何かを置きたいわけじゃなくて、対象オブジェクトを囲むように3Dノードを表示したいわけです。


f:id:shu223:20170606094825g:image


ところがARKitは検出した床やテーブル等の水平面に何かを置く実装しか見当たらないので、「こういうのってARKitでできるの?」ということを聞いてみました。



で、回答としては、今のところ「水平方向」(horizontal)の「平面」(plane)しか検出しないそうです。


`ARPlaneAnchor.Alignment` というenumがありますが、実はまだ `horizontal` という要素ひとつしかなくて、`vertical` というのはまだありません。つまり壁のような「垂直方向の平面」を検出したり、我々のアプリのように人間や銅像や動物といった任意のオブジェクトを検出したり、そういうことは現状ではサポートしてないようです。


なので、ポケモンGoのようにキャラクターの3Dモデルを表示するタイプのARにはいいですが、我々のアプリのような用途や、実世界のものに合わせて何か情報を表示したり、みたいなタイプのARにも現状では向いてなさそうです。



どういう水平方向の平面が認識されるかについても教えてくれたのですが、ある程度の大きさが必要で、たとえばイスの座面は十分な広さがあるので水平面として検出されるが、背もたれの上(伝わりますかね?)みたいな狭いものは水平面としては検出されないと。



ただもう一つ提案として言ってくれたのは、検出したキーポイントはAPIから取れるので、それらを使って自分で垂直方向の面なり何なりを再構成することならできる、と言ってました。これはありかもしれません。


深度情報は使用しているのか?

たとえばiPhone 7 PlusのようにDepth(デプス/深度)を取れるようなデバイスの場合、それを使ってより精度良く検出するような処理を内部でやってたりするのか?ということを聞きました。



回答:使ってない



普通のカメラだけで精度良く動くようなアルゴリズムになっていて、デバイスによる処理の差異はないそうです。


おわりに

結論としては、我々の用途には今のところは合ってなさそうです。が、今後のアプリ開発の可能性を広げてくれる非常におもしろいフレームワークであることには代わりはないので、プライベートでは引き続き触っていこうと思っています。


2017-06-06

API Diffsから見る iOS 11 の新機能 #WWDC17

今年はWWDC会場よりお送りしております。特に何も期待しないまま参加したのですが、開発者的には非常にワクワクする発表がたくさんありました。


基調講演の内容からではなく、ベータ公開されたiOS Dev CenterのAPIリファレンスを見て、個人的に/開発者目線から気になった新APIを挙げていきます。


Core ML

iOS 10からMetal Performance Shaders(以下MPS)に追加されたCNN関連機能、足りないものが色々とあり、ここらへんは拡充されたら嬉しいなとは思っていましたが、新フレームワークとして登場しました。


おいおい、さらに増えたら MPSCNN / BNNS / Core ML とどう使い分けるんだ、と思いましたが、ドキュメントの図で棲み分けがわかりました。


f:id:shu223:20170606094137p:image:w450


Keras や Caffe で学習したモデルを BNNS や MPSCNN で使えるようにするのが Core MLのようですね。

import coremltools
coreml_model = coremltools.converters.caffe.convert('my_caffe_model.caffemodel')
coreml_model.save('my_model.mlmodel')

実際、学習済みモデルを持ってくるところは扱いづらい仕様だったので、これは嬉しいです。



Metal Performance Shader

上でMPSという略語を何度かもう出しましたが、MPS自体にもいくつか新規追加APIがあります。その中でも目を引くのが Recurrent Neural Networks(RNN / 再帰型ニューラルネットワーク)関連のAPI群。

  • MPSRNNImageInferenceLayer
  • MPSRNNMatrixInferenceLayer
  • MPSRNNSingleGateDescriptor
  • MPSGRUDescriptor
  • MPSLSTMDescriptor
  • MPSRNNSequenceDirection

RNNは、文書解析に向いていて、自然言語処理の分野で成果を挙げているとか。勉強します。


Vision

これも新フレームワーク。画像解析・コンピュータビジョンで顔を識別したり、シーンを分類したりするフレームワークのようです。APIを見てると Core Image の CIDetector の下回りがこれなのかなぁという品揃えです。

  • Face Detection and Recognition
  • Machine Learning Image Analysis
  • Barcode Detection
  • Image Alignment Analysis
  • Text Detection
  • Horizon Detection
  • Object Detection and Tracking

ちなみにドキュメント冒頭で "detect faces" ではなく "identify faces" という言い方をしてるのと、"Face Detection and Recognition" とわざわざ書いてあるので、顔検出ではなく、「これは誰々だ」という顔の認識までしてくれるのかなと期待しましたが、今のAPIを見た限りだと従来の顔の矩形検出っぽいです。今のところは。


いや、それにしてもこれは嬉しいです。もっとAPI掘ってみます。


ARKit

これは基調講演でも盛り上がってましたねー *1


f:id:shu223:20170606094517p:image:w600


私事ですが、勤めている会社のアプリ Fyuse でこういうものを実装しました。


f:id:shu223:20170606094635j:image:w585


Fyuseというアプリはスマホで3D的な写真を取るアプリなのですが、実装した機能というのが、タップして選んだ対象の周囲に3Dの「ARガイド」を表示して、撮影を補助するものです。


f:id:shu223:20170606094825g:image


で、これがiOSの実装的に言うと、

  • カメラからの入力画像を解析してリアルタイムに物体追跡
  • カメラの姿勢と対象物体の位置・角度からARガイドを表示する

というところで、AVFoundation、Metal、SceneKit(+コアとなる画像処理:弊社リサーチチームによる実装)が要素技術になってきます。


僕は3Dの取り扱いにまだ慣れてなくて、カメラからの入力・iPhoneのスクリーンという2Dの世界と、デバイスの姿勢・SceneKitで構築する3Dの世界とを行き来するのに苦労しました。


こういうのをARKitはやりやすくしてくれるものなのかなと思います。具体的なAPIはまた後ほど見たいと思います。


Depth API

基調講演で「Depth API」って言ってて、「きたー!」と思いましたが、


AVFoundationを見るも、新規追加APIはなし


どこにあるのでしょうか・・・?


→ FacebookやTwitterで @hkato193 さん、@Gemmbu に教えていただいて、 AVCaptureDepthDataOutput という新規APIがあることがわかりました。(新しいドキュメントのdiffの見方を間違ってました)


Core Bluetooth on watchOS

Core Bluetooth が watchOS でも使えるようになったようです。



ドキュメント見ると、核となるクラスである CBCentralManager や CBPeripheralManager が "watchOS 2 +" となっていて、"4.0+" の間違いなのかほんとなのか謎ですが、いずれにせよ、時計から外部デバイスを操作できるって、ワクワクしませんか・・・?僕はします。またウォッチいじりたくなりました。


Core Bluetoothについて新たに勉強したくなった方にはこちらの書籍がおすすめです。


Core NFC

基調講演でチラッとNFCの文字が見えましたが、新フレームワークが追加されてました。何ができるようになったのか、あとでAPIを見ます。


→ その後FacebookでNoriaki Misawaさんより、以下のように情報いただきました。

CoreNFCはType1-5までのNDEFが読めるようになりました。それだけみたいです。コード書いて試そうとしたら、7じゃないとダメだそうで、それ知る前に6sをiOS11にしてしまったので焼き直しです。。


SiriKit

開発者ドキュメントでは"Lists and Notes"という、NotesやToDoリストを作成・管理するものが追加されてますが、基調講演では他にももっとたくさんできることが増えたって言ってたような。


その他

MusicKit

基調講演でチラッと行ってた気がするけどAPIリファレンスに見当たらないような。。。


いや、Musicライブラリまわりの連携って、実は結構苦しいこと多くないですか?なので、何が新たにできるようになったのかは知っておきたいなと。


→ FacebookでIkuya Omatsuさんより以下のように情報いただきました。

AppleMusicAPI Refならありました

(今日のWWDCのMusicKitのセッションのResourceリンクにもこれが貼られてました)


RPScreenRecorder(ReplayKit)

ReplayKitに追加された、アプリのスクリーンビデオを撮るためのクラス。そもそもReplayKitってそういうものじゃなかったでしたっけ?たまに画面を録画する機能をサクッとつくりたいケースはあるので、以前のと何が違うのか、見ておきたいなと。


→ コメント欄に @k_katsumi さんよりコメントいただいてるのでご参照ください。


SCNCameraController(SceneKit)

何をするものでしょうか?あとで見る。


NEHotspotConfiguration

WiFi関連のAPIが今更新たに公開されるのって、どういう文脈に沿ってるんでしょうか?何にせよ外の物理的な何かと連携するAPIは好物なので、見ておきたいです。


Xcode 9

いろいろ劇的に改善されましたね。


関連


*1:個人的には、ポケモンGoのARはあまりARの良さを活かしているものではないと思ってるので(みんなARモード切って使ってますよね)、あれがARの代表例としていつも挙げられる度にうーんと思ってしまうのですが

2017-05-29

「あきらめ」からはじめる英会話 #clem_jp

英語を勉強しているエンジニアやデザイナーのためのミートアップ「CLEM」というのがありまして、本日その第5.2回(5月の2回め?)でLTをしてきました。

f:id:shu223:20170529224404j:image:w600

(主催のKayokoさんのツイートより写真をお借りしました)


こじらせ続けてきた英語への苦手意識

昨年10月からサンフランシスコの会社でエンジニアとして働き始めたのですが、


英語が話せるから入ったのではなく、英語に猛烈な苦手意識があり、いろんな勉強もしてきたが続かないので、もう「英語を使わざるを得ない環境」に飛び込むしかない、というのが入社を決めた理由のひとつです。


「そうは言っても話せるんでしょー」という思う人は、以下の録音を聞いてみてください。入社を決めた当時の僕のリアルな英語力が伝わると思います。

※これは会社の人と話してるのではなく、そのちょっと前に「ハッカーパラダイス」というコミュニティに参加した際のスカイプ面談です。


こんな程度の英語力なので、当然英語でのコミュニケーションには恐怖すらありました。会話する機会があっても(「早くこの場から逃げ出したい」)といつも思ってました。


「あきらめる」ことでのブレークスルー

で、そんな僕ですが、いくつかのことを「あきらめる」ことで英会話においてブレークスルーがあったと自分の経験から感じることがあったので、それについて同ミートアップでシェアさせていただきました。



具体的な「あきらめTips」を紹介していますが、要点としては「あきらめることで、挑戦のハードルを下げる」というところです。僕はこれで何年もこじらせた英語への苦手意識からやっと前に進めた感がありました。


どなたかのお役に立てば幸いです!


反応











関連記事


2017-05-12

Swiftの各機能が「なぜ」存在し「いつ」使うべきかを解説した技術書 - Swift実践入門

著者の石川さん、西山さん、およびWEB+DB PRESS plus様より、『Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語』をご恵贈いただきました。


Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 (WEB+DB PRESS plus)
石川 洋資 西山 勇世
技術評論社
売り上げランキング: 5,087


今年の2月に出版されたばかりですが、観測範囲では「Swift実践入門輪読会」「Swift実践入門読書勉強会」といった会も開催されていて、もう世間ではすっかり教科書のような定番の良書として認知されている感があります。


他のSwift本との違い / Appleの公式ドキュメントで十分?

Swiftについて書かれた技術書は既に数多出ています。入門本はたぶんそれだけで本屋のコーナーができるほど出てますし、リファレンス本や逆引き辞典のような書籍もあります。また、Appleの公式ドキュメントも相当丁寧に、サンプル付きでわかりやすく書かれています。


そんな中、本書の存在意義は何かというと...前書きでグッと来た一説を引用します。


Appleの公式ドキュメントをはじめとして、どんな(what)言語仕様があり、それらをどのように(how)使うかに関しては豊富な情報源があります。しかし、それらがなぜ(why)存在し、いつ(when)使うべきかについてまとまった情報源があるとは言えません。本書は、読者のみなさんの「なぜ」や「いつ」を解消することにも主眼を置いています。


そうそう、そうなんですよね。多くのプログラミング言語の解説本って、「なぜそれを知らないといけないのか」「これを知っておくとどういう場面で役に立つのか」かについて述べられてないことが多いんですよ。


その点、本書は前書きにある通り、各章の冒頭で「これを知っておくと開発現場のどういう場面でどう嬉しいのか」ということがシンプルな具体例でわかりやすく書かれています。



たとえば、本書の第8章、「ジェネリクス」の章の冒頭文では、

ジェネリクスとは、型をパラメータとして受け取ることで汎用的なプログラムを記述するための機能です。

とあります。よくある言語の本って、解説これだけで終わっちゃって、さっさと使い方の解説に行ってしまうと思うんですよ。


他言語でジェネリクスという概念に既に触れてたり、C++のテンプレートとかを知っている人にとってはこれだけで「はいはい、あれね」ってなると思うんですが、僕みたいにSwift以前はほぼObjective-Cしか書いたことない人間からすると、「文章としては理解できるけど・・・『型をパラメータとして受け取ることで汎用的なプログラムを記述できる』から何・・・?」ってなっちゃうわけでして。。


ところが本書の場合はこの章の最初に、まずはジェネリクスを使用「しない」例をサンプルコード付きで示したうえで、それがジェネリクスを利用するとどうなるか、というbefore / afterを示してくれています。しっかりジェネリクスを学ぶモチベーションを喚起されてから使い方の解説に進める、というわけです。


目次 / 個人的な読み方

本書の目次は大見出し、中見出し、小見出しとかなり詳細に区分けされているのですが、長くなってしまうのでここでは各章のタイトルだけ紹介します。

  • 第1章 Swiftはどのような言語か
  • 第2章 変数、定数と基本的な型
  • 第3章 制御構文
  • 第4章 関数とクロージャ
  • 第5章 型の構成要素 ── プロパティ、イニシャライザ、メソッド
  • 第6章 型の種類 ── 構造体、クラス、列挙型
  • 第7章 プロトコル ── 型のインタフェースの定義
  • 第8章 ジェネリクス ── 汎用的な関数と型
  • 第9章 モジュール ── 配布可能なプログラムの単位
  • 第10章 型の設計指針
  • 第11章 イベント通知
  • 第12章 非同期処理
  • 第13章 エラー処理
  • 第14章 実践的なSwiftアプリケーション ── Web APIクライアントを作ろう
  • 第15章 SwiftからObjective-Cを利用する

詳細な目次は公式ページで確認できます。


著者の一人がAPIKit作者の石川氏なので、第14章から読む人も多いようです。



個人的には、

  • パラパラとめくりつつ「この機能は知らないな」「このへんちゃんとわかってないな」というところを見つけたらその項の「why」や「when」にあたる解説を読む
  • 興味がわけば詳しく解説を読む

という感じで読み進めていきました。


その他

Swiftがバージョンアップしたら?

Swiftは(これまでのところは)毎年のようにメジャーアップデートされていて、まだまだ変化の激しい言語です。本書は現行の Swift 3 ベースに解説されたものですが、2017年秋には Swift 4 がリリースされる見込み。そうなると、本書の内容は古くなってしまいうのでしょうか?


私は依然として価値を持ち続けると思います。言語仕様が少々変わっても、それは表面的な書き方(how)の変更であったり、できること(what)が増えたりといった公式ドキュメントでも補完できる部分であり、各機能がなぜ存在するのか(why)、いつ使うべきか(when)といった核となる考え方自体は変わらないはずであり、本書はその「Swiftの核となる考え方」について解説したものだからです。


Swiftは気になるけどiOSには興味がないんだけど・・・

本書のサンプル/解説ではUIKit等のiOSやmacOSに依存するフレームワークやそのAPIは出てこず、基本的にはSwiftの標準機能とFoundationのようなコアライブラリだけを用いて解説されています。


僕はiOSの人間なのでiOSベースで書かれていたとしても全然嬉しいのですが、最近は「iOSには興味がないけど、Swiftでサーバーサイドを書くことには興味がある」「Swiftという言語自体に興味がある」という声も聞くので、そういった方々にも本書はいいのでは、と思います。


まとめ

以上の紹介でピンと来た方はぜひ手にとってみてください。個人的には超勉強になりました。


Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 (WEB+DB PRESS plus)
石川 洋資 西山 勇世
技術評論社
売り上げランキング: 5,087


Kindle版はありませんが、Gihyo Digital Publishingで電子版(EPUB/PDF)を購入できるようです。


f:id:shu223:20170512071222j:image:w540

(著者の一人、ishkawa氏にサインをいただきました)


2009 | 08 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2014 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2015 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 11 | 12 |
2017 | 01 | 02 | 03 | 04 | 05 | 06 |