読者です 読者をやめる 読者になる 読者になる

Shizuna-ito's Blog

iOSエンジニアですと言いたい

shibuya.swift#7に参加しました

iOS Swift 勉強会

shibuya.swift7

前回に引き続きshibuya.swiftに参加してきたので、その際のメモをまとめました。

https://shibuya-swift.connpass.com/event/47031/

日時

2017年1月26日(木)19:30〜21:30

会場

株式会社Branding Engineer

カスタムトランザクションやアニメーションを活用した「写真を生かすUI」のサンプル

fumiyasacさん

内容

  • CustomTransitionで遷移時の表現を彩る
  • 外付けクラス;アニメーション時間、アニメーションの実装
  • アニメーション実体を遷移のタイミングで適用する
  • 処理の実体はContainerViewを作成しその中に表示対象入れる
  • navigationがシンプルならアニメーションで目を引くUIに出来る!
  • 必要以上に大きく動きすぎないことを心がける
    • 秒数におけるパラメータの調整
    • 1画面に必要以上にいれすぎない
  • Customransitionの活かし方次第で画面遷移時の様々な表現が可能

業務で絶対必要にならない技術

nakajijapanさん

内容

  • NSTouchBar:いろんなものを動的にボタンにしよう
  • デザインについて
    • 表示したものの中にアクション実装
    • touchbarだけで完結するものはダメ
  • サンプルが充実してる
    • NSTouchBar Catalogが特に良い
  • simulatorが使える(touchBarないmacでも開発できる)
  • 実装
    • storyboardで視覚的に配置が可能
    • コンポーネントは以下のものがある
      • Button(NSCustomTouchBarItem)
      • GroupButton
      • Popover
      • Scrubber(collectionViewみたいなもの)
      • SharingService(SNSシェア用のコンポーネント
  • はまったポイント
    • 録画機能つけようとしたが、録画している時はフォーカスが別のアプリになってしまうのでストップできなかった
  • それ単体で完了する動作に適用するのが良い

merciless refactoring

チェンさん(@vc7, @vince78718)

内容

途中からSwiftLint

kuroyamさん

内容

  • SwiftLint:コードの品質チェックツール
  • 『「謎のスペースあります」「;が付いてます」などの無駄な修正→生産性落ちる』を防ぐ
  • minneのSwift化:6月から、約3割、メンバー同士で教えあう
  • SwiftLint入れた→warning999+(改行した時に空行に自動で入るスペースエラーなど)
  • 対策
    • 一旦全てのruleをdisable
    • スペースの有無、コロンの位置、末尾セミコロンの削除などのruleを一つずつ有効にして修正
  • はまったところ
    • 0.14.0からSwift3対応(minneはSwift2.3なので0.13.xを入れた)
    • バージョンみんなで合わせないと誰かのところだけワーニングみたいになる
  • コードを改善していく中でdisableにしたrule有効化していく
  • SwiftLintが絶対正しいわけじゃない。 チームの方針を優先するべき時もある。
  • 良かったこと
    • 細かい間違いでレビューする必要なくなった
    • SwiftLintのワーニングが見やすいように他のワーニングがでないようにしようという雰囲気が出てきた

Firebaseを使ってみたメモ(導入編)

iOS Swift

iOSアプリ開発を始めた時からお世話になっていたParse.comがついにサービスを終了してしまうので、代わりとしてFirebaseを使ってみました。

Firebaseって?

  • Googleが提供しているMBaasサービス
  • Googleアカウントを持っていれば無料ですぐ始められる!
  • iOSAndroidJavascriptC++など様々なプロジェクトで使える

Firebaseでできること

  1. Analytics : アプリの使用状況等の測定分析。
  2. Authentication : ユーザー認証、ソーシャルログイン。
  3. Realtime Database : データベース。すべてのクライアントでリアルタイムに同期される。
  4. Storage : 写真などのファイルを管理。
  5. Hosting : webアプリ向け静的ホスティング
  6. Test Lab for Android : アプリテスト。Android用。
  7. Crash Reporting : アプリのクラッシュレポート。
  8. Notifications : Push通知。
  9. Remote Config : アップデート公開せずにUIや機能の変更を反映させる。
  10. Dynamic Links : リンクを開いたプラットフォームの状況に応じて動的に動作を変更する。
  11. AdMob : モバイル広告プラットフォーム。
  12. Cloud Messaging : メッセージの配信・通知。

Firebaseを始める

開発環境

Swift 3.0.1 Xcode 8.2.1

導入

1. Firebaseに登録

Firebase にアクセスし、無料で開始をクリックする。

f:id:shizuna-ito:20170112120912p:plain

2. プロジェクトを作成する

新規プロジェクトを作成をクリックし、下の画面が出てくるので必要事項を入力。 入力後、プロジェクトを作成をクリック。

f:id:shizuna-ito:20170112120900p:plain

3. 自分が作ったiOSアプリにFirebaseを追加

iOSアプリにFirebaseを追加をクリックし、必要事項を入力。 iOSバンドルIDは、Xcodeプロジェクトの中の『Bundle Identifier』の内容をコピーしていれる。 (App Store ID は省略できる。)

f:id:shizuna-ito:20170112121433p:plain

『GoogleService-Info.plist』というファイルが保存されるので、これをXcodeプロジェクトに追加。

f:id:shizuna-ito:20170112122041p:plain

CocoaPodsをプロジェクトに入れ、Podfileに以下のように記述する。 (今回はデータベースを試したいので'/Database'を入れる。)

f:id:shizuna-ito:20170112122412p:plain

pod installが正常に行われればFirebaseの導入は完了!!

まとめ

今回はまず導入までやりました。 Googleアカウントを使うことで面倒な登録もなく、公式ドキュメントが日本語対応していたためとても簡単に導入できたなという印象でした。

次回はデータベースの設定からデータの保存取得についてまとめようと思います。

shibuya.swift#6に参加しました

先日開催されたshibuya.swiftに参加しました。 その際メモを取ったので内容まとめました。 (タイトルをメモしていなかったものが多数あるのでその部分は曖昧です。)

shibuya.swift6

https://shibuya-swift.connpass.com/event/42712/

日時

2016年12月15日(水)19:30 〜 22:00

会場

ピクスタ株式会社

MetalでGPUコンピューティング

yuky_azさん

内容

  • MetalとGPUコンピューティング
  • MetalはiOS8で導入された画像処理や並列演算を効果的に行うフレームワーク
  • Metalを使ったGPU並列演算について取り扱う。
  • MetalShadingLanguageで記述したコードがGPU側で実行される。
  • CPUとの処理の比較
  • GPUとCPUに配列データの要素に1を足す処理をさせて処理速度を比較
  • リピート数が大きいと50〜60倍の差が出る!
  • ただし、小さいとGPUへのデータ転送などの時間の関係でCPUの方が処理時間が短い
  • Metalを用いた群知能の実装 (すみません、難しくて内容を追うので精一杯でした)

参考資料

http://qiita.com/yuky_az/items/ece9b64befc635e89f1a http://qiita.com/yuky_az/items/ce5920f28c08e743418b

結婚式専用アプリ

motokieeさん

内容

  • 実装背景
  • 結婚式で撮った写真を共有するのがめんどくさくて出来ていない
  • 全員で簡単に共有出来るアプリがあれば送る手間も省けてみんな送ってくれる&見れる
  • Firebaseを使用する
  • Push通知が送れる(Notification)
  • 少人数なので無料で出来る
  • お知らせページを作れる(JSONでStorageに保存)
  • 配布方法
  • deploygate使用
  • UDIDをもらうのに苦戦した(わからない人からしたら怖い)
  • 一人一人に丁寧に説明して解決した
  • 結果
  • 172枚のアップロードがあった
  • 一人が送った172枚ではなく一人平均5枚送ってくれた172枚というのが良かった

ローディング時のより良いUIの実装

macs_6さん

内容

  • 今までのローディング画面
  • プログレスバーかスピナーがほとんど
  • ローディング画面が長い(長く感じる)のも離脱の原因になる
  • Facebookなどのローディングが良い
  • 次に表示されるものがわかるのでユーザーに期待感を持たせられる
  • シマー効果
  • 流れるようにキラキラするやつ
  • Simmerという(昔のiOSのロック解除のUI)
  • ケルトンスクリーン
  • 次に表示されるviewに似せたプレイスホルダー

プレゼン資料

https://speakerdeck.com/matsue/rodeingushi-falseyoriliang-iuifalseshi-zhuang

SwiftのExtensionをモダンでオシャレに実装する

motokieeさん

内容

  • ExtensionをExtensionであることをわかりやすく書く
  • yamabukiという色の定義をした時にUIColor.yamabukiだと元々あるものなのかつくったものなのかわからない
  • UIColor.ex.yamabukiみたいにしたら分かりやすい
  • RxSwiftのswift3.0での変更も同じ(rx_text → rx.text)

プレゼン資料

http://qiita.com/motokiee/items/e8f07c11b88d692b2cc5

RxTestを使ったUI層のテスト

Nonchalantさん

内容

  • VC, Presenter, ViewModelの設計にすることでテストしやすくなる
  • VCからUIEventを受け取り、ViewModelにデータ反映するPresenterを作ることでてストライクにする
  • UI層(Presenter)のテスト
  • Quick, Nimble, RxTestを使ったテストの実装例

プレゼン資料

http://qiita.com/Nonchalant/items/37aed854bac4371fef4a

AbemaTV on Apple TV (tvOS入門)

dekatotoroさん

内容

  • Apple TVについて
  • Apple TVの機器自体について
  • UIKitで開発するTraditional AppsとtvOS独自のCliant-Server Appsがある
  • 開発の概要(Icon, Layout, Interface Elementsなど)
  • AbemaTV on tvOSの開発
  • 2か月、エンジニア2名+ディレクター1名+デザイナー1名
  • iOSアプリとは別プロジェクトで開発
  • UI/UXを標準的なものに合わせた

プレゼン資料

http://www.slideshare.net/yuujihato/abematv-on-tvos

感想

まず、『学生向け』や『初心者』というタイトルでないイベントに今まで少し怖さがあり参加していませんでしたが、想像していたよりずっと気軽に皆さん発表していらっしゃって参加しやすかったです。また、MetalやtvOSなど、自分が今まで使用したことのなかった部分は入門的な内容もあり分かりやすかったです。 今回は参加者として皆さんのTalkやLTをお聞きするだけでしたが、また参加するときには自分も何かお話できるように頑張ろうと思いました。