iOSこんにちは!ZOZOTOWNやWEARのiOSアプリ開発をしている元と小野寺です。2019が開催されました。今回ZOZOテクノロジーズでは12名のメンバーで参加し、弊社はスポンサーとして協賛しました。2019にて発表されたセッションの一部を紹介すると共に、現場の盛り上がりの様子もお伝えします。最初に紹介するセッションは弊社の技術顧問をされている岸川さんのセッションです。Japan内容はライブラリを使うときに遭遇するimportエラーやlinkエラーに対してシステマチックに解決するために必要な知識についてです。ライブラリやフレームワークのimportエラーやlinkエラーを解決するとき、このセッションの内容は非常に役に立ちます。応用編ではこのセッションで紹介された知識を活用できる方法がいくつか紹介されました。その中でアプリの起動時間短縮に有効な方法があり、効果があるならZOZOTOWNアプリにも導入しようと思ったので実際検証してみました。着目したのはスライドの以下の部分です。Time」にてアップルが紹介した方法でもあります。具体的にはダイナミックフレームワークはアプリ起動時にコストの高いリンク処理が発生するので各フレームワークをスタティックフレームワークとしてビルドし、その全てを1つのダイナミックフレームワークにまとめることでリンク処理のコストを抑える方法です。dyld2に関しては現状サードパーティのフレームワークで使われてるので効果ありだと思いました。実際に1つのダイナミックフレームワークにまとめてから今回のセッションで学んだ具体的な設定方法を使い、サンプルアプリで検証した結果を共有します。time」がダイナミックフレームワークのロード時間です。両方とも短縮されているのでちゃんと起動時間が短縮されたのを確認できました。運用しているアプリの起動時間が長いのであれば試してみるといいかもしれません。Talkで名取が登壇しました。Japan発表内容は、自身が作成した個人開発のアプリ「大人のなぞなぞ〜脳トレIQ謎解きアプリ〜」を約100万ダウンロードまで成長させた戦略についての解説です。これからアプリを実際に公開してみようと考えている方、既に公開している方どちら側であっても参考になる発表内容でした。個人で開発したアプリでは、プロモーションにお金をかけることは、難しいですよね。そんな個人開発のアプリを約100万ダウンロードされるまでに成長させた際に行った戦略の紹介です。発表の中で、ASO対策としてキーワード検索で上位に表示させる為の工夫が紹介されました。ASO対策としては、次のようなポイントに気をつけると良いようです。タイトルには、何のアプリなのかを表す為のキーワードを取り入れることサブタイトルには、どんなアプリなのかを伝えるワードを取り入れることキーワードには、ひらがなやカタカナ、漢字などを含めるセッション内では、カメラアプリを例にしてわかり易く説明されていました。他にもアプリの評価を上げるために、高評価をしてくれそうなユーザーにレビューを依頼する取り組みについて紹介がありました。高評価が期待できるユーザーの例として、次のような具体例が紹介されました。実際に100万近くダウンロードされたアプリでの取り組みということもあり、とても説得力がありました。今後アプリを公開する際により多くのユーザーに使ってもらう為には、どんな事に気をつけたら良いかの指標となる内容でした。タイトルの記載内容やレビューへ促す条件を、紹介された内容や他のアプリとの比較をしてみることで、自身のアプリでの対策を見返す良い機会にもなりそうです。FatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えたテスト方針を決めるときは状況や環境を考慮する必要があるため、決まった対応パターンが存在しません。他社の対応事例は「過去の対応方針を振り返るとき」や「これから決めるとき」参考になります。このセッションではまさにそのテスト方針を決めるとき、何を考慮し、どう対応したかが事例として紹介されました。「普段、テスト方針を決めるために自分がやっていることに問題はないか」、「他の人はどう決めてるか」はとても気になってたので自分の過去を振り返りながら、そして同じ状況なら自分はどうやるかを考えながら興味津々に発表内容を聞きました。セッションで紹介された「再現可能なテストはないが安全に修正したい。ミスは許されない」状況で自分なら何を考慮するかを考えたときに思い浮かんだのは以下です。開発スケジュール的に使えるリソースはどれほどあるか(工数)テストコードを書きやすい設計になっているかテストしたいのは何か(ロジックか、表示か、挙動か)実装コスト実行コストテストの生存期間やメンテナンスコストセッションでも上記は考慮対象だったので大きくはズレてないと思い、少し安心しましたがUIテストを積極的に検討してる部分は印象的でした。今までUIテストは「手間がかかる」、「メンテコストがかかる」と単純に思い込んでいたのでもう一度UIテストに関して振り返ってみようと思います。他にはサービスの中の重要な価値について「認識を共有する」という項目も印象に残りました。確かにここをはっきりしておかないと暗黙的な基準で判断してしまうこともあるかもしれません。このセッションはテストに関する自分のやり方を振り返るきっかけになったと思います。他社の事例を知ることは滅多にないのでテストに興味がある方は是非このセッションの資料を見ることをオススメします。2019年版こちらのセッションでは、多言語化が未対応のアプリでの対応の始め方から紹介されていました。いった多言語の対応を行っていることもあり、このセッションを聞いてみることにしました。WEARアプリでは文言もユーザーに伝わりやすいように、見やすいようにとデザイナーが試行錯誤して決めています。実装の節目で私たちはデザインチェックを行うのですが、4つの言語の確認となりますとシステムの言語を都度切り替えて確認しなければならないという手間がありました。いった背景から私は、このセッションの中で紹介されたうちの1つ「アプリで言語を切り替えられるようにしよう」に興味を持ちました。13以降からiOSの標準機能として盛り込まれる機能のようです。12以前のバージョンで実現する方法が紹介されていました。"AppleLanguages")にて[String]で定義されています。ここで定義されている言語は、設定>一般>言語と地域の中で追加されてる言語です。"AppleLanguages")から取得された配列の先頭の言語が使用されます。やってアプリ内で言語を切り替えるのか?例えば現在表示されている言語が、日本語の状態から英語に変える場合を考えます。"AppleLanguages")で取得される配列の順序を変更することで切り替えが可能なようです。"ja-JP"]と変更することで切り替えられます。この他にも、設定アプリで追加されていない言語を追加する方法や、リセット方法なども含めてデモンストレーションを交えながら詳細に説明していただきました。次に興味を持ったのは、「翻訳SaaSの導入で翻訳者にプルリクを出してもらおう」です。この項目では、エンジニアでない方も翻訳変更に対するプルリクが発行できるような仕組みについて紹介されました。ここではCrowdinというSaaSを例に説明されました。CrowdinとGitHubの連携時に、管理したいLocalizable.stringファイルを連携すると翻訳リストを管理するUI上で翻訳の変更が可能になります。変更することで、プルリクが発行されるという仕組みになっているようです。WEARアプリでは、英語と中国語の翻訳をそれぞれ別の方が担当して対応しています。私たちは、翻訳が必要な文言のやり取りをConfluenceやSlackを使ってやり取りして対応してきました。現状の運用方法ですと翻訳依頼の取りこぼしや反映漏れなどが稀に発生していたこともあり、改善策を考えていました。そんな中で、今回のような具体的な運用例をあげての紹介はとても参考になるお話でした。その他にも、翻訳ネームスペースを使った翻訳文言の管理方法や文字装飾のローカライズの方法などが紹介されていて、今後迷った時に参考になる発表内容でした。選出された登壇者によるセッションは、いくつかのテーマを同時進行でそれぞれの講義室で行われます。セッション会場は、写真のように席がぎゅうぎゅうになることもあり、セッションに対する参加者の注目度の高さが伺えます。Japan弊社の名取や技術顧問の岸川さんのセッションの際も、席は参加者で埋め尽くされてました。運営の方々の1人でも多く参加者がセッションを聞けるようにという想いから「機械的席詰め」というシステムが度々施行されました。これは、三人掛けの席で右側が空いていたら機械的に右に詰めるシステムという仕組みのものです。会場の思いやりによって生まれた、この理想的なゾーンディフェンスのように美しいシステムに、私は感動を覚えました。セッションは今後プロダクトに関わっていく上でどれも興味深く、勉強になりました。各登壇者が発表の中にデモンストレーションを組み込んでいたり、笑いどころを入れるなどの工夫も見られ楽しく発表を聞くことができました。2019ではトークセッションの他にも、様々な企業が軒を連ねるブース会場があります。セッションの合間や、お昼休憩などセッションのない時間帯は特に参加者の方々で会場はとても活気付いていました。Japanこの会場ではイベントのスポンサーとして協賛している企業がブースを出展して、参加者とのコミュニケーションを図っていました。私たちZOZOテクノロジーズのブースを少し覗いてみましょう。Japan今回ZOZOテクノロジーズでは、以下のテーマでアンケートを用意しました。Japan参加者の方々のアンケートへの協力もあって、たくさんの方々と交流することができました。実際にアプリを開発しているエンジニアや広報担当が参加者の皆さんの質問に答えるといった、お話もさせていただきました。参加者の皆さんと接する機会をいただけたことで、私たちもとても楽しい時間が過ごせました。#zozotechにて載せております。ご覧になってください。2019、本日ZOZOテクノロジーズブースで行ったアンケート結果はこちらです!投票ありがとうございました。本日のアンケート結果はこちらです。Japan午前中のセッションが終わると参加者の行列が。その先には、参加者分のお弁当とお茶の用意がありました。Japan私が食べたのは、野菜を豚肉でぐるりと巻いた豚肉巻きとシャケの切り身に明太子のソースが絡み合ったおかずのお弁当。副菜には、ゴーヤやゆで卵といった色とりどりの食材を使ったサラダが添えられており、セッションの合間の休憩時間を彩ってくれました。2019」が行われます。zozotech-inc.connpass.com最後にZOZOテクノロジーズは、ファッションを技術の力で変えていくというミッション達成のため一緒に働く仲間を募集しています。iOSチームの荒井です。Lambdaを使ってRubyKaigi用のデモアプリを作った話こんにちは、開発部の塩崎です。BLOGプロフィール株式会社ZOZOテクノロジーズのテックブログです。