無限大な夢のあと

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

【書評】[改訂新版]Swiftポケットリファレンス( @yyamada ) 

WINGSプロジェクトの書籍レビュアーに応募し、献本してもらったので、書評を書きました。
今回は表題にある通り「[改訂新版]Swiftポケットリファレンス 」の書評となります。

[改訂新版]Swiftポケットリファレンス (POCKET REFERENCE)

[改訂新版]Swiftポケットリファレンス (POCKET REFERENCE)

私のモバイルアプリ開発のバックグラウンドを説明しますと業務ではiOSでネイティブアプリの開発を1年ほど行なっています。

では早速、本題のレビューをさせていただきます。

まず、書籍を読み終えた感想をものすごく端的にいうと、
iOSの画面開発において、手元に置いておくと細かいプロパティの動作を確認できる細かい所に手が届く便利君」という印象です。

簡潔に書籍の「良かった点」と「改善して欲しい点」をまとめます。

良かった点

  • iOSのレイヤの説明など冒頭からしっかりした説明をしてくれて、全体像を改めて理解できた
  • 自分が今まで作ったことのない画面の種類については、このリファレンスを見れば大体作ることができるくらい内容がしっかりしている
  • 図が使われていることで、視覚的にも理解しやすい
  • 動画、位置情報、カメラなどアプリでよく使う機能もカバーされている
  • 大量のサンプルコードがあり、活用をすることができる

改善して欲しい点

  • プッシュ通知、課金、復帰処理など通常のアプリでも使うような内容の機能の説明があると尚良かった
  • WebViewに関して、WKWebViewではなく、UIWebViewの説明が載っているなど改訂前の影響を受けて微妙に古い内容だったりした
  • Swift4対応とあるが、fileprivateの説明がSwift3の時の挙動の説明になっていたりする部分があった
  • UIに特化したリファレンスとしてはInsetやOffsetといったような実務で困る点についても記載が欲しかった
  • バージョン別のバグなどの罠も注記が欲しかった(例: iOS9,10でWKWebViewでPostをした時に、httpBodyが空になるなど)

個人的には今回の書籍はUIに特化したリファレンスとして、機能に特化したリファレンスを別途出してくれると嬉しいなと思いました。
また、自分的に気づいた細かい点としては、

  • いつも混乱するmapのクロージャーの書き方の例が5パターン載ってたりするのは、Swiftの記述が少ない中でたまに混乱するけど検索に出てこなかったりもするので、地味に嬉しかったりしました。
  • map().filter()というサンプルだと、lazyつけましょうくらいのこともコラムに書いてあると初学者は理解が深まったりすると良いなとも思いました。

みたいなのもありました。

気づいた誤字
P100 書式の説明でflatMapの説明なのに、前ページのfilterを使っている

以上、レビューとさせていただきます。

Swift 4プログラミング入門 iOS 11+Xcode 9対応

Swift 4プログラミング入門 iOS 11+Xcode 9対応

詳細! Swift 4 iPhoneアプリ開発 入門ノート Swift 4 + Xcode 9対応

詳細! Swift 4 iPhoneアプリ開発 入門ノート Swift 4 + Xcode 9対応

【書評】基礎&応用力をしっかり育成! Androidアプリ開発の教科書 ( @yyamada ) 

WINGSプロジェクトの書籍レビュアーに応募し、献本してもらったので、書評を書きました。
今回は表題にある通り「基礎&応用力をしっかり育成! Androidアプリ開発の教科書 なんちゃって開発者にならないための実践ハンズオン 」の書評となります。

基礎&応用力をしっかり育成!  Androidアプリ開発の教科書 なんちゃって開発者にならないための実践ハンズオン (CodeZine BOOKS)

基礎&応用力をしっかり育成! Androidアプリ開発の教科書 なんちゃって開発者にならないための実践ハンズオン (CodeZine BOOKS)

私のモバイルアプリ開発のバックグラウンドを説明しますと業務ではiOSでネイティブアプリの開発を1年ほど行なっており、
Androidの開発経験は業務ではまだありません。

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

まず、書籍を読み終えた感想をものすごく端的にいうと、
アプリ開発で気にするような細かいポイントを押さえていて、これを読みながら作りたいものを大体作れそうだけど、なぜサンプルがKotlinじゃないのだ。。。」
です。

簡潔に書籍の「良かった点」と「改善して欲しい点」をまとめます。

良かった点

  • 画面遷移、ライフサイクルなどのアプリ開発者が気にする点を押さえている
  • バックグラウンド処理、メディア再生、通知、GPS、カメラ、ストレージなどのアプリを作る上での機能について記載がある
  • ViewのComponentの使い分けなど細かい点についても言及されている

改善して欲しい点

  • サンプルコードが全てJavaなので、Android3.0からサポートされているKotlinでのサンプルコードであって欲しかった(切実)
  • 復帰処理などの話くらいまであると、尚良かった。
  • アーキテクチャー寄りの話にはなりますが、「Android Architecture Components」に言及して説明があるとより嬉しかった

PDFなどで続編として「改善して欲しい点」についても記載があるような書籍が出ることを切に願います。

そして、iOSアプリ開発を進めて詳しくなった観点で見ると、本当に細かく記載があって痒いところまで手が届く書籍なので、
自分で作ったiOSのアプリのAndroid版をこの書籍を読んで作成しようと思いました。

以上、レビューとさせていただきます。

Kotlinイン・アクション

Kotlinイン・アクション

Androidを支える技術〈I〉──60fpsを達成するモダンなGUIシステム (WEB+DB PRESS plus)

Androidを支える技術〈I〉──60fpsを達成するモダンなGUIシステム (WEB+DB PRESS plus)

Androidアプリ開発の極意 ~プロ品質を実現するための現場の知恵とテクニック

Androidアプリ開発の極意 ~プロ品質を実現するための現場の知恵とテクニック

【書評】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版