
アプリを開かず、ロック画面のウィジェットからメモを直接確認。 タップひとつで即座に編集。Markdownでチェックリストも。
iPhone・Android どちらのロック画面にも対応。明るい/暗いテーマを切り替えて見た目を確認できます。

3件のメモをバックアップ
Markdown記法が使えます: - [ ] チェックリスト、**太字**、[リンク](url)
ウィジェットの色やサイズを自分好みに変更できます。用意されたスタイルからワンタップで適用も可能。
15:00 会議 - 204号室
プレゼン資料を忘れずに
メモが切り替わるときの動きを選べます。ふわっと表示、横からスライドなど、9種類のアニメーションから好みを選択。
カスタムプリセットはまだありません
アニメーションを設定して「現在の設定を保存」をタップ
よく使うメモの型をワンタップで呼び出せます。買い物リスト・会議メモなど9種類を用意。自分だけのテンプレートも作成OK。
家族やチームとメモを共有。同じパソコンの別タブや、スマホとパソコンなど異なる端末同士でも、メモの変更がすぐに反映されます。
メモを選択してから共同編集を開始してください
ピン留めしたメモが通知として常に表示されます。ロック画面を引き下げるだけですぐに確認。

ピン留めされたメモが通知として表示されます:
複数のウィジェットを同時に並べた状態をプレビュー。実際のロック画面での見え方を確認できます。
ロック画面ウィジェット(大・中・小)にメモテキストを直接表示。フォントサイズを最大化し、アプリを開かずに内容を読める。
ウィジェットをタップした瞬間、キーボードが立ち上がった状態でメモ入力画面が開く。0.1秒以内のフォーカス。
装飾を排除し、背景と文字のコントラストを最大化。テキストシャドウ・太字フォントで直射日光下でも読みやすい。
ピン留めメモを通知センターに常駐表示。ロック画面を引き下げるだけでメモ内容を確認可能。
WidgetKit (iOS) と Glance API (Android) で、両プラットフォームのロック画面ウィジェットに対応。
メモに色分け・カテゴリ・タグを設定。ウィジェットのアクセントカラーが連動し、視覚的に識別可能。
チェックリスト(- [ ])、太字、コード、リンクをメモ内で使用可能。ウィジェット上でもリッチに表示。
Google Apps Script + スプレッドシートでメモをクラウドに保存。デバイス間の同期とバックアップに対応。
iOSとAndroidの実装コードを確認できます。 コピーして開発ツールに貼り付ければ、すぐにアプリ開発を始められます。
import WidgetKit
import SwiftUI
struct MemoEntry: TimelineEntry {
let date: Date
let memoText: String
let isPinned: Bool
}
struct MemoProvider: TimelineProvider {
func placeholder(in context: Context) -> MemoEntry {
MemoEntry(date: .now, memoText: "メモを入力...", isPinned: false)
}
func getSnapshot(in context: Context, completion: @escaping (MemoEntry) -> Void) {
let entry = MemoEntry(
date: .now,
memoText: loadMemo()?.text ?? "メモなし",
isPinned: loadMemo()?.isPinned ?? false
)
completion(entry)
}
func getTimeline(in context: Context, completion: @escaping (Timeline<MemoEntry>) -> Void) {
let memo = loadMemo()
let entry = MemoEntry(
date: .now,
memoText: memo?.text ?? "メモなし",
isPinned: memo?.isPinned ?? false
)
let timeline = Timeline(entries: [entry], policy: .never)
completion(timeline)
}
private func loadMemo() -> StoredMemo? {
guard let data = UserDefaults(suiteName: "group.com.lockmemo.app")?
.data(forKey: "activeMemo") else { return nil }
return try? JSONDecoder().decode(StoredMemo.self, from: data)
}
}
// ===== ロック画面ウィジェット (accessoryRectangular) =====
struct LockScreenRectangularView: View {
let entry: MemoEntry
var body: some View {
VStack(alignment: .leading, spacing: 2) {
HStack(spacing: 4) {
Image(systemName: "note.text")
.font(.system(size: 10))
.foregroundStyle(.secondary)
Text("LockMemo")
.font(.system(size: 10, weight: .medium))
.foregroundStyle(.secondary)
Spacer()
if entry.isPinned {
Image(systemName: "pin.fill")
.font(.system(size: 8))
.foregroundStyle(.cyan)
}
}
Text(entry.memoText)
.font(.system(size: 14, weight: .semibold, design: .monospaced))
.lineLimit(2)
.minimumScaleFactor(0.8)
}
.containerBackground(.fill.tertiary, for: .widget)
.widgetURL(URL(string: "lockmemo://edit"))
}
}
// ===== ロック画面ウィジェット (accessoryInline) =====
struct LockScreenInlineView: View {
let entry: MemoEntry
var body: some View {
HStack(spacing: 4) {
Image(systemName: "note.text")
Text(entry.memoText.components(separatedBy: "\n").first ?? "")
.font(.system(.body, design: .monospaced))
}
}
}
// ===== ウィジェット定義 =====
@main
struct LockMemoWidget: Widget {
let kind = "LockMemoWidget"
var body: some WidgetConfiguration {
StaticConfiguration(kind: kind, provider: MemoProvider()) { entry in
LockScreenRectangularView(entry: entry)
}
.configurationDisplayName("LockMemo")
.description("ロック画面にメモを表示")
.supportedFamilies([
.accessoryRectangular,
.accessoryInline,
.accessoryCircular,
.systemSmall,
.systemMedium
])
}
}アプリ開発に必要なプロジェクトファイル一式をダウンロード。 ソースコードを確認して、すぐにアプリの開発を始められます。
group.com.lockmemo.appGoogleスプレッドシートでメモをクラウド同期
Google Driveで新しいスプレッドシートを作成し、IDをコピーします。
URLの例:
https://docs.google.com/spreadsheets/d/ここがID/editLockMemoをアプリとしてインストールし、オフラインでも利用できます