43号線を西へ東へ

フリーランスの備忘録、アウトプットの実験場

大人の夏休みの宿題、PCのメモ帳を作った

このブログはプロモーションリンクを含むときがあります


パソコンやPCで、メモ帳的なものはたくさんありますが、あえて盆休みを利用してメモ帳アプリを作ってみました。

純正のメモ帳やGoogle Keep、NotionやObsidianなどシンプルなものから多機能なものまで様々なものが選べます。ただ、データの取り回しが面倒だったりするので、色んなところにデータがとっちらかっています。どこかにまとめたいなと常々思っています。

その解決策にはほど遠いのですが、JSONファイルに書き込むメモ帳を作ったら、クラウド上でiPhoneMacで同時に使えそうだったので、AIにお願いして作ってみました。

検索の出来るメモ帳アプリ

時系列で並ぶメモ帳+検索+ワードクラウド画像

本アプリの特徴は、タイムスタンプをキーとして時系列で並べているだけのメモ帳です。

日付、タイトル代わりのタグ、本文の3要素しかありませんが、検索で絞り込めるため、思い出したいときにサッと振り返れるのがいいかと思います。

かなりシンプルな新規メモ作成画面

使いはじめて5日ほどですが、その感想をまとめると、

  • 検索は爆速
  • 自分がプロデューサーなので、思い付くままに機能を追加できるのが便利
  • アプリとして一つにまとめなくても、データはあるので、外部にプログラムを作れば機能追加できる。

まだメモの数が少ないのでデータ数が増えてくるとどうなるのかも、やってみないとわかりません。

データの格納はJSON形式

2週間ほど前に文章を形態素解析するワードクラウド画像を出来るようにライブラリを追加したので、こちらのメモアプリにも追加してみました。

GPT-5に作ってもらったダミーデータのJSONファイルを読み込ませて作成したワードクラウド画像がこちら。

メモ全体からワードクラウド画像も作成できる

キーボードでほぼすべての操作が完結

プログラムを立ち上げてしまえば、ほぼキーボードだけで操作できるようにしました。

新しいメモを追加するときは「コマンド+N」、検索するときは「コマンド+F」、メインウインドウに戻るときは「エスケープ」など、Pythonでは一つ一つの機能にキーボードショートカットを設定できるようです。

Readmeファイルに記載されていたキーボードショートカット

  • Cmd+N: 新規メモ作成
  • Cmd+F: 検索フィールドにフォーカス
  • Cmd+S: メモ保存(追加・編集画面)
  • Return: メモ保存
  • Escape: キャンセル

ワードクラウド画像作成などの機能があるので、あとは'self.root.bind'で設定できるようです。

検索が爆速

表示させているのはダミーデータです。ダミーデータですらGPT-5に書いてもらいました。30件ほどのデータなので、文字どおり爆速で検索されます。

タグ、本文、日付から検索が可能

仕事のメモ書きや読書メモでも、ひと言書いておく習慣をつけたいものです。

感想

今日も、大変楽しくプログラムを作る指示をAIに出しまくっていたら、お昼をとっくに回って、もうおやつの時間になりました。そろそろジムに行こうかと思うので、感想をまとめておきます。

早いのは今のうちだけかも

データ数が少ないと検索も早いだろう。現在のメモ件数は41件、文字数は2,843文字。1メモあたり70文字程度。これが増えてきたときにどうなるのかは検証していきたい。

AIにアプリを作らせてみて感じていることを綴る

1990年前半に大学生協で買ったMac IIvxを皮切りに、プログラミングに興味はありました。少し書き出すがエラーが出まくりで、全然進まないので、挫折する人生を送ってきました。HTMLとCSSぐらいでしょうか、アマチュアレベルに書けるようになったのは。

行末にセミコロンを打つとか、インデントをそろえるとか、空白を入れるとか、プログラミングの作法すら覚えられませんでした。つくづくダメ人間だなぁとつねづね感じていました。

ただ、AIにお願いするとそういう細々としている商的なところは、全部お任せできる助かります。こちらがやるのはアイデア出しだけで済みます。

ここでは、全てのフィールドを対象に検索対象にしてほしい

設定画面でJSONファイルを選択できるようにしてほしい

こういうことやってくれると使い勝手が良いかも、作業が楽かもということが、指示するだけで形になっていくので、大変楽しいです。

と言っても、継ぎ足しで機能を追加していくと、問題が何度も起こります。何度もAIに指示を出して、エラーメッセージを送ってと、10往復ぐらいしてようやく解決した問題もありました。根気と時間は必要ですね。久しぶりに長時間PCにぶっ続けで向かいました。

私がやるよりはよっぽど早いのですが、AIに作業をさせると作業完了まで数分かかるので、AIへの指示をメモったりして効率的に進めていきたいものです。

自力でコード書ける人はかっこよいですね。

Readmeファイル

クリックでReadmeファイルの全文が見れます

# 時系列メモアプリ

iPhoneのPythonistaで使用するメモアプリをmacOSでも動作するように移植したバージョンです。

## ファイル構成

- `pythonista-memo.py` - Pythonista版
- `macos-memo.py` - macOS GUI版(tkinter使用)
- `cli-memo.py` - macOS CLI版(コマンドライン)
- `wordcloud/` - ワードクラウド生成スクリプト
  - `mecab_wordcloud.py` - MeCabを使用したワードクラウド生成
  - `jananome_wordcloud.py` - Janomeを使用したワードクラウド生成

## 機能

### 基本機能
- 時系列メモの追加(タイムスタンプ自動付与)
- タグによる分類
- JSON形式での保存
- メモの編集・削除機能

### 検索機能
- リアルタイム検索(全フィールド対応)
- 詳細検索メニュー(タグ、メモ内容、日付別)
- 検索結果のハイライト表示

### 多ファイル対応
- 複数のJSONファイルの管理
- ファイル切り替え機能
- 新規ファイル作成
- 既存ファイルのインポート

### ワードクラウド機能
- 現在選択中のメモファイルからワードクラウド生成
- 日本語形態素解析対応(MeCab/Janome)
- タイムスタンプ付きファイル名で保存

### キーボードショートカット
- `Cmd+N`: 新規メモ作成
- `Cmd+F`: 検索フィールドにフォーカス
- `Cmd+S`: メモ保存(追加・編集画面)
- `Return`: メモ保存
- `Escape`: キャンセル

## 使い方

### 1. macOS GUI版 (`macos-memo.py`)

python3 macos-memo.py

#### メイン画面
- **Excel風の表形式表示**: 日時、タグ、本文を列で表示
- **リアルタイム検索**: 上部の検索フィールドで全フィールド検索
- **ワードクラウド作成**: 現在のメモファイルからワードクラウドを生成
- **設定**: ファイル選択と管理

#### メモ操作
- **新規メモ**: 「新規メモ」ボタンまたは `Cmd+N`
- **編集**: メモをダブルクリック
- **削除**: メモを選択して「削除」ボタン

#### 検索機能
- **リアルタイム検索**: メイン画面の検索フィールド
- **詳細検索**: 「詳細検索」ボタンで詳細検索メニューを開く

#### ファイル管理
- **設定**: 「設定」ボタンでファイル選択画面を開く
- **ファイル切り替え**: 設定画面で使用するJSONファイルを選択
- **新規ファイル作成**: 設定画面で新しいJSONファイルを作成
- **ファイルインポート**: 既存のJSONファイルをインポート

#### ワードクラウド作成
- **ワードクラウド作成**: 「ワードクラウド作成」ボタンで現在のメモファイルからワードクラウドを生成
- **出力先**: `wordcloud/`フォルダにタイムスタンプ付きで保存

### 2. macOS CLI版 (`cli-memo.py`)

python3 cli-memo.py

- コマンドラインインターフェース
- 軽量で高速
- ターミナルから直接操作

### 3. Pythonista版 (`pythonista-memo.py`)

- `text_dialog`のみを使用してタグ入力エラーを回避
- 検索機能付き(タグ、メモ内容、日付)
- 最も安定して動作するバージョン
- タイムスタンプ形式統一済み

## 保存場所

### メモファイル
- **デフォルト**: `memos/timeseries_memo.json`
- **複数ファイル対応**: `memos/`フォルダ内の任意のJSONファイル

### ワードクラウド
- **出力先**: `wordcloud/`フォルダ
- **ファイル名**: `wordcloud-YYYY-MM-DD-HH-MM.png`
- **Janome版**: `wordcloud-YYYY-MM-DD-HH-MM-jananome.png`

## 動作確認

### macOS GUI版のテスト

python3 macos-memo.py

### macOS CLI版のテスト

python3 cli-memo.py

### ワードクラウド生成のテスト

MeCab

python3 wordcloud/mecab_wordcloud.py

Janome

python3 wordcloud/jananome_wordcloud.py

## 依存関係

### macOS GUI版
- `tkinter` (標準ライブラリ)
- `json` (標準ライブラリ)
- `datetime` (標準ライブラリ)

### ワードクラウド生成
- `MeCab` (日本語形態素解析)
- `Janome` (日本語形態素解析)
- `wordcloud` (ワードクラウド生成)
- `matplotlib` (画像表示)

### インストール方法

MeCabのインストール(Homebrew)

brew install mecab mecab-ipadic

Pythonライブラリのインストール

pip3 install mecab-python3 wordcloud matplotlib janome

## 注意事項

- Pythonista版は`dialogs`モジュールに依存するため、macOSでは動作しません
- GUI版は`tkinter`を使用しているため、macOSに標準でインストールされているPythonで動作します
- CLI版は標準ライブラリのみを使用しているため、どの環境でも動作します
- ワードクラウド生成には日本語フォントが必要です(自動検出機能付き)

## トラブルシューティング

### ワードクラウド生成でエラーが発生する場合

1. **MeCabのインストール確認**: `brew list mecab`でインストール状況を確認
2. **日本語フォントの確認**: システムに日本語フォントがインストールされているか確認
3. **Pythonライブラリの確認**: `pip3 list | grep -E "(mecab|wordcloud|matplotlib)"`でライブラリを確認

### ファイル切り替えでエラーが発生する場合

1. **ファイルパスの確認**: 設定画面でファイルパスを確認
2. **ファイル権限の確認**: JSONファイルの読み書き権限を確認
3. **ファイル形式の確認**: JSONファイルが正しい形式か確認

### 検索機能が動作しない場合

1. **検索フィールドの確認**: メイン画面の検索フィールドが有効か確認
2. **データの確認**: メモデータが正しく読み込まれているか確認
3. **文字エンコーディングの確認**: UTF-8で保存されているか確認

### タイムスタンプ形式について

すべてのバージョンで統一されたタイムスタンプ形式を使用しています:
- **形式**: `2025-08-12 11:16:12` (読みやすい形式)
- **ISO形式(T付き)は使用していません**: `2025-08-12T10:52:21+09:00`

## 更新履歴

### 最新版
- ワードクラウド作成機能を追加
- 多ファイル対応を実装
- リアルタイム検索機能を追加
- キーボードショートカットを追加
- Excel風の表形式表示に変更
- メモ編集・削除機能を追加
- ウィンドウ配置を改善