7/2 Swiftビギナーズ勉強会 第15回に参加してきました
勉強会の説明
www.slideshare.net
- この勉強会の目的
- 未経験者がiOSアプリで開発を行えるように
- セッションがうまくなること
- 交流して仲間を増やすこと
- セッションについて
- 初学者でも気軽に「講演」できる
- 発表することでスキルアップが図れる
- 講演の練習をしたい方もOK
- YouTube公式チャンネル
- 「Swift ビギナーズ 倶楽部」で検索
ショートセッション
「インクリメンタルサーチでサクサク検索を実現しよう」 耿 金洋さん
www.slideshare.net
- モチベーション
- 家にある材料から作れるカクテルが知りたい
- 自前のカクテルレシピも登録したい
- うちカクというアプリをリリース
- incremental search?
- googleの年間検索数は「少なくとも」2兆回以上
- 自分の一週間の検索回数:370回
- 検索文字列の入力の途中でリアルタイムに結果を表示する
- UX的にもインクリメンタルサーチはいい
- サンプルアプリ
- 1.UISearchBarDelegateプロトコルの準拠&UISearchBarのOutlet接続
- 2.リターンキータップ時に実行されるメソッドの実装
- 3.テキスト編集時に実行されるメソッドの実装
- 4.クリアボタンタップ時に実行されるメソッドの実装
- 5.平/カナ、大/小文字関係なく検索可能にする
- Unidoce持ってきて、ひらがなの範囲だったらカタカナに、カタカナの範囲だったらひらがなに直している
- まれに特定メソッドの実行が失敗する
- →テキストエリアと予測で出てきているものが異なってもクラッシュしないような設計にしておくこと
インクリメンタルサーチってもっと難しいことやらなければいけないのかと思ってましたが、意外と仕組みとしてはシンプルなんですね!ちょっと試しに作ってみたくなりました。
「多人数iOSアプリ開発を考える」佐々木 勝広さん
www.slideshare.net
- 多人数アプリ開発で必要なこと
- ソースコードをみんなで共有する
- アプリの作り方の方向性を合わせる
- ソースコードの共有
- gitでソースコードを共有する
- プロジェクトファイル衝突の壁
- 手動マージに失敗すると最悪プロジェクトが壊れる
- →MERGEPBX
- http://www.tokoro.me/2014/02/06/pbxproj-merge/
- pbxprojファイルのマージが便利になるmergepbxをインストールするスクリプト書いた - Qiita
- View作成の足並みを揃える
- Storyboard / Xib / 全てコード
- Storyboardの運用方針
- 1アプリ1Storyboard / 1機能1Storyboard / 1画面1Storyboard
- レイアウトの足並みを揃える
- AutoLayout / AutoResizing / コード
- 規約で書き方を統一する
- Swiftは自由度が高い
- SwiftLintで書き方を強制する
- ツールのバージョンを合わせる
SwiftLintについては以前このSwiftビギナーズで私も発表していますが、やはりこのような基準がきちんとあるといいですよね。実際、Lint導入する前とした後では心持ちも違いましたし。
「Swiftのクロージャーで苦労じゃ〜」 柿本匡章さん
- Swift難しい四天王
- Optional / closure / protocol / guard
- クロージャー=名無しの関数
- { -> in }を見たらクロージャーだと思え
- クロージャーの省略記法は複数ある
- クロージャーの使いどころ
- コールバック / 非同期処理
- リアクティブプログラミング
- map / filter / reduce
- 接尾クロージャー
- カッコを省略しない場合、メソッドのカッコの外にクロージャーを書ける
具体的なコードはスライド中に書かれているのでご参照ください。
確かに最初クロージャーは意味がわかりませんでした。。。クロージャーってこういう書き方するんだ、と覚えたと思ったら、別の書き方があったり。
「Swift3.0が出る前に 基礎の見直し:guard」七島偉之さん
- 1年前->今回
- 開発者の工夫で頑張っていたことを言語側でサポート
- letとvar 、structとclass、Optional
- [今回]異常系と正常系
- guard
- Early Exit
- 要はifみたいなやつ
- (スライド)その1、その2
- 中身の文字列があったら処理をするという時
- やりたいことがすごく長かった時に困る
- strがnilの時に特別な処理があるのかどうかがわかりにくい
- →異常系を早めにreturnしてしまう
- 以降何もしないということがわかる
- ネストも減る。
- (スライド)Swiftでもその1、その2
- 単なるifだと下でまたunwrapしなければならない
- guardなら中括弧を抜けたあと、アンラップした値が使える
- true / falseになるものであれば良いので#available(,)も使える
最初guardじゃなくてもifでええやんとか思ってましたけどじわじわとその便利さ、有能さがわかってきて今では素晴らしいと思っています。読みやすいコード、エラーを起こしにくいコードのためには欠かせませんね。
懇親会LT
一度乾杯をして、いいかんじに酔ってきたところで懇親会LTが実施されました。お酒を飲んだ後だったしなごやかモードだったのであまりメモは取れていませんw
「日本の祝祭日を計算してカレンダ-に表示するアプリサンプル」酒井さん
www.slideshare.net
「キャリアとアプリの アップデート」永田さん
www.slideshare.net
- やりたいことをやりたくて小売業から離れる
- RainbowAppsにて受講
- →面接を受けるも「それじゃ足りない」と言われる
- 職業訓練校でAndroidアプリ作成
- →まだ足りない
- RainbowAppsにてSwift習う
- →スカウトをもらった
- 給料増やしたい
- フリーランス協力会社に
- 6月の活動
藤さん
iOS10を入れたとのことで、実際にいじって見せてくださいました。
- Apple Developer ProgramにてConfiguration Profileをクリックしたらアップデートできる
- 前のバージョンに戻せるっぽい
- Messenger
- スタンプがデフォルトで入ってる
- 手書きの動画みたいなのが送れる
- サンプルアプリ
- コントロールセンターが2ページになっている
「あるりんごとの戦い記録」須藤
私が飛び入りでApple審査事例について発表しました。飛び入りなので以前別の勉強会で発表した時の資料を使いました。資料やまとめ等はその時の勉強会参加レポートをご参照ください。