「ギガが足りない?メガが足りないんだ!」
昨年、日本で公開してきたアプリをインドにも公開しました!
日本では問題なく動いているのに、インドでは問題多発。。。
実際にインドに2週間赴いて調査をしてみると、通信環境が日本とは全然違うことが発覚。
そんな環境でもちゃんと動いているアプリは多々あります。
他アプリの挙動からも学んだ、インドの通信環境の攻略法についてお話しします。
テストを書くのって面倒ですよね?理由は様々ですが、ひとつは入力値と期待値を用意する手間だと思います。ベタに用意すると再利用性が低く、また構造変化に弱いというデメリットがあります。その解決策としてFactoryがあります。
ただ、実際はFactoryを用意するのも手間でコストがかかってしまいます。今回はFactoryを自動生成することで、再利用性が高く構造変化に強いツールを作りました。そのツールの特徴とコード生成についてお話します。
Swiftには実行するメソッドを効率的に決定する機構があります。
しかし、静的型付け言語であるにも関わらず動的に決定せざるを得ないパターンや、finalやprivateなどの修飾子がパフォーマンスに影響するパターンなど、実際にはどのような動きをしているのでしょうか。
このトークではSwiftコンパイラの中からその疑問を紐解いていきます。
昨年iMac Proが発売され、そのスペックに多くのiOSエンジニアが魅了されています。
少しずつ企業でも採用されてきましたが、比較的高価なマシンであるが故手が出せていない企業が大半なのではないでしょうか。
このトークでは、新卒エンジニアが初めてiOSアプリ開発を経験し、そのビルド時間と向き合い如何に会社からiMac Proを買ってもらうに至ったかを紹介します。
現開発環境やそこでのビルド時間の計測/測定方法も紹介していきます。
ARKit は WWDC2018 で ARKit 2.0 として大幅なアップデートが行われ、今まで以上に AR で表現できることの幅が広がりました。
今回は ARKit の Ver1.0 ~ 2.0 を実際のサンプルコードと実演で振り返り、ARKit 2.0 まででどういったことをARで表現できるのかをお話しします。
最近、気味の悪い拡張子で有名になってしまった(?)JSON さん。
そんなJSONデータですが、valueは型が決まっていることが多いと思います。
しかし、不幸にもvalueの型が不定、かつ、それをRealmに保存することになったら。。。
型に厳しいSwiftでどのように対処すれば良いのでしょうか?
はじめてiOSアプリを開発して(うっかり沼にハマったことから)得られた知見を共有したいと思います。
UIViewControllerから画面遷移処理を切り離すための設計パターンに、AppCoordinatorとRouterというものがあります。
この二つは名前の違いこそあれど意味するところは同じで、「方言」だと考えています。
このトークではUIViewControllerから画面遷移処理を切り出す理由と方法、名前と役割の対応にまどわされない開発チームになるための、設計に対する姿勢について話します。
XcodeはIDEと呼べない---悲しいかなそんな声も囁かれる我らがXcodeですが、本当にXcodeは「できない子」なのでしょうか?
できないことではなくできることに目を向けるべく、このトークでは以下のことを話します。
・意外と知られてなさそうな便利な機能、設定
・Xcode 10では新しく何ができるようになるのか
Metalに限らず、昨今の3D描画APIは「フラグメントシェーダー」と呼ばれるプログラム可能な陰影処理の仕組みを備えています。
本来はポリゴンで作った形状に対して、その表面の陰影や質感を表現するために各ピクセルの色を決定する機能です。
しかし本来とは全く違う使い方をすることで実に驚くべき描画が可能となります。
フラグメントシェーダーの仕組みとテクニックを交えつつ、フラグメントシェーダーによる様々な表現を紹介します。
スマホは多くの人にとって生活に欠かせないものとなってきており、様々な環境、境遇の方がアプリに触れる機会も増えています。
そんな時、アクセシビリティは一つの大きなテーマになってくると思います。
大人数による大規模アプリで、コンパイラの出す警告を放置したら——
日々増加する警告数に危機感を抱いたエンジニア達が、チーム開発において警告と戦うために行っていたこととは?
警告を消し去る意味に立ち返り、目の前の警告に様々な手段で挑んでいたさなか、あることをきっかけに警告数はついに4000を超える!追い詰められた彼らは“秘策”を練るが……。
これは人類と警告の終わりなき戦いを描いた物語である。
C++はSwiftの実装に使われていたり、Objective-C++でiOSアプリ開発にも使える言語で、iOSアプリ開発と無関係ではありません。
しかし、C++を使ったことのない方も多いのではないでしょうか。
本トークでは、iOSアプリ開発になじみの言語であるSwiftに例えてiOSアプリエンジニア向けにC++の書き方や読み方を紹介します。
C++でのオブジェクト所有権などSwiftと違うところにも着目します。
2017年8月にSwiftの生みの親、クリス・ラトナー氏によってプロポーザルasync/await for Swiftの下書きが公開され、その内容は、コルーチンのサポートによって我々は非同期処理をより読み書きしやすいコードを書けることを意味しています。このトークは、Swift 3から使えるasync/awaitライブラリHydraの利用例とその内部実装を解説し、きたるべきSwift 5時代の非同期処理を先取りするトークとなります。
皆さんは、どのようにして iOS アプリのアーキテクチャを決めていますか?過去の体験や世間の評判から決めているのではないでしょうか。
しかし、実はその選び方には落とし穴があるのです。この落とし穴を回避するために、何を重視し、そしてどこまでアーキテクチャに従うべきなのかについてお話しします。これを選ぶ指針について、ある実在のプロジェクトを例にお話しします。
DebugHeadというライブラリを作って、公私問わず使っています。
デバッグ用に情報を画面に出したり、状態を変更したりしたいけど、そのための実装をするのは面倒くさい…。
そんなときのためのライブラリです。
例えばUserDefaultやRealm内の情報を表示したり、アプリ内のファイルをブラウズしたり、例えば接続先サーバーを切り替えたり…。
用途は無限大です!
近年、アプリの複雑化に伴ってiOS界隈でもテストの機運は高まっています。
しかしどんなテストをどうやって書いていけばいいかわからず、一歩を踏み出せない人も多いのではないでしょうか。
このトークでは、iOS開発でよく目にするロジックに対して、まず一歩目として、ユニットテストをどう入れていくかのサンプルを、コードとともに紹介していきます。
テスト技法やなぜそこにテストを書くのかなども紹介しようと思います。
仕事で4年以上運用が止まったアプリを任されることになりました。
・モデルクラスが存在しない
・誰も仕様を知らない巨大BaseViewController
・テストコードも無い
etc.
そんな時合わせて舞い込んできたフルリプレースの話
・POP
・アーキテクチャ選定
・テストコード
etc.
昔のあるあるを今のあるあるに変える、絶賛奔走中のフルリプレース備忘録をお話できたらと思います。
Clean Architecture、VIPER、MVVMなど様々なアーキテクチャーでDI (Dependency Injection) が使われています。DIにより疎結合でテストを書きやすい設計にできますが、どのように依存関係を定義すればチームでメンテナンスしやすい構成になるか迷っていませんか?メルカリUSアプリを例に、Swinjectを利用したDIのベストプラクティスについて説明します。
アプリのアーキテクチャの選択においても、注目を浴びているRedux。
複雑になりがちなアプリの状態管理を扱いやすくできる点やデータの流れの見通しをよくする点などのメリットがあり、私自身もとてもその点を興味深く感じています。今回はアプリ自体は簡単ではあるものの少し複雑?なサンプルと一緒に基本的な部分や概念とUIに関する処理との組み合わせ方についてお話できればと思います。