Share
Embed
InputLog アーキテクチャ解説
https://github.com/GitHiroki/InputLog のアーキテクチャ解説(AI作成)
dassimen
September 27, 2026
Transcript
16 slides
-
PERSONAL INPUT LOG InputLog SwiftUI · SwiftData · Swift Charts
· App Intents · iOS 18+ ARCHITECTURE GUIDE -
01 — WHAT IT DOES RECORD REVIEW URL JSON 6
YouTube InputLog · 02 BACKUP Podcast 7 -
02 — BIG PICTURE 2 A 1 ReviewScreen LogEditorSheet DataStore.shared
SwiftData ModelContainer 1 App B LogInputIntent ReviewScreen InputLog · 03 @Query Intent -
03 — LAYERS App/ InputLogApp @main Views/ DataStore.shared ModelContainer SwiftUI
ReviewScreen · LogEditorSheet · BackupFooter View Intents/ App Intents LogInputIntent · InputLogShortcuts Logic/ WeekMath · WeeklySummary · TypeDetector · SharedInput · TitleFetcher · Backup Model/ SwiftData SchemaV1.InputLog @Model · MediaType · Genre InputLog · 05 Theme/ Debug/ #if DEBUG -
04 — FILES App/ InputLogApp, DataStore Model/ Schema, InputLog, MediaType,
Genre Logic/ WeekMath, WeeklySummary, TypeDetector, SharedInput, TitleFetcher, Backup Views/ ReviewScreen, ReviewSections, LogEditorSheet, BackupFooter, Components Intents/ LogInputIntent, InputLogShortcuts Theme/ Theme Debug/ LaunchOptions, SampleData InputLog · 06 InputLog/InputLog/ enum 1 1 #if DEBUG Xcode -
05 — DATA MODEL 1 InputLog enum id UUID typeRaw
genreRaw date Date type genre typeRaw String title String urlString String? genreRaw String? note String createdAt Date MediaType computed property rawValue unique URL CloudKit nil nil VersionedSchema SchemaV2 InputLog · 07 Model/Schema.swift · Model/InputLog.swift typealias -
06 — FLOW: LAUNCH 01 02 03 04 05 InputLogApp
DataStore @Query WeeklySumma ry ReviewScreen ModelContainer 6 offset offset 0 InputLog · 08 1 … ‹ › summary Views/ReviewScreen.swift weekLogs computed property -
07 — WEEK LOGIC WeekMath WeeklySummary total byType start 0:00
end 0:00 genres Calendar(identifier: .iso8601) View InputLog WeekMath · 09 weeks Logic/WeekMath.swift · Logic/WeeklySummary.swift 6 -
08 — FLOW: RECORD IN APP LogEditorSheet 1 2 URL
3a TypeDetector.detect 4 insert save() 3b TitleFetcher typeTouched 5 onSaved InputLog · 10 Views/LogEditorSheet.swift offset -
09 — TYPE DETECTION URL 1 URL 2 youtube.com /
youtu.be YouTube 3 podcasts.apple.com · listen.style · overcast.fm · pca.st Podcast 4 open.spotify.com Podcast /episode 5 m.youtube.com NSDataDetector InputLog · 11 Logic/TypeDetector.swift YouTube URL -
10 — TITLE FETCH YouTube oEmbed API TypeDetector youtube.com/oembed YouTube
oEmbed LPMetadataProvider Once InputLog · 12 LPMetadataProvider Logic/TitleFetcher.swift www. 5 5 Task.sleep -
11 — FLOW: SHARE SHEET 01 02 03 04 05
SharedInput TitleFetcher DataStore Safari YouTube insert URL openAppWhenRun = false InputLog · 13 URL 120 Intents/LogInputIntent.swift · Logic/SharedInput.swift GenreAppEnum save -
12 — BACKUP JSON Backup.Item fileImporter BackupFile Transferable JSON JSON
Backup.plan 1 sample: true ShareLink Web InputLog InputLog- .json v2 · 14 v2 id "s0" id id SHA256 Logic/Backup.swift · Views/BackupFooter.swift UUID 2 -
13 — DEV TOOLS DEBUG Swift Testing -inMemory YES -seedSample
YES WeekMathTests 5 -openAdd YES WeeklySummaryTests 6 TypeDetectorTests -pasteURL <url> URL URL SharedInputTests URL -weekOffset -1 TitleFetcherTests oEmbed -scrollBottom YES BackupTests v2 InputLog · 15 Debug/LaunchOptions.swift · InputLogTests/ -
14 — SUMMARY 3 01 02 1 App Group 1
App Intent ModelContainer DataStore 1 InputLog 03 · 16 VersionedSchema enum SwiftData @Query docs/architecture.md View unique JSON Web