BitriseでAppleシリコンベースの仮想化CI/CD環境とビルドパイプラインの提供が開始され、より高速なiOSビルド及び並列UIテストが可能になりました。
それに加え、ビルドとテストパフォーマンス/安定性のデータを可視化するInsights
PROを利用すれば、よりエラーの少ない、安全なiOSアプリ開発ワークフローが実現できます。
本トークでは、Bitriseの機能を活用して大規模なiOS UI 並列テストの実現方法などCI/CDプロセスの高速化する方法を紹介します。
Appleシリコンベースの仮想化CI/CD環境 (M1 stack)によるビルド高速化
ビルドパイプラインの概要、及び導入によるiOS UI並列テストの実現方法
Insights PROによるアプリ開発ワークフローの改善方法
本トークは英語で行う予定です。
日本最大級の音声プラットフォームを運営するVoicyでは、リスナー向けアプリの「Voicy」とパーソナリティ向けアプリの「VoicyStudio」の2種類のアプリがあり、日々開発を進めています。
さまざまな改善を重ねつつ、生放送、アプリ内課金などの新規機能をリリースしてきました。
本セッションでは、改善を重ねつつ新規機能をリリースしている2つのアプリを開発しているVoicyの開発体制、プロセスについてご紹介します。
メドピア株式会社では、2022年2月にアプリ slis[スリス] をリリースしました。0からの新規開発ということで既存関連の制約などはなく、Swift Package Manager、Swift Concurrency、Xcode Cloud など新しいものを取り入れて開発しています。
このセッションではこれら採用した技術を中心に今回の新規開発について紹介します。
弊社では様々な自動化の仕組みに取り組んでいますが、その中でiOS/Androidのライブラリ、特にAPIクライアントについて、セルフサービスで生成する仕組みについて話したいと思います。
ほぼ全てのアプリで欠かせないのがRESTを主としたAPIサーバーと対話するネットワーキングの実装だと思いますが、APIごとに毎回同じような開発をするのは非効率的です。そこで目をつけたのがOpenAPIでした。
OpenAPIとはAPI設計を行う仕様のことですが、このトークでは、OpenAPIを元にしたコード自動生成からデプロイまでを開発者が1行もコードを書かずに生成できるようにした過程を紹介します。
また、中〜大規模チームでのOpenAPI導入の背景やメリットに触れると共に、開発者の要望に応じて、生成されるコードをどうカスタマイズしたかなどもお話ししようと思います。
iOSDCに参加のエンジニアのみなさん、メタバースの開発は Unity や Unreal Engine を駆使するような 3DCG エンジニアの担当領域だと思って敬遠していませんか? 私達クラスター株式会社のカジュアル面談でも、よく聞かれる質問の一つは iOS/Andoird/Web/etc… エンジニアでも活躍する場所が有りますか? というものです。実際は iOS/Andoird/Webエンジニアが多数在籍していますし、更には音響技術が得意なエンジニアから機械学習の研究者まで様々な人材が所属しています。また、その出身となった業界もゲームメーカーやWeb系開発会社、金融機関などなど様々です。本公演では、どんなエンジニアがどんな得意分野をもってクラスターに参画してきたかをご紹介するとともに、もう一つのよくある質問である、どんな開発フローで業務を進めているのかについてをお話しします。
他社だと「マジかよ!?」と驚くような制度や仕組みがゆめみにはたくさん存在します。有給取り放題や給与自己決定なども、ゆめみを代表する制度の一部です。
「その制度って対外的なパフォーマンスでは?」と思う方もいるでしょう。私もゆめみに入社する前はそう思っていました。
入社してわかった「ゆめみ事情」について、新卒の観点からお話しします!
聞いてくださる方には、ゆめみについてもっと知っていただければ幸いです。
アプリを一から作り直したことはありますか?
ソースコードがごちゃごちゃで可読性が低かったり、
修正が難しいバグが多かったりして「一旦作り直し」と
判断されたこともあるかもれません。
作り直したものも最初はピカピカだったが、時間と共に
汚くなり、またバグの多いごちゃごちゃした
ソースコードになり、開発が難しい状態に戻ってしまいます。
そしてまた、作り直すか、大規模なリファクタをするか、
我慢してごちゃごちゃなまま開発を継続するかの選択が
迫られます。
どの選択も非常にコストがかかります。
どうしてこういうことが起きるのでしょうか?
今回は
ヒント: 問題はソースコード以外のところにあるかもしれません!
ビットキーは「テクノロジーの力であらゆるものを安全で、便利で、気持ちよく繋げる」をミッションに掲げるスタートアップ企業です。
自社プラットフォームからハードウェア、ソフトウェアまで開発している弊社ですが、
本セッションではReact Native製iOSアプリworkhubを取り上げます。
workhubは"働く空間において人と仕事の間のあらゆるものを繋げ、新しい働き方に即した体験を提供する"アプリです。
スタートアップにおいて求められる"機能開発のスピード感"と、決して無視できない"保守性の担保"をいかに両立するか?をテーマに、
1年半の間取り組んだNative化をご紹介します。
・スタートアップにおけるソフトウェア開発に求められるもの
・なぜReact NativeアプリをNative化するに至ったか
・Native化の方法論
・Native化により得られたもの / 難しかった点
LINE iOSは、200万行を超えるソースコードと200以上のモジュールで構成されている大規模なプロジェクトであるため、そのビルド時間も長くなりがちです。
私達はビルド時間の改善の一環として、Bazelを取り入れました。その結果、ビルド速度が2倍になるというメリットを享受しましたが、メンテナンスコストが増大するというデメリットにも直面しました。
このセッションでは2年間Bazelを使い続けて分かったBazelの長所やリスク、運用時の注意点、そしてLINE iOSのビルド環境の現状と今後についてご紹介します。
iOSのビルド環境はXcodeやSwift Package Managerのアップデート、新しいMacの登場などによって毎年変化を遂げています。
サービス提供を開始した2015年から現在に至るまで、これらの変化に合わせて継続的にビルド環境の改善が行われてきました。
本セッションでは2021年以降に実施したビルド環境の改善についてご紹介し、今後の目指す姿についてお話いたします。
iOSアプリと一緒に、Androidアプリを作成することはよくあります。
2つのアプリを同時に開発すると問題がよく起きます。「iOSとAndroidで動きが違う」と。
実装するエンジニアの認識のズレ、言語仕様の違い、例えどれだけ念入りにやったとしてもこの問題はいつか必ず発生することでしょう。
そのような問題をKMM(Kotlin Multiplatform Mobile)を用いて解決します。
アプリのビジネスロジックをコードレベルから共通化し、OS間での差異が起こらないような開発ができる上に、ビジネスロジック部分の記述はKMM一つで済むようになります。
このセッションでは、基本的なKMMの概念の説明から、実際にiOSのプロジェクトへのKMM導入し動作させるまでを、弊社での取り組みを交えて解説いたします。
タウンワークiOSアプリは、10年以上開発が続いています。度重なる機能追加や仕様変更によって、プロダクトは徐々に複雑に、レガシーになっていきました。そのため、Clean Architectureの導入によるレガシーからの脱却を図りました。
Clean Architectureに則りドメイン層を分離してみましたが、いくつか不明な点があり、技術顧問の和田卓人氏に相談したところ、そもそも我々のモデリングにたくさんの改善点があることがわかりました。
そこから、チームの中で既存コードからドメインモデルを発掘し、再設計する旅が始まりました。
このセッションでは、ドメイン層が何をするかよくわからない、設計に困っている人に向けて、アプリにとってのドメインとは何か、どのように見つけ出し設計すればよいか、そして評価の方法について私たちの経験を交えてお話します。
AirインボイスのiOS開発チームは、AirインボイスiOSアプリをSwiftUIで開発しています。
WWDC2022でiOS16が発表され、iOS14以上をサポートとすることができるアプリが増えたことで、本格的にSwiftUIの導入を検討している方も多いと思います。しかし、最新のOSのみをサポートするのではなく、iOS14系や15系もサポートするとなると、そこには数多くのハマりどころが存在します。また、要件によってはSwiftUIでの実現に工夫が必要なポイントも数多く存在します。
本トークでは、iOS14以上を対象としたAirインボイスiOSアプリにおいてSwiftUIを用いてさまざまな要件を実現するにあたり、はまったポイントやそれらをどのように回避したかを共有します。
Wantedly では、「デザインの生産性を向上させ、デザイナ - エンジニア 間コミュニケーションを改善することで、ユーザに価値を届ける速度を向上させる」ことを目的として UI デザインシステムを作っています。
今回は現場で運用されているデザインシステムと iOS 実装の成功と失敗について以下の内容を話します。