ダイナミックデスクトップが登場してから早4年。
動く壁紙というのは、身近な存在になってきているのではないでしょうか?
AppStoreにも動く壁紙を設定できるアプリはちらほら存在します。
どのように実装しているのかは謎ですが、壁紙をハックするのはなんだか夢があって楽しそうですよね。
そんな方のために、このLTではmacOSの壁紙に関するハック術を紹介します。
YouTubeの動画も壁紙にできちゃうかもしれません!
この機会にあなたの壁紙をパワーアップしてみませんか?
API が絡む開発を行う際、大抵以下のような複数のビルド設定が必要になるかと思います。
今回 .env と Xcode の Run Script を使って各環境ごとに異なる API 接続用の値をビルド時にアプリに組み込む方法で開発を行ったのでその方法について共有します。
弊社アプリは長い開発期間の中で多くの負債を抱えていますが、複雑な依存関係や少ない開発リソース(現在iOS開発は1人)で通常施策の実装を行いながら改善する余裕がない等の理由でコアな部分の実装には手を入れられず放置されてきました。
負債の一つとして、弊社アプリには神(オブジェクト)がいらっしゃいます。
そこに含まれている内の一つ、API関連の機能はCodableも無い時代に作られているために現在メンテされていないライブラリに依存をしており、以前から改善したい機能として挙げられていました。
本トークではなんとなくで使われていたOpenAPIドキュメントをコード生成が正しく行えるように整備し、そこからコード生成を行い開発フローに組み込んだ方法について紹介します。
TabularDataはiOS 15/macOS 12から追加された、機械学習モデルの学習に使う表形式データを閲覧したり、加工したり、書き出したりするための新しいフレームワークです。
このセッションではオープンデータとして公開されているデータをTabularDataを使ってデータ処理する方法について紹介します。
以下のような内容を紹介する予定です
・TabularDataのAPIの紹介
・表形式データからのサマリー抽出について
・非構造化データの変換
・表形式データの結合
Swift Package Manager (SPM)に対応したOSSライブラリが増えてきた昨今、CocoaPodsやCarthageからSPMへ移行を検討している方が結構いるのではないでしょうか?
しかし、正しく製品を提供するなら使用しているライブラリのライセンス表示は必須です。
そこで、CocoaPodsやCarthage向けのライセンス表示ライブラリはいくつかありますが、SPMに対応したものはあまり見かけなかったため仕組みを自作しました💪
仕組み作成の上での躓きどころを踏まえながら、Swift Packageのライセンスを収集して表示するまでの流れを説明します。
突然ですが、続けることって難しいですよね。例えば、機能開発しながらコツコツとリファクタリングすることや、テストを追加するなど。
でも忙しくなってしまうと後回しになって途中でその取り組みが超滅・・・なんて経験したことないですか?
そんな経験をしたことある方必見です!
ZOZOTOWN iOSチームには、緊急性は低いが重要度が高い「効果性の領域」と呼ばれる放っておくといつまでも解決されない課題を探し改善する取り組みがあります。
そしてその活動を2年ほど継続してきました。
本トークでは「継続」にフォーカスして、機能開発をしながらでも改善活動をし続けるために役立つ準備をご紹介したいと思います。
どれも簡単なことですが、効果は侮れません。続けたくてもなかなか続かない人の参考になれれば幸いです。
Metalは2014年のWWDCでGPUを扱うフレームワークとして登場しました。
直接使うことは多くないとはいえ、今や数多くのフレームワークを支えている重要なフレームワークです。
しかしなぜMetalという名前なのでしょうか?
私はその名前の由来にたどり着くことはできませんでした。
そういえばこの世界も見渡せば数多くのものが金属に支えられており、金属なしには現代文明は成り立ちません。
もしかすると様々なものの土台となる存在としてMetal(金属)と名付けられたのではないでしょうか?
私は日々そんなことを考えながらMetalを使ってプログラムを書いたり、砂鉄を集め炭で加熱し鉄を作ったりしています。
このLTでは我々に最も身近な金属である鉄と、フレームワークとしてのMetalの共通点を探ります。
何を言っているのかわからないと思いますが鉄の作り方を通して暑い夏をより熱く盛り上げます。
「WKWebViewではAPIがないから、JS挿入するか」
皆さんはこんな状況に遭遇したことはありませんか?
ご存知の通りWKWebViewはアプリでWebコンテンツを表示、操作が可能な便利なAPIです。
WKWebViewでは提供されていないコンテンツ操作をしたい場合でも、JavaScript(以下JS)を挿入することで可能になります。
しかしJSに頼った実装にはデメリットも。。
そんな中iOS14.5やWWDC21の発表で、コンテンツ操作のAPIが新たに加わりました。
本LTでは、そのAPI登場前の実装との比較を用いてその威力を紹介します。
【目次】(予定)
今年の6月、個人的に作り始めたSwift言語ガイド日本語版のリンクを公式サイトに掲載していただきました。
最初から目標としていた訳ではなく、ふとした思いつきから始め、途中で「せっかくだから何か目標が何かあった方が良い」と思い、後付けで目標を掲げたところ、多くの方のサポートや応援をいただき、今回1年越しに達成することができました。
何かやってみようと思ったけどやらず、「やっぱりやっておけば良かったかなあ!」と後悔すること、ありませんでしょうか?僕はいつもです。
そんな僕でも、なんだかんだ色々なことを始め、結果やって良かったと思えることがたくさんあります。今回は、僕が「よし、これやってみよう」と行動を始めるきっかけをどう作り、続けていくかをお伝えすることで、何かちょっと始めてみようかなと考えるきっかけになれば良いなと思っています。
※ 技術的な話はしません。ただただ僕の思いを伝えます。
HealthKitを使ったアプリの開発経験はありますか?
近年の健康志向の高まりからヘルスケア連携したiOS開発に関わる機会も増えていると思います。
このLTではHealthKitをはじめて扱う上で最低限抑えておきたい知識や、実際に利用したアプリを作った際に気づいたポイントについてご紹介します。
・HealthKitでできること
・扱えるデータの種類について
・データのプライバシーについて
・注意するポイント
「運動しなきゃなぁ」と思っている皆さん。自分でHealthKitを使ったアプリを作って運動不足解消しませんか?
iOSにおけるIn-App Purchase(アプリ内課金)はiOS 3から利用可能であり、その歴史は10年以上に及びます。
この長い歴史の中で、Ask to BuyやUpgrade / Downgrade、お試しオファーなどの多くの仕組みが追加され、やれることが格段に増えました。
アプリ内課金をサポートするための仕組みも、Store Kit 2による実装方法の変更やアプリ内での返金機能をはじめ、Server NotificationsやTransaction Receiptのフォーマットの変更など、新しいものが次々にリリースされたり、StoreKit Testingによって自動テストが出来たりSandbox環境がアップデートされたりなど、課金のテストにまつわる状況も大きく変わりました。
本トークでは、5分間でIn-App Purchaseの激動の歴史を爆速で振り返っていきます。
Xcodeの複数バージョンを使い分けようとしたらDockに同じアイコンが並んでどれがどうだかもうわからない!
_人人人人人人_
> もう嫌だ! <
 ̄Y^Y^Y^Y^Y ̄
アプリのアイコンを自由に変更できるmacOSの素晴らしい仕組みを使って、俺得なCLIツールをSwiftで開発しました。
しかもアイコンのテンプレートはみんな大好きSwiftUIで作れるようにしました。
2年連続で完全オンライン開催となっていたWWDCですが、今年は1日限定のスペシャルイベントがApple Parkで開催されることになりました。
本LTでは、そんなスペシャルイベントに奇跡的に当選した私が、新卒で海外未経験、初WWDCというフレッシュな目線に立ちながらWWDC22に現地参加したことで見られたもの、得られたものを(NDAに抵触しない範囲で)紹介します。
目次(予定)
・コロナ禍における海外渡航で必要だった社内手続き
・Developer Centerではどんな経験ができたのか
・基調講演ライブビューイング中の現地での様子
・Apple Parkで出会った人たちとコミュニケーションをとってわかったこと
・スペシャルイベントにはまだ続きが…? ”so much more…”の正体
・WWDC22が僕をどう変えたか
・プロダクトオーナー「こういう画面を実現したい!」
・エンジニア「できます。。。」
・エンジニア(心の声:HIGに違反しているんだよなー)
・エンジニア(心の声:これ全部満たすと実装コスト跳ね上がるんだよなー)
・エンジニア(心の声:保守性もさがるしなー)
・エンジニア(心の声:でも、言ってもしょうがないし、やるか)
これを実現したプロダクトは、プロダクトオーナーが望む結果は得られていますが、HIGや、実装コスト、保守性を考慮した仕様になっていません。
あるべきとしては、実現したい目的を共に理解し、その上で、HIG、実装難度、保守性を考慮した調整を行った上での実装仕様を、エンジニアの方と一緒に決めていきたいという話をしたいと思います。
note に入社して2ヶ月、報告したバグ数は 20 件以上。そのうち自分で修正したバグは 15 件以上。作ったPR は40以上。
QA委員会やバグバッシュなどをやってきている note 社でさらに追加で20件以上みつけた手法や、1500 ファイル以上ある note プロジェクトから修正したいファイルを見つけていった手法についてはなします。
老舗メーカー・パイオニアのiOSおじさんがFlutter初挑戦!
デザインスプリントにインスパイアされ、中途採用で入ってきたFlutterエンジニアにFlutterを教わり、5日間でFlutterアプリ開発に挑戦!
時代はFlutterなのか!?
はたしてiOSおじさんはFlutterおじさんにジョブチェンジできるのか!?
昨年のクリスマス、Swiftチームからプレゼントが贈られました。
なんとVSCodeでSwiftが公式にサポートされたのです。
VSCodeのパワフルな機能を使って、Swiftで実装していくことができます。
Swift Packageを利用してライブラリを導入したり、ビルドしたり。
コードを補完したり、定義へのジャンプもできます。
また、拡張機能のおかげで、GitHub Copilotを使えば、AIが代わりにコーディングしてくれたり、
swift-formatのおかげでSaveした瞬間にformatできるなど、快適なコーディング環境を実現できます。
このトークでは、お手元のVSCodeでSwiftを快適に利用するためのセットアップと、その使い心地についてお話しします。
みなさんは明日からVSCodeを使ってSwiftを楽しむことになります。
位置情報を利用するアプリケーションを開発したことのある方は、一度は位置情報のアクセス権限に苦しめられたことがあるのでは無いでしょうか。
またiOS 13からは 「1度だけ許可」という選択肢が追加され、アプリを利用する際のセッション毎にユーザーが位置情報サービスを許可するかどうか選べるようになったり、requestAlwaysAuthorization
を呼び出した場合の選択肢が「使用中のみ許可」「一時的に許可」「許可しない」に変更されたりと、位置情報のアクセス権限は更にとっつき難い存在となっています。
このセッションではiOS 13以降の複雑な位置情報アクセス権限の全貌の紹介および、iOS 15で導入されたCoreLocationUIを用いることで簡単に利用できるようになった位置情報取得について紹介します。
新入社員の受け入れや新規端末購入の際に発生する面倒事として、UDIDの追加、証明書とProvisioning Profileの更新があります
fastlaneを利用すれば作業は簡素になりますが、UDIDは都度入力する必要があり、運用担当エンジニアが手動でCLIを叩きがちです
この面倒事から逃げるために、GitHub Actionsで提供されているmanual workflowsを活用し、誰でもUDIDの追加をできるようにしました
このLTを見て、あなたも今日からUDID登録作業から開放されましょう
「iOSやmacOSのアプリ開発に必要なエディタと言えば?」
この質問に「Xcode!」と即答しようとしたあなた! JetBrainsが提供する開発環境「AppCode」をぜひ一度試してみませんか?
強力な静的解析やリファクタリング機能、あまたのプラグインに外部ツールとのインテグレーションなどなど、Xcodeでは実現できない、便利機能が盛りだくさん!
さらにSwiftUIのプレビューもサードパーティツールを使ってシミュレーター上で利用可能!
本トークでご紹介する各種機能や設定を通じて、AppCodeの素晴らしさを知り、あなたもぜひ快適なアプリ開発体験を手に入れてください!