Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
TipKitTips
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Ryomm
February 22, 2026
Programming
240
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
TipKitTips
2026.02.22 Hakodate.swift #1
Ryomm
February 22, 2026
More Decks by Ryomm
See All by Ryomm
巨大モノリシックアプリ モダン化大作戦
ktcryomm
1
1.3k
なあ兄弟、 余白の意味を考えてから UI実装してくれ!
ktcryomm
11
11k
iOSでQRコード生成奮闘記
ktcryomm
2
380
iOS18でQRコードが表示されなくなった🤷
ktcryomm
0
180
リョムキャットのパーフェクトSwiftネーミング教室
ktcryomm
0
2.5k
Slackを使いこなせ!Slack効率3000倍
ktcryomm
0
1.5k
クソアプリ作って煙突詰めた♪
ktcryomm
0
130
Other Decks in Programming
See All in Programming
RAG の “R” を Swift で覗いてみる 〜「意味から探す」検索の仕組み〜
nao_randd
0
120
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
340
Ghostty + Neovimで作る 透明でカッコ良い開発環境
j341nono
0
150
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
120
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
520
Embedded Swiftで作る自作USBデバイス によるiOSデバイスの自動テスト / iOSDC Japan 2026 glassfiber
glassfiber
0
290
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
620
Security issues being discussed on Web Platforms
petamoriken
0
1.4k
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
440
Are APIs Still Relevant in the AI Era?
soyuka
0
420
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
0
390
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
670
Featured
See All Featured
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
710
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Skip the Path - Find Your Career Trail
mkilby
1
240
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
530
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
360
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Transcript
None
None
None
None
None
None
None
None
None
TipKit! TipKitの話します。
TipKitはこういうヒントを表示するためのフレームワークです。
ドキュメントを見るとiOS17以上!
そういえば先週、トヨタさんがこんなツイートしてましたね
そういえば先週、トヨタさんがこんなツイートしてましたね
はい、みなさん使えますね!ガンガンTipKit使っていきましょう!
基本のTipの使い方はこんな感じです。
Tipを定義して、
popoverTipでボタンにTipを生やしています。
Tipの出し方はinlineとpopoverの2種類あり、ここではpopoverを使ってます。
ここでTip!背景色を変えたい。
これを
…こうしたい。
一部の簡単なスタイル変更は、専用のAPIが用意されています。 背景色を変更するには、tipBackgroundが使えます。
ドキュメントを見るとpopoverのTipには現在適用されないということになってますが…
使えます。
ここでTip!もっとスタイルを変えたい。
これを
…こうしたい。
もっとカスタマイズしたい場合はTipViewStyleを使います。 TipViewStyleを適用した構造体にスタイルを定義し、スタイルを適用したいTipの階層にtipViewStyleで設定すればカスタマイズできます。 こんな感じでZStackでColorを敷いて、吹き出しをプライマリーカラーになるようにして〜… …おっと。しっぽの部分に色がついてない!
None
TipViewStyleは尻尾の部分をいじることができません。 そんなときは先ほどのtipBackgroundを使うと背景をつけることだけはできます!
None
さて、TipKitの大きな特徴として、Tipの状態をTipKit側で制御してくれます。 書き方は大きく2種類あり、TipKitのマクロの@Parameterから判定する方法と、Eventを定義して、そのイベントから判定する方法です。 TipKitが状態を持ってくれるなんて便利だなぁ…アプリに新規で実装する場合はそう思うかもしれません。
問題となるのは、既存のヒントをTipKitに移行する場合です。 例えば、 アプリが制御していたものをTipKit内部のものに差し替えることになるので表示条件の状態がリセットされたり TipKit内ではAPIやUserDefaultを呼び出せなかったり Viewと状態がめちゃ密結合で既存のアーキテクチャと合わなくてキモかったり @ParameterはTipKitのマクロなので、外部の値をそのまま挿入できなかったり… つまりTipKitから状態を剥がさないと使いにくい状況になります。
ここでTip!TipKitから状態を引き剥がしたい
None
まず、普通にTipKit内で状態を管理するパラメータを定義します。
そして、Rulesでパラメータがtrueの時に表示するように設定します
@ParameterはTipKitのマクロなので、ここにそのまま値を挿入することはできません。なので、値を挿入できるようにラップしていきます。
None
挿入したい値をwrappingValueとして定義しています。ここは本来ViewModelなどもっと上層からTipKitに渡したい値になりますが、便宜上@Stateとして定義しています。
onChangeでwrappingValueの変更を監視し、MemoTipのパラメータに挿入します。
onChangeだけだと初期化時にwrappingValueの値がMemoTipのパラメータに反映されないので、onAppearでも挿入します。
こうすることで、TipKitから状態を引き剥がし、外部から値を挿入することができるようになります。 TipKitくんがよかれと思って状態管理を引き取ったことで事態が複雑化していて、世の無情さを感じることができますね。
こうすることで、TipKitから状態を引き剥がし、外部から値を挿入することができるようになります。 TipKitくんがよかれと思って状態管理を引き取ったことで事態が複雑化していて、世の無情さを感じることができますね。
TipKitの哀愁を感じたところで、TipKitTips is over! 自分ならもっとTipKitをイキイキさせてやれると思った方、TipKitチャンスです。 今回はLTなので大幅に端折ってますが、インタラクションを入れたり、結構色々な使い方ができます。 ぜひTipKitを使って快適なアプリ体験を提供しましょう!ありがとうございました〜