過去 2 年間で 9 つのアプリをリリースしたインディー開発者として、繰り返し遭遇した課題があります。各アプリに必要なリンクの実装です。この反復的な作業がきっかけで、iOS、macOS、visionOS アプリに重要なリンクを追加するプロセスを効率化する Swift パッケージ、LinksKit を作りました。
LinksKit を作った理由
複数の Apple プラットフォームにわたってアプリをリリースする中で、あるパターンに気づきました。どのアプリにも同じようなリンクセクションが必要だったのです:
法的リンク(プライバシーポリシー、利用規約)
サポートリンク(FAQ、連絡先メール)
アプリレビューのディープリンク
ソーシャルメディアリンク
他のアプリのクロスプロモーション
これらのリンクの実装は時間がかかる反復的な作業になっていました。しかも Mac では表示がまったく異なるため、マルチプラットフォームアプリでは余分な作業が発生します。そこで再利用可能なソリューションの必要性を感じ、LinksKit が誕生しました。
すべての新しいアプリで LinksKit を使うべき理由
時間の節約:LinksKit は一般的なリンク要件に対するすぐに使えるソリューションを提供し、開発者がアプリのコア機能に集中できるようにします。
コンプライアンス:App Store ガイドラインに必要な法的リンクをアプリに簡単に含められます。
クロスプロモーション:LinksKit を使えば他のアプリを簡単にアピールでき、アプリポートフォリオ全体の認知度を高められる可能性があります。
ネットワーキングの機会:他の開発者のアプリをプロモーションでき、支え合うコミュニティやクロスプロモーションのパートナーシップを育てられます。
カスタマイズ:ビルトインのソリューションを提供しつつ、特定のニーズに合わせた完全なカスタマイズも可能です。
プラットフォーム適応:iOS、macOS、visionOS でシームレスに動作し、各プラットフォームの UI 規約に適応します。
LinksKit の使い方
LinksKit の導入は簡単ですが、コードに入る前に重要な概念について説明しましょう:providerToken です。
providerToken について
providerToken は App Store マーケティングキャンペーンにおける重要な要素です。開発者アカウントの一意な識別子で、マーケティング活動の効果を追跡するのに役立ちます。providerToken を含むリンクをユーザーがクリックすると、Apple がそのクリックをキャンペーンに関連付け、アプリのユーザー獲得に関する貴重なインサイトを提供してくれます。「キャンペーン」というと大げさに聞こえますが、実際にはユーザーがどこから来たかを示すパラメータにすぎません。
providerToken の取得方法
providerToken を見つけるのはすぐには分かりにくいですが、手順は以下の通りです:
App Store Connect にログイン
Analytics > Acquisition > Campaigns に移動
「Create Campaign Link」をクリック
フォームに適当なテキストを入力(実際にキャンペーンを作成する必要はありません)
Campaign Link のプレビューで
ptパラメータを探します。pt=の後の値があなたのproviderTokenです
このトークンはすべてのアプリで共通なので、一度調べれば OK です。
基本的な設定
providerToken が分かったところで、アプリに LinksKit を設定しましょう:
LinksKit.configure(
providerToken: "123456",
linkSections: [
.helpLinks(appID: "123456789", supportEmail: "[email protected]"),
.legalLinks(privacyURL: URL(string: "https://example.com/privacy")!)
]
)この基本設定で、アプリにヘルプリンクと法的リンク(利用規約を含む)が追加されます。
包括的な設定例
LinksKit が提供するすべてのビルトイン機能を紹介する、より包括的な例を見てみましょう。ソーシャルリンク、自分のアプリへのリンク、友人のアプリへのリンクを含みます:
// アプリリンク
let ownApps = LinkSection(entries: [
.link(.ownApp(id: "6502914189", name: "FreemiumKit", systemImage: "cart")),
.link(.ownApp(id: "6480134993", name: "FreelanceKit", systemImage: "timer")),
.link(.ownApp(id: "6472669260", name: "CrossCraft", systemImage: "puzzlepiece")),
.link(.ownApp(id: "6477829138", name: "FocusBeats", systemImage: "music.note")),
])
let friendsApps = LinkSection(entries: [
.link(.friendsApp(id: "1249686798", name: "NFC.cool Tools", systemImage: "tag", providerToken: "106913804")),
.link(.friendsApp(id: "6503256642", name: "App Exhibit", systemImage: "square.grid.3x3.fill.square")),
])
// LinksKit の設定
LinksKit.configure(
providerToken: "549314",
linkSections: [
.helpLinks(
appID: "6476773066",
faqURL: URL(string: "https://translatekit.app/#faq")!,
supportEmail: "[email protected]"
),
.socialMenus(
appLinks: .appSocialLinks(
platforms: [.twitter, .mastodon(instance: "mastodon.social"), .threads],
handle: "TranslateKit",
handleOverrides: [.twitter: "TranslateKitApp"]
),
developerLinks: .developerSocialLinks(
platforms: [.twitter, .mastodon(instance: "iosdev.space"), .threads],
handle: "Jeehut"
)
),
.appMenus(ownAppLinks: [ownApps], friendsAppLinks: [friendsApps]),
.legalLinks(privacyURL: Constants.legalPrivacyPolicyURL)
]
)上記の設定は TranslateKit から(簡略化して)引用したものです:
FAQ とサポートメールを含むヘルプリンクを設定
アプリと開発者のソーシャルメディアリンクを追加
他の自分のアプリをプロモーションするメニューを作成
友人のアプリをプロモーションするセクションを含む(ネットワーキングに最適!)
必要な法的リンクをすべて確保
設定したリンクを使うには、設定画面に LinksView() を追加するだけです:
Form {
// その他の設定...
LinksView()
}iOS ではこのような表示になります:

Mac では、リンクをヘルプメニューに配置するのがより一般的です。以下のようにします:
WindowGroup {
// UI コード
}
.commands {
CommandGroup(replacing: .help) {
LinksView()
.labelStyle(.titleAndIcon)
}
}メニューではこのように表示されます:

カスタムリンクセクション
LinksKit はビルトインのセクションを提供していますが、LinkSection を使って完全にカスタムなセクションも作成できます。この柔軟性により、必要なあらゆる種類のリンクやネストされたメニュー構造を追加できます。
カスタムセクションの例を示します:
let customSection = LinkSection(
title: "Custom Links",
entries: [
.link(Link(title: "Our Website", systemImage: "globe", url: URL(string: "https://www.example.com")!)),
.menu(LinkMenu(
title: "Social Media",
systemImage: "network",
linkSections: [
LinkSection(entries: [
.link(Link.followUsOn(socialPlatform: .twitter, handle: "YourAppHandle")),
.link(Link.followUsOn(socialPlatform: .instagram, handle: "YourAppHandle"))
])
]
))
]
)この例は、メニューをネストしてリンクの階層構造を作り、アプリのニーズに合わせる方法を示しています。
カスタムラベルスタイル
LinksKit はコンテンツだけでなく、表示のカスタマイズも柔軟に行えます。SwiftUI の labelStyle モディファイアを使って、リンクの外観を簡単にカスタマイズできます。LinksKit はリンクの見た目を向上させる 3 つのカスタムラベルスタイルを提供しています:
.titleAndTrailingIcon:デフォルトの.titleAndIconスタイルに似ていますが、アイコンがラベルの末尾に配置されます。.titleAndIconBadge(color:):Apple の設定アプリのスタイルを模倣し、先頭のアイコンにカラー背景を追加します。.titleAndTrailingIconBadge(color:):末尾アイコンの配置とカラー背景を組み合わせたものです。
これらのスタイルを適用するには、LinksView に labelStyle モディファイアを追加するだけです:
LinksView()
.labelStyle(.titleAndIconBadge(color: .blue))このシンプルな変更でリンクの見た目が大きく変わり、アプリのデザイン言語に合わせたり、視覚的な階層を作り出したりできます。スタイルの比較はこちらです:

カスタムラベルスタイルを活用することで、アプリのリンクセクションにユニークで洗練された見た目を作り、全体的なユーザー体験を向上させることができます。
まとめ
LinksKit は単なる時間短縮ツールではありません。アプリリンクの管理、コンプライアンスの確保、開発者ネットワーキングの促進を含む包括的なソリューションです。法的要件からクロスプロモーションまですべてを処理することで、本当に大切なこと ― 素晴らしいアプリを作ること ― に集中できるようにしてくれます。
複数のアプリを持つベテラン開発者でも、最初のプロジェクトを始めたばかりの方でも、LinksKit は開発プロセスを大幅に効率化できます。次のプロジェクトでぜひ試して、すべての Apple プラットフォームにわたるリンク管理の簡素化を体験してください。お役に立てれば嬉しいです。

