2017年9月度 勉強会で取り組んだ事項


[Nagoya.Swift+ 9月度勉強会 - connpass](https://nagoyaswiftplus.connpass.com/event/53941/)で取り組んだ事項についての紹介記事です。

今回は参加された各位に作業中に調べたページについて教えてもらいました。

# 内容

1. Swift
2. Web開発
3. 機械学習

# Swift

[絶対に挫折しないiPhoneアプリ開発「超」入門](https://www.amazon.co.jp/dp/B01MQPA946/) からRSSリーダーアプリ(Ch.9 RSS Readerアプリ)を写経して作成。

## 学習中の課題

1. 【解決済み】ListViewControllerクラスをストーリーボードに関連付けられない。
 * アイデンティティインスペクタのClass項目に入力するならReturnで確定 or プルダウンで選択する
2. 【未解決】画面遷移をSelection SegueからAccessory Actionに変えた時、Detail Disclosure/Detailはタップできる筈なのに出来ない。
 * セルの設定を設定しただけで、セグエの設定時にSelection Segueにしたままだったっぽい。作り直し辛い。

## いつも忘れるXcodeの使い方

* エディタエリアをコードとストーリーボードで2分割表示
    * [option]を押しながら、ナビゲーターエリアをクリック
    >  [Qiita](http://qiita.com/ruwatana/items/8c138cde759a6bcf4bba “Xcodeを画面分割(Assistant Editor)モードで使う時に便利なショートカット集“)

## 教訓

* Enter/Returnが大事 (※TerminalとかでEnterは危険なので、TPOをわきまえましょう!)


Webアプリ開発
==========================================

素のHTML, CSS, JavascriptでのWebアプリ開発と、Reactを利用した開発について。

HTML, CSS, Javascriptでの開発
------------------------------------------

[ドットインストール](https://dotinstall.com/)の動画を参考に、[レッスン一覧](https://dotinstall.com/lessons)から次の３つを作成。

* [JavaScriptでカウントダウンタイマーを作ろう](http://dotinstall.com/lessons/countdown_js)

* [JavaScriptで割り勘電卓を作ろう](http://dotinstall.com/lessons/go_dutch_js_v2)

* [InstagramでログインするWebサービスを作ろう (全16回) - プログラミングならドットインストール](https://dotinstall.com/lessons/instagram_api_php)

InstagramのAPIって使いやすいんでしょうか…？


Reactを用いたWebサイト開発
------------------------------------------

Reactを使おうとすると、npmとかBabelとかWebpackとか色々入ってきて、急に現代的な感じになりますね。取り組んだ方がブログ記事を書かれています。

* [Nagoya.swift+勉強会に参加(React) - 明日会社がなくなっても](http://yuji38kwmt.hatenadiary.jp/entry/2017/09/24/213754)


「Reactを使うとこれがいいんだよ！」の説明で思いっきりStyled Componentsの話をしてしまったのですが、Reactってこれが副次的に解決されたイメージなので正確ではないかもしれないです。

* [CSS Evolution: From CSS, SASS, BEM, CSS Modules to Styled Components](https://m.alphasights.com/css-evolution-from-css-sass-bem-css-modules-to-styled-components-d4c1da3a659b)


### React

ReactはクライアントサイドでDOMを組み立てるのが面白いです。これ自体は別にReactを使わなくても出来ますが、フレームワークでこれを協力に支援しているイメージです。

今まではサーバーサイドで色々レンダリングしていた(PHPとかRailsとか)のをクライアントサイドに持っていき、サーバーサイドではjsonだけ返すステートレスなREST APIを作成してマイクロサービス化したいのかな、という印象です。

このときにデータの変更を反映する仕組みと、クライアントサイドでの状態管理が必要になるのですがReactはデータの変更を反映する仕組みだけ請け負っている、と理解してます。このあたりもっと理解したい…。

* [Hello World - React](https://facebook.github.io/react/docs/hello-world.html)

* [コマンド一発でReactの開発環境を構築してくれるFacebook製ツール「create-react-app」 | maesblog](https://mae.chab.in/archives/2910)

* [いまどきのJSプログラマーのための Node.jsとReactアプリケーション開発テクニック（クジラ飛行机） | 書籍 本 | ソシム](http://www.socym.co.jp/book/1114)

* [React.jsの開発環境をできるだけ簡単に作る！ – Game Users 開発ノート](https://gameusers.org/dev/blog/environment/react-js-install)

* [石器時代みたいなWebアプリ開発をしていたエンジニアがReact.jsに導かれて2016年にやってきた話 - Sanwa Systems Tech Blog](http://tech.sanwasystem.com/entry/2016/12/21/120628)


### Babel

* [Babel · The compiler for writing next generation JavaScript](https://babeljs.io/)

* [Babel CLI（babelコマンド）の使い方 | maesblog](https://mae.chab.in/archives/2845)

* [Exponentiation operator transform · Babel](https://babeljs.io/docs/plugins/transform-exponentiation-operator/)

* [Babel で IE8 対応する地獄 - Qiita](http://qiita.com/k_ui/items/bd728f059f868b8ee528)


### Javascript

* [べき乗演算子が実装された - JS.next](http://js-next.hatenablog.com/entry/2016/03/22/221353)

* [for...of - JavaScript | MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/for...of)

* [テンプレート文字列 - JavaScript | MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/template_strings)


### Debugger

Javascriptを用いたアプリのDebugの方法、特にMinifyされたソースコードのデバッグについて。

* [JavaScriptのデバッグ方法 – JSを嫌いにならないためのTips | プログラミング | POSTD](http://postd.cc/how-to-not-hate-javascript-tips-from-the-frontline/)

* [ソースマップを使用する - 開発ツール | MDN](https://developer.mozilla.org/ja/docs/Tools/Debugger/How_to/Use_a_source_map)

* [Source Map Revision 3 Proposal - Google ドキュメント](https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit)

* [Source Map Revision 3 Proposal (Ver. November 18, 2013) 抄訳メモとリンク - Qiita](http://qiita.com/kozy4324/items/1a0f5c1269eafdebd3f8)

* [Console.table() - Web API インターフェイス | MDN](https://developer.mozilla.org/ja/docs/Web/API/console/table)

### Visual Studio Code

Node.js関連の開発やるときにVisual Studio Codeは割りとおすすめです。個人的にはAtomよりも好きです。Markdown専用エディタにしている方もいらっしゃいました。

* [Visual Studio Code チートシート - Qiita](http://qiita.com/aoinu/items/681f932ce0b162cd9520)


### Node.js

* [HTTP | Node.js v8.5.0 Documentation](https://nodejs.org/api/http.html#http_response_end_data_encoding_callback)

* [NodeSchool](https://nodeschool.io/)


# 機械学習

AWS上でGPUインスタンスを使ってKerasを動かすのと、Dockerで作成した開発環境にリモートデバッグする方法について。

## AWS上でGPUインスタンスを使ってKerasを動かす

スポットインスタンスでGPUの付いた仮想マシンを立ち上げて機械学習ってのは本当にかっこいいですね。

### Keras

* [映像物体検出（SSD_Keras）を簡単に実装する方法 for maxOS | AI coordinator](https://ai-coordinator.jp/mac-ssd-keras)

* [物体検出用SSD_Kerasで使える学習モデルの作成方法 | AI coordinator](http://ai-coordinator.jp/ssd-keras-train)

* [物体検出アルゴリズム(SSD : Single Shot MultiBox Detector)を学習させてみる - Qiita](http://qiita.com/slowsingle/items/64cc927bb29a49a7af14)

* [ディープラーニング実践入門 〜 Kerasライブラリで画像認識をはじめよう！ - エンジニアHub｜若手Webエンジニアのキャリアを考える！](https://employment.en-japan.com/engineerhub/entry/2017/04/28/110000#1-AWS%E3%81%A7%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E7%94%A8%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%82%92%E7%94%A8%E6%84%8F%E3%81%99%E3%82%8B)

### AWS 

* [AWS Marketplace: Deep Learning AMI Amazon Linux Version](https://aws.amazon.com/marketplace/pp/B01M0AXXQB?qid=1505512563005&sr=0-9&ref_=srh_res_product_title)

## Dockerで作成した開発環境にリモートデバッグ

長いので別記事にしました。

* [VSCodeでのPythonのデバッグと、Dockerコンテナ環境に接続してリモートデバッグする方法 - Qiita](https://qiita.com/Ryuichirou/items/6327ab5012ca1729d72f)

# 次回予告

次回は10/21(土)の予定です。

* [Nagoya.Swift+ 10月度勉強会 - connpass](https://nagoyaswiftplus.connpass.com/event/53942/)