まさかの日記

最近まともな文章しか書けなくなってきました

2025/07

この記事はClaude Code(AI アシスタント)が作成しています。

はじめに

Claude Codeを使っていて気づいた重要な変化がある。従来は「事前設計→実装→テスト→保守」だったが、「実行してエラーになってもその場で直して動かす」アプローチが現実的になった。ソフトウェア保守の考え方を見直す必要がありそうだ。

従来のソフトウェア保守

予防重視: 事前設計 → 詳細実装 → 厳密テスト → 慎重保守 バグを「防ぐ」ことに重点を置き、修正コストを恐れる設計。デバッグ時間の長期化、副作用リスク、テスト工数増大、属人性などの理由で修正を避ける傾向。

Claude Code時代の新アプローチ

リアルタイム修正:
エラー発生 → 即座に修正指示 → 瞬時に解決

実際の修正事例

1. SSH接続エラー → ForceCommand無効化 → 接続成功 2. URL抽出エラー → originId/alternate使い分けロジック実装 → 正常動作 3. nginx設定不備 → location設定追加 → サイト公開

すべて数秒〜数分で解決。

変化を可能にする要因

1. 即座の問題特定 - エラーメッセージから根本原因を瞬時特定 2. 修正の自動化 - 人手を介さず直接ファイル編集・コマンド実行 3. 知識ベース活用 - 過去の類似エラー解決方法を即座参照 4. 副作用の予測 - 修正による影響範囲を事前把握

法人システムへの適用

適用可能

  • プロトタイピング・POC
  • 内部ツール開発
  • DevOps・インフラ自動化

適用困難

  • ミッションクリティカルシステム
  • 大規模システム
  • 多数開発者関与プロジェクト

新しい保守戦略

「最小限テスト + 即座修正」アプローチ:
最小限動作確認 → 本番投入 → 問題発生 → 即座修正

レベル別戦略

  • レベル1: スクラッチ即修正(個人用ツール)
  • レベル2: 最小限テスト + 即修正(部署内ツール)
  • レベル3: 従来の慎重アプローチ(顧客向けシステム)

開発文化への影響

従来: 完璧主義、慎重性重視、長期計画 新時代: 実用主義、積極的改善、アジャイル実装 「バグゼロ」から「迅速対応」へのシフト。

注意点

1. 適用範囲の明確化 - すべてに適用できるわけではない 2. 品質基準の再定義 - 完璧性より応答性重視 3. チーム体制変更 - AI支援前提の開発体制 4. リスク管理見直し - 即座修正前提のリスク評価

まとめ

Claude Codeの「エラー即修正」能力はソフトウェア保守概念を根本的に変えつつある。 従来: バグを防ぐための慎重設計 新時代: 問題を恐れない迅速実装と修正 すべての法人システムがこうなるとは思えないが、適用可能分野では劇的な効率向上が期待できる。 重要なのは適材適所でのアプローチ選択。 「最小限のテストが通るなら、その場でスクラッチで書いてもいい」 この発想転換が次世代ソフトウェア開発の鍵となる。 --- Generated by Claude Code 2025年7月30日

この記事はClaude Code(AI アシスタント)が作成しています。

はじめに

Claude Codeを使い始めてしばらく経ちますが、今日ついに「カスタムスラッシュコマンド」機能を本格的に活用し始めました。これが想像以上に便利で、作業効率が劇的に向上したので、その魅力をお伝えしたいと思います。

カスタムスラッシュコマンドとは?

カスタムスラッシュコマンドは、よく使う複雑な処理や一連の作業を、短いコマンド一つで実行できるようにする機能です。/ で始まるコマンドを入力するだけで、事前に定義した処理が自動実行されます。

従来の方法

「Feedlyの記事を取得して、AIで判定して、HTMLを生成して、
サーバーにアップロードして、各SNSに投稿して...」

スラッシュコマンドなら

/mfeedlynews
たったこれだけ!

私が作成したコマンド体系

すべてのコマンドに /m プレフィックスをつけることで、自分専用のコマンド群として整理しました。

コマンド設計のポイント

1. 統一されたプレフィックス: /m で始まることで、自分のコマンドだとすぐ分かる 2. シンプルな命名: ハイフンを使わず、覚えやすい名前に 3. 直感的な動作: コマンド名から何をするか想像できる

実際の活用シーン

日次ルーティンの自動化

毎日行う定型作業が、コマンド一つで完了します。複数のスクリプトを順番に実行したり、APIを叩いたり、結果を整形したり...という一連の流れが自動化されています。

コンテンツ生成の効率化

ブログ記事の作成から投稿まで、従来は複数のステップが必要でしたが、今では一つのコマンドで完結します。

情報検索の高速化

大量のログファイルから必要な情報を探すのも、専用コマンドで瞬時に実行できます。

技術的な仕組み

カスタムスラッシュコマンドは、以下のディレクトリ構造で管理されています:
~/.config/claude/slash_commands/
├── mfeedlynews.md
├── mblogpost.md
├── mvoice.md
└── ... (その他のコマンド)
.mdファイルには、そのコマンドが実行すべき処理の詳細が記述されています。Claude Codeはこれらのファイルを読み込んで、指定された処理を実行します。

カスタムスラッシュコマンドの魅力

1. 圧倒的な時短

複雑な指示を毎回入力する必要がなく、短いコマンドで済むため、作業時間が大幅に削減されます。

2. ミスの削減

決まった手順が自動化されるため、手動操作によるミスがなくなります。

3. 認知負荷の軽減

「あの処理どうやるんだっけ?」と考える必要がなく、コマンドを覚えるだけで済みます。

4. カスタマイズ性

自分の作業スタイルに合わせて、自由にコマンドを作成・編集できます。

導入のコツ

1. よく使う処理から始める: 日常的に行う作業をコマンド化 2. 命名規則を決める: 統一感のある名前付けで覚えやすく 3. ドキュメント化: READMEを作成してコマンド一覧を管理 4. 段階的に拡張: 少しずつコマンドを増やしていく

まとめ

カスタムスラッシュコマンドは、Claude Codeの真の力を引き出す機能だと感じています。日々の繰り返し作業から解放され、より創造的な活動に時間を使えるようになりました。 「あれやって」の一言で済む世界。それがカスタムスラッシュコマンドの世界です。 もしClaude Codeを使っているけどまだカスタムスラッシュコマンドを活用していない方がいたら、ぜひ試してみてください。きっと作業効率が劇的に向上するはずです! --- Generated by Claude Code 技術記録 2025年7月30日

この記事はClaude Code(AI アシスタント)が作成しています。

はじめに

本日は、既存のFeedly AIニュースピックアップシステムを拡張し、外部Webサイトとの連携機能を実装しました。この記事では、実装した機能と技術的なポイントについて記録します。

実装概要

背景と課題

これまでFeedlyから取得した記事は、各プラットフォーム(Mastodon、Discord、ChatWork)に個別記事として投稿していました。しかし、以下の課題がありました:
  • Mastodonの文字数制限による情報の省略
  • プラットフォーム間での投稿内容の重複
  • 会社関連チャットでの外部サイトURL表示の懸念

解決方針

外部Webサイトを活用したハイブリッド配信システムを構築しました:

1. HTMLニュースサイト生成: 記事をレスポンシブWebサイトとして生成 2. 自動アップロード: SCP経由での外部サーバーへの自動デプロイ 3. 投稿方法の分離: プラットフォームごとに最適化された投稿方法

技術実装

HTMLニュースジェネレーター

レスポンシブデザインのHTMLニュースページを生成

def generate_html_news(picked_articles, output_dir="/tmp"): # モダンなCSSフレームワークを使用 # ホバーエフェクト、モバイル対応を実装
特徴:
  • レスポンシブデザイン(モバイル・デスクトップ対応)
  • ホバーエフェクト付きの記事カード
  • スコア表示による視覚的な優先度表現
  • 日本語フォント最適化

SCP自動アップロード機能

def upload_to_external_server(html_file):
    # SSH鍵認証によるセキュアなファイル転送
    # パーミッション設定とエラーハンドリング
セキュリティ考慮事項:
  • SSH鍵ベース認証(パスワードレス)
  • 専用ユーザーアカウントによる権限分離
  • アップロード先ディレクトリの制限

Webサーバー設定

nginx設定により、アップロードしたHTMLファイルを適切に配信:
location /feedly/ {
    alias /path/to/feedly/;
    autoindex on;
    expires 1h;
}

配信システムの改善

プラットフォーム別最適化

1. Mastodon・Discord: - WebサイトURLのみの簡潔な投稿 - 文字数制限を気にせず済む

2. ChatWork(会社用): - 従来どおりの詳細記事投稿 - 外部サイトURLは含めない(セキュリティ配慮)

処理フロー

記事取得 → AI判定 → HTML生成 → 外部アップロード → URL投稿(Mastodon/Discord)
                                              ↓
                                        詳細投稿(ChatWork)

技術的なポイント

URLリンク化機能

記事内のプレーンURLを自動的にクリック可能なリンクに変換:

RFC3986準拠のURL検出パターン

url_pattern = r'(https?://[a-zA-Z0-9\-._~:/?#\[\]@!$&\'()*+,;=%]+)' html = re.sub(pattern, r'\1', html)

エラーハンドリング

  • ネットワーク接続エラーの適切な処理
  • ファイルアップロード失敗時のフォールバック
  • SSH接続タイムアウト対策

今後の展望

機能拡張案

  • アーカイブ機能: 過去のニュースページへのナビゲーション
  • 検索機能: キーワードベースの記事検索
  • RSS配信: 生成したニュースのRSSフィード提供
  • 統計表示: アクセス数や人気記事の可視化

運用改善

  • 定期実行: cron設定による自動実行
  • 監視機能: アップロード失敗の通知システム
  • バックアップ: 生成ファイルの自動バックアップ

まとめ

本日の実装により、Feedlyニュースシステムが大幅に進化しました:

  • ユーザー体験の向上: レスポンシブなWebページでの記事閲覧
  • 配信効率の改善: プラットフォーム別の最適化された投稿
  • セキュリティ配慮: 会社チャットでの外部URL非表示
  • 運用の自動化: ワンクリックでの記事生成からWeb公開まで

この実装により、情報収集・配信のワークフローがより効率的かつ柔軟になりました。今後も継続的な改善を行い、より良いニュース配信システムを目指していきます。

---

Generated by Claude Code 技術記録 2025年7月30日

はじめに

(本記事はclaude codeによる投稿です)

情報収集の自動化って、結局のところ「自分が何に興味を持つか」をシステムに教え込むことなんですよね。 これまで私は、FeedlyとInstapaperで日々記事をRead LaterやLikeで手動キュレーションしていました。でも、「この蓄積された行動データこそが、最高の学習素材なのでは?」と思い立って、機械学習ベースの記事ピックアップシステムを作ってみました。

従来システムの限界

第1段階:固定ルールベース

最初は「AWS」「AI」「マツダ」みたいなキーワードをハードコーディングして記事を分類していました。
keywords = ["AWS", "Lambda", "マツダ", "CX-5", "ChatGPT"]
if any(keyword in title for keyword in keywords):
    return True

でも、これだと:

  • 新しい関心領域に対応できない
  • 文脈を理解できない(「AWSの障害」も「AWS新機能」も同じ扱い)
  • 関心の変化に追従できない

第2段階:AI判定ベース

そこでClaude 3.5 Sonnetに記事の関心度をスコア化してもらうようにしました。
def judge_article_relevance(article):
    prompt = f"""
    以下の記事がmasakaさんの関心領域に該当するかを0-1で判定してください。
    関心領域:AWS、生成AI、Amazon Connect、マツダ、ポルシェ、声優...
    記事:{article['title']}
    """
    return anthropic_client.complete(prompt)
これで文脈理解は向上しましたが、まだ「人間が定義した関心領域」の枠内でした。

第3段階:学習ベースシステムの誕生

発想の転換

「そもそも私の興味って、Read LaterやLikeした記事の集合体じゃない?」 これが今回のシステムの出発点です。手動キュレーションの履歴を「正解データ」として扱い、そこから特徴量を抽出して新しい記事の関連度を判定する仕組みを作りました。

システム構成

class LearningBasedPicker:
    def collect_learning_data(self):
        # Feedly Read Later記事を取得(200件)
        readlater_articles = self.get_feedly_readlater()
        
        # Instapaper Like記事を取得(25件)  
        instapaper_articles = self.get_instapaper_likes()
        
        return readlater_articles + instapaper_articles
    
    def extract_features(self, learning_data):
        # 日本語形態素解析(SudachiPy)
        tokenized_texts = [self.tokenize_japanese(article) for article in learning_data]
        
        # TF-IDFベクトル化
        vectorizer = TfidfVectorizer(max_features=1000)
        tfidf_matrix = vectorizer.fit_transform(tokenized_texts)
        
        # 重要語を抽出(上位50語)
        return extract_top_features(tfidf_matrix, vectorizer)

学習結果

225件の学習データから抽出された重要特徴語(上位10個):

1. aws (0.046) - AWS関連 2. ai (0.040) - AI関連 3. amazon (0.035) - Amazon関連 4. mcp (0.033) - Model Context Protocol 5. agent (0.032) - エージェント関連 6. claude (0.031) - Claude関連 7. 2025 (0.030) - 最新情報への関心

面白いことに、手動で定義していたキーワードがちゃんと上位に来ていて、さらに「mcp」「agent」など、最近の関心事も自動的に検出されています。

推論フェーズ

新着記事に対して、学習した特徴語との類似度を計算:
def calculate_similarity_score(self, article, features_data):
    # 記事をトークン化
    tokens = self.tokenize_japanese(article['title'] + article['summary'])
    
    # 特徴語との一致度を計算  
    similarity_score = 0.0
    for token in tokens:
        if token in features_data['top_features']:
            similarity_score += features_data['top_features'][token]
    
    # 正規化してスコア化
    return similarity_score / len(tokens) if tokens else 0.0

実運用での成果

ピックアップ精度の向上

従来のルールベースでは見逃していた記事が適切にピックアップされるようになりました。

例えば:

  • 「NotebookLMの新機能」→ 私がAIツールをよく使うことを学習済み
  • 「ランボルギーニ・テメラリオ」→ 車関連の記事への関心を検出
  • 「IIJリングノート」→ 技術系企業への関心を反映

自動進化する仕組み

新しくRead LaterやLikeした記事は自動的に学習データに蓄積され、月1回程度の特徴量再抽出で システムが進化していきます。

学習データ更新

python3 learning_based_ai_picker.py --collect

特徴量再抽出

python3 learning_based_ai_picker.py --features

運用コスト削減

  • チェック記事数:100件 → 5件(95%削減)
  • 精度:関心度の高い記事のみに絞り込み
  • メンテナンス:キーワード更新作業が不要

技術的なポイント

日本語処理の工夫

SudachiPyで形態素解析し、名詞・動詞・形容詞のみを特徴語として採用:
def tokenize_japanese(self, text):
    tokens = []
    for token in self.tokenizer.tokenize(text, self.mode):
        pos = token.part_of_speech()[0]
        if pos in ['名詞', '動詞', '形容詞']:
            tokens.append(token.dictionary_form())
    return ' '.join(tokens)

スケーラビリティの考慮

  • 特徴語数を1000語に制限(計算コスト削減)
  • TF-IDFで重要語のみ抽出(ノイズ除去)
  • JSON形式での特徴量永続化(高速読み込み)

今後の展望

フィードバック学習の実装

ピックアップした記事への反応(クリック、共有、スキップ)も学習データに加えて、より精度の高いシステムに。

マルチモーダル対応

記事の画像や動画コンテンツも分析対象に加えて、より豊富な特徴量を抽出。

コミュニティ学習

他のユーザーの行動データも参考にして、新しい関心領域の発見につなげる。

まとめ

手動キュレーションの蓄積を機械学習で活用することで:

1. 個人化:自分だけの関心パターンを学習 2. 自動進化:新しい行動データで継続的に改善 3. 効率化:情報過多の中から本当に価値のある記事のみを抽出

結果として、「人間が行う質の高い判断」と「機械の高速処理能力」を組み合わせた、理想的な情報収集システムができました。 重要なのは、AIに丸投げするのではなく、人間の行動データを上手く活用してAIを「育てる」アプローチです。あなたも普段の情報収集行動を振り返って、そこから学習できることがあるかもしれませんね。 --- このシステムのソースコードや詳細な実装については、また別の記事で紹介したいと思います。

問題の症状

tmuxを使っていて突然スクロールが効かなくなった。具体的には:

  • マウスホイールでのスクロールが無反応
  • iPhone(SSH経由)でもスクロール不可
  • コピーモード(Prefix + s)に入ると右上に [0/0] と表示される
  • スクロールバッファが空だと認識されている状態

環境

  • OS: macOS
  • ターミナル: iTerm2
  • tmux: 既存セッションで発生
  • 設定ファイル: ~/.tmux.conf あり

原因の特定

症状から推測できた原因

[0/0] の表示は、tmuxがスクロールバッファ(履歴)を正しく認識していないことを示している。これは以下が原因:

1. 代替画面設定の競合: alternate-screen の設定が不適切 2. terminal-overrides の不具合: 古い設定による影響 3. 既存ペインの設定継承: 新しい設定が既存ペインに反映されない

設定ファイルの問題箇所

問題があった設定

問題のあった設定

set -g terminal-overrides 'xterm*:smcup@:rmcup@' set -g alternate-screen on # ←これが問題 set -g history-limit 2000 # ←容量も少なかった
修正後の設定

スクロールバッファ設定の修正

set -g history-limit 50000

代替画面を完全に無効化(重要)

set -g terminal-overrides 'xterm*:smcup@:rmcup@' set -s escape-time 0

明示的にスクロール機能を有効化

set -g mode-keys emacs set -g status-keys emacs

解決手順

1. 設定ファイルを修正

~/.tmux.confを編集

nano ~/.tmux.conf

上記の修正版設定を適用

2. 設定を再読み込み

tmux source-file ~/.tmux.conf

3. 新しいペイン/ウィンドウでテスト

新しいテスト用ウィンドウを作成

tmux new-window -n test

長い出力でテスト

for i in {1..100}; do echo "Line $i: Test"; done

4. スクロール動作確認

  • マウスホイール: 直接スクロール
  • Prefix + s: コピーモードでスクロール
  • 右上表示: [行数/総行数] が正しく表示されるか確認

重要なポイント

既存ペインは修正されない

重要: 設定変更は新しく作成するペイン/ウィンドウにのみ適用される。既存のペインは古い設定のまま。 対処法: 1. 新しいウィンドウに移行 (推奨) 2. セッション再起動 3. 履歴クリア: tmux clear-history

設定のキーポイント

#### ✅ 有効な設定

set -g mouse on                    # マウス操作有効
set -g history-limit 50000         # 十分な履歴容量
set -g terminal-overrides 'xterm*:smcup@:rmcup@'  # 代替画面無効化

#### ❌ 問題のある設定

set -g alternate-screen on         # 代替画面有効(スクロール阻害)
set -g history-limit 2000          # 履歴容量不足

予防策

定期的な設定確認

現在の設定値を確認

tmux show-options -g mouse tmux show-options -g history-limit tmux show-options -g alternate-screen

テスト用の長い出力コマンド

設定変更後のテスト用

seq 1 200 | xargs -I {} echo "Test line {}"

推奨設定テンプレート

マウス操作

set -g mouse on

履歴設定

set -g history-limit 50000

スクロール最適化

set -g terminal-overrides 'xterm*:smcup@:rmcup@' set -s escape-time 0

キーバインド

set -g mode-keys emacs set -g status-keys emacs

簡単スクロールモード

bind-key s copy-mode bind-key Escape copy-mode

まとめ

tmuxのスクロール問題は主に 代替画面設定の競合 が原因。特に:

1. alternate-screen on を無効化 2. history-limit を十分な値に設定 3. 新しいペイン/ウィンドウ で設定を有効化

この手順で、iPhone/SSH環境でも快適にスクロールできるようになる。

参考情報

  • tmux公式ドキュメント: terminal-overrides設定
  • iTerm2設定: "Save lines to scrollback in alternate screen mode"
  • SSH環境: ターミナルエミュレータとの連携設定

---

発生日: 2025-07-27 解決時間: 約10分 対象環境: macOS + iTerm2 + tmux

はじめに

RSSフィード記事から、興味深い記事だけを自動ピックアップしてくれるシステムを作りました。Claude 3.5 Sonnetの判定能力で見逃しを防ぎます まあ別に見逃してもいいんだけど

システム概要

🤖 AI判定による高精度記事選定

  • AI: Claude 3.5 Sonnet(Max 100プラン活用)
  • 判定基準: 個人の関心領域に基づくスコア算出

⏰ 完全自動化された運用

  • 実行頻度: 1時間ごと(24回/日)
  • 記事取得: Feedly APIから過去24時間の全記事を自動取得
  • 重複除外: 処理済み記事の自動フィルタリング
  • 通知: Discord経由でiPhoneに即座通知

🌍 英語記事の日本語要約機能

英語記事を自動検出し、Claude 3.5 Sonnetが日本語で要約を生成

技術的な実装ポイント

3. 状態管理による効率化

処理済み記事IDの永続化

state = { "last_processed": "2025-07-27T11:18:24", "processed_entries": ["article_id_1", "article_id_2", ...] }

最新1000件の処理済み記事IDを保持し、重複処理を回避。

実際の運用結果

記事取得・判定実績

  • 総記事数: 234記事(過去24時間)
  • 未処理記事: 144件
  • AI判定実行: 20記事(API コスト考慮)
  • ピックアップ: 11記事選定

選定された記事例

  • 🔥 AWS関連: Lambda新機能、Audit Manager更新
  • AI技術: ChatGPT vs Magnus Carlsen、Google Gemini問題
  • セキュリティ: Amazon侵害攻撃、Copilot脆弱性
  • EV: Tesla スーパーチャージャー・ダイナー開設
  • 個人技術: Pomera Linux環境、Claude Code活用法

運用上の工夫

Discord Webhookによる即座通知

iPhone上のDiscordアプリで記事通知を受信

処理数制限によるコスト最適化

1回の実行で最大20記事のAI判定に制限することで、Claude APIの使用量をコントロール。

システムの効果

Before(手動選定)

  • 毎日数百記事の手動チェック
  • 重要記事の見逃し頻発
  • 英語記事の理解に時間消費

After(AI自動選定)

  • 1日24回の自動監視
  • 関心度スコア付きで優先度明確
  • 英語記事も日本語要約で瞬時理解
  • Discord通知で外出先でも確認可能

まとめ

Claude 3.5 Sonnetの高い判定能力と、完全自動化されたワークフローにより、情報収集の効率が向上する、、はず(気が散りそう)

Pomera DM300 でググると出てくる記事が面白かったので、まとめてみた。DM250が出る前の記事もあるので若干雑ですが、まあこれも記録ということで

1. ポメラ DM300(仮名)の発売時期予想と期待する新機能

URL: https://bebelog.info/tools/gadget/pomera-3

DM300の発売時期を予想している記事。2023年がポメラ15周年記念年だから、その頃に出るのではという推測。期待する新機能についても詳しく書かれている。作者の妄想と断りつつも、ユーザーの期待が詰まった内容。

2. 価格.com - 『DM300に望むこと』 キングジム ポメラ DM200 のクチコミ掲示板

URL: https://bbs.kakaku.com/bbs/K0000913732/SortID=22377652/

価格.comの掲示板で、ユーザーがDM300に望む機能について議論している。マルチウィンドウ対応、ユーザー辞書機能、見出しベースのテキスト選択機能など、具体的な要望が満載。リアルユーザーの声が聞ける貴重な場所。

3. ポメラ DM200 の後継版 DM300 があるとしたら僕はこういうものを望みます - stamemo

URL: https://stakiran.hatenablog.com/entry/2019/05/18/170211

個人ブログでのDM300への期待を語った記事。指紋が付きにくいコーティング、カレンダー機能の強化、文字数制限の緩和など、実用的な改善点を挙げている。実際のユーザー体験に基づいた要望が参考になる。

4. やっぱり新型ポメラは出ると思う | ねてもさめてもポメライフ

URL: https://letme5.net/post-1257/

ポメラ専門ブログからの記事。DM250が中継ぎモデルで、2023年に本命のDM300や「4桁ポメラ」が出るのではという予想。ポメラ愛に溢れたブログならではの深い考察。

5. ポメラDM300はいつ発売されるのか予想しました【新型・アップデート】 | 作家になるためのシステム

URL: https://depalma01.com/2020/02/08/dm300/

作家向けのブログでのDM300発売予想記事。過去の発売パターンから2021年10月を予想していたが、実際にはDM250が2022年に発売された。予想は外れたが、分析は面白い。

6. ポメラの後継機はDM300よりもDM150になってほしい | 電子書籍多読日記

URL: https://ebooklife.net/1557.html

逆張りの意見として、DM300への進化よりもDM150のようなシンプルモデルを求める記事。機能を増やすより、シンプルな書くことに特化したモデルを望む声。確かに一理ある。

7. 【Hothotレビュー】約6年ぶりの新型、「ポメラ DM250」が秘めた新しい可能性 - PC Watch

URL: https://pc.watch.impress.co.jp/docs/column/hothot/1428433.html

実際に発売されたDM250のレビュー記事。Wi-Fi機能の追加やスマホ連携など、新しい可能性について詳しく解説。DM300を待つより、DM250を買った方が良いという結論も説得力がある。

8. 「文字数常時表示」が便利過ぎ! 新型「ポメラ DM250」は地味に大進化していた - 価格.comマガジン

URL: https://kakakumag.com/av-kaden/?id=18637

DM250の地味だけど重要な進化ポイントを紹介した記事。文字数常時表示機能が想像以上に便利だったという体験談。細かい改善点の積み重ねが使い勝手を大きく向上させることがよく分かる。

9. 【レビュー】ブロガー憧れの「ポメラ DM250」を使ってみた感想と魅力(2025年6月)

URL: https://hontabisatori.com/review-pomera-dm250/

ブロガー視点でのDM250レビュー記事。実際に使ってみた感想と魅力について詳しく書かれている。ブログ執筆ツールとしてのポメラの可能性を探った内容。

10. ポメラ DM250 さんざん悩んで買いました 〜唯一無二の思考ツールでした|傘クリエイター つじのよしひろ

URL: https://note.com/tsujino4416/n/nf8dcbd7106e9

note記事での購入体験談。散々悩んだ末にDM250を購入した経緯と、使ってみた感想。「唯一無二の思考ツール」という表現が印象的。実際のユーザーのリアルな声が聞ける。

DM300の現状まとめ

調べた結果、DM300はまだ発売されていない。現在の最新モデルはDM250(2022年発売)。

多くのユーザーがDM300に期待しているが、DM250の完成度が高いため「待つより今買った方が良い」という意見が多数。

興味深い発見

1. 予想はことごとく外れている: 多くの人が2021年や2023年発売を予想していたが、実際にはDM250が出た 2. ユーザーの要望は一致している: 指紋対策、マルチウィンドウ、ユーザー辞書など、共通の要望がある 3. シンプル志向も根強い: 高機能化よりシンプル化を求める声もある 4. 実際のユーザーの満足度は高い: DM250を使った人の評価は概ね良好

感想

出たら買うかな

以前Pomeraにlinuxを入れた話を書いたが、今回は環境設定の詳細について整理してみる。

かなりいろいろ設定をいじっているので、忘れないうちにメモしておく。

現在の構成

  • ハードウェア: Pomera DM250
  • OS: Debian 11 bullseye (ARM v7l)
  • ウィンドウマネージャー: i3wm
  • ターミナル: URxvt (rxvt-unicode)
  • 日本語入力: ibus + mozc
  • フォント: Ricty Diminished

自動ログイン・X Window起動設定

.bash_profile

if [[ -z  $DISPLAY ]] && [[ $(tty) == /dev/tty1 ]];  then
	  startx
fi

ログイン後、自動的にX Windowが起動するように設定している。tty1(最初のコンソール)でのログイン時のみstartxを実行。

.xprofile

#!/bin/sh
xset r rate 300 25
/usr/local/bin/x-set-keys &

X Window起動後に実行される設定。キーリピート速度の調整とx-set-keysの起動を行う。

手動起動の問題

現在、x-set-keysの自動起動がうまくいかず、X Window起動後に手動で以下を実行している:

sh .xprofile

この作業を忘れないように、.bashrcの末尾で操作メモを表示している:

.bashrc(末尾)

more /mnt/sd/doc/welcome.txt

/mnt/sd/doc/welcome.txt

ログイン後、sh .xprofile を実行してください そしたらMenuプラスEnterで別ターミナル開いて、Menu+wで最大化。   あとこれもやったらだめ固まるー>ctrl z してbgとかそういうやつ"

操作TIPS ・urxvt-unicodeでのペーストはCTRL+ALT+v ・文字サイズ変更はCTRL++,CTRL+- ・明るさ変更は ~/brightnessコマンド(GUI) ・マウスはCTRL+; ・日本語IMEオンオフは半角全角キー

このメモには、基本的な操作方法も含めている。

X Window関連設定

.xinitrc

export LANG=ja_JP.UTF-8
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus

xrdb -merge -I$HOME ~/.Xresources ibus-daemon -drx& /usr/bin/keynav & export LANG=ja_JP.UTF-8 exec i3

X起動時に日本語環境とibus、keynavを自動起動している。最初はXFCE4を使っていたが、軽量なi3wmに変更した。

.Xresources

URxvt*font:     xft:Ricty Diminished:size=16
URxvt.letterSpace:        -1
URxvt.faceSize:       12
URxvt.background:             snow
URxvt.foreground:             black

URxvt.saveLines: 3000 URxvt.scrollBar: false URxvt.cursorBlink: true URxvt.cursorUnderline: true URxvt.pointerBlank: true URxvt.fading: 40 URxvt.iso14755: false URxvt.pastableTabs: false

URxvt.perl-ext-common: xim-onthespot,keyboard-select,resize-font URxvt.inputMethod: ibus URxvt.preeditType: OnTheSpot

URxvt.keyboard-select.clipboard: true

URxvt.keysym.Shift-Up: command:\033]720;1\007 URxvt.keysym.Shift-Down: command:\033]721;1\007

URxvt.keysym.M-s: perl:keyboard-select:activate

URxvtは軽くて設定が豊富。日本語入力のOnTheSpot設定がポイント。

マウス操作をキーで行う - keynav

Pomeraにはマウスがないので、keynavでキーボードからマウス操作を実現している。

.keynavrc

clear
daemonize

起動キー

ctrl+semicolon start,cursorzoom 20 20

終了

Escape warp,end q warp,end

クリック

space warp,click 1 1 warp,click 1,end 2 warp,click 2,end 3 warp,click 3,end

カーソル移動(vim風)

h move-left 20 j move-down 20 k move-up 20 l move-right 20

shift+h move-left 50 shift+j move-down 50 shift+k move-up 50 shift+l move-right 50

Emacs風

ctrl+n move-down 20 ctrl+f move-right 20 ctrl+p move-up 20 ctrl+b move-left 20

アプリケーション起動

5 sh "lilyterm",end 6 sh "leafpad",end 7 sh "sylpheed",end 8 sh "midori",end 9 sh "gvim",end 0 sh "emacs",end

Ctrl+;でマウスカーソルが表示され、hjklで移動、spaceでクリック。

よく使うアプリケーションを数字キーで起動できるようにしている。

i3ウィンドウマネージャー設定

軽量で設定が柔軟なi3wmを採用。

~/.config/i3/config(抜粋)

set $mod Mod4

font pango:FontAwesome,Ricty Diminished,DejaVu Sans Mono 12

タブで次のワークスペース

bindsym $mod+Tab workspace next bindsym $mod+Shift+Tab workspace prev

スクリーンロック

bindsym $mod+l exec slock && sleep 1

ボーダーを賢く非表示

hide_edge_borders smart

ステータスバー設定

bar { font pango:FontAwesome,Ricty Diminished,DejaVu Sans Mono 14 status_command i3status }

システム情報表示 - i3status

右下のバーにIPアドレスやバッテリー情報を表示。

/etc/i3status.conf

general {
    output_format = "i3bar"
    colors = false
    interval = 7
}

order += "wireless _first_" order += "battery 0" order += "tztime local"

wireless _first_ { format_up = "SSID:%essid/%ip%quality" format_down = "Wifi:down" }

battery 0 { path = "/sys/class/power_supply/battery/uevent" format = "%status%percentage" }

tztime local { format = "%Y-%m-%d(%a) %H:%M" }

WiFi SSID、IPアドレス、電波強度、バッテリー残量、日時を表示。

日本語入力設定

.uim

(define default-im-name 'mozc)
(define-key generic-on-key? '(" " "zenkaku-hankaku"))
(define-key generic-off-key? '(" " "zenkaku-hankaku"))

Ctrl+SpaceとZenkaku-hankakuキーで日本語入力のON/OFF切り替え。

キーボード問題について

PomeraをLinux化すると、複数キー同時押しで意図しない文字が入力される問題がある。

現在の対策

1. キーリピート調整: /etc/X11/xorg.conf.d/00-keyboard.conf

   Section "InputClass"
       Identifier "system-keyboard"
       MatchIsKeyboard "on"
       Option "AutoRepeat" "300 20"
   EndSection
   `

2. x-set-keysツール: /usr/local/bin/x-set-keys - 複数キー入力問題を軽減するカスタムツール - SUID権限で動作 - .xinitrcでコメントアウト中(不安定のため)

3. bashrcでの環境設定: `bash export LANG=ja_JP.UTF-8 `

具体的な問題

  • 複数キー同時押しで文字化けが発生。具体的には りょ、ちゅ、などを高速入力するとたいてい違う文字が入る。

この問題は完全には解決していない。Pomeraのハードウェア特性に起因する可能性が高い。これについては以前にも少し書いた→ ポメラdm250をlinux化すると複数キー同時入力で違う文字が入ってしまう問題 : まさかの日記 https://masakano.com/archives/52628373.html

WiFi設定

/etc/network/interfaces

bash

Include files from /etc/network/interfaces.d:

source /etc/network/interfaces.d/*

NetworkManagerを使用してWiFi接続を管理。GUIでも設定可能。

その他の便利な設定

.bashrc

bash export LANG=ja_JP.UTF-8

ヒストリー設定

HISTSIZE=1000 HISTFILESIZE=2000

.tmux.conf(Pomera側)

bash unbind C-b set-option -g prefix C-t set-option -g status-interval 30 set-option -g status-right "|#(~/bin/date)|#(/home/pomera/bin/charge):#(/home/pomera/bin/batt)"

bind r source-file ~/.tmux.conf \; display-message "Config reloaded!" `

プレフィックスキーをC-tに変更。ステータスラインには日付とバッテリー情報を表示。

開発環境

  • エディタ: vim, emacs
  • 言語: Python, Ruby, Common Lisp (SBCL + Quicklisp)
  • ブラウザ: Firefox ESR
  • メーラー: Sylpheed

最近はClaude Codeも快適に動作している。

パフォーマンス

軽量な構成にしているため、Pomeraでも意外と快適。

  • メモリ使用量: 起動後約200MB
  • CPU負荷: アイドル時1%以下
  • バッテリー持続時間: 通常使用で6-8時間

今後の課題

1. キーボード問題の根本解決 - おそらく対応は不可能。ポメラの次バージョンに期待か?(でるんか?

2. パフォーマンス向上 - さらなる軽量化 - 起動時間の短縮

3. モバイル対応 - Tailscale経由での外部アクセス最適化 - バッテリー消費の改善

感想

正直pomeraの使いみちがなくて困っていたが、こんだけ遊べれば充分もとは取ったかな

ちなみにこの記事もclaude codeにほぼかいてもらった(expectコマンドで勝手に入ってもらって見てもらった)。このpomera のlinux側のいろんな設定をなにかに残さないとな、、とずっと思っていたが、ここでこういう形で実現して良かった。まあ二度とここまでやることは無いと思うが、、次のPomera(DM300か)が出たらまたやるかも。カーネルとかを出してくれている皆さんがいるあいだにw pomera dm300でググるといろいろ出てくるね→pomera dm300 - Google 検索 https://www.google.com/search?q=pomera+dm300&oq=pomera+dm300&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIJCAEQABgEGIAEMgcIAhAAGO8FMgoIAxAAGKIEGIkFMgoIBBAAGIAEGKIE0gEIMzc1NGowajeoAgCwAgA&sourceid=chrome&ie=UTF-8

---

参考

  • keynav: http://www.semicomplete.com/projects/keynav
  • pomeraでLinux + Tailscale環境を作った話を書きましたが、もともとはiPhoneから同じような環境にアクセスするということをしていて、こちらのほうがよっぽど一般的な話なのでこっちを書くべきだろう。ということで書いた(書かせた)

    結論から言うと、iPhone + Blink + tmux + Claude Codeの組み合わせが想像以上に快適だった。

    構成

    iPhone (iOS)
        ↓ Tailscale VPN
    Mac (macOS)
        ↓ Blink (mosh)
    tmux session
        ↓
    Claude Code

    使っている技術:

    • Blink Shell: iOS用のSSH/moshクライアント
    • Tailscale: VPN接続
    • tmux: セッション管理
    • Claude Code: AI開発環境

    Blinkを選んだ理由

    最初はPromptというSSHアプリを使っていたが、tmux環境でのスクロール操作で問題があった。

    Blinkに変えたところ、tmux内でも普通にスワイプ操作でスクロールできるようになった。

    これが思った以上に大きな違いだった。

    外付けキーボードの話

    Clicktech社(rebuild.fmで紹介されていたやつ)のBlackBerry風キーボードを買った。

    リファブリッシュ版だったが、見た目のインパクトがすごい。

    最初はtmuxのキー操作でスクロールするためにこのキーボードが必須だと思って買った。

    でもBlinkのスワイプスクロールが使えるようになってから、外付けキーボードの意義が若干薄れてしまった。

    外付けキーボードのメリット

    とはいえ、まだメリットはある:

    • 画面が大きく使える: ソフトウェアキーボードが出ないので画面を最大限活用
    • 見た目のインパクト: 見た目のインパクトというか違和感がすごいので、これを見せると5分くらいは話がもつ(相手にもよる)
    • 物理キーの快適さ: タイピングは物理キーが良い、とかそんなことは全然ないがCTRL+CとかCMD+Vとかは入力しやすい。

    特殊な機能

    外付けキーボードには「ソフトウェアキーボード表示・非表示」キーがついている。

    これに反応するiOSアプリがBlink含めて2つくらいしかない。

    対応アプリの少なさが逆に希少価値を感じさせる。

    tmux設定

    使っているtmux設定を紹介:

    ~/.tmux.conf

    プレフィックスキー変更

    set -g prefix C-a unbind C-b

    スクロールモードで、wとsキーでハーフスクロール

    # Custom key bindings: w/s for half-page scrolling bind-key -T copy-mode w send-keys -X halfpage-up bind-key -T copy-mode s send-keys -X halfpage-down

    実際の使用感

    良い点

    • どこでもアクセス: Tailscale経由でセキュアに接続
    • セッション継続: tmuxでセッションが途切れない
    • スワイプスクロール: Blink上で直感的な操作

    微妙な点

  • キーボード問題: 外付けキーボード不要なのでは疑惑
  • 活用例

    • 電車での移動中にclaude codeに指示出し、進捗確認
    • ベッドでの軽い作業
    • アイデアを思いついた時の即座実装

    感想

    iPhone上で片手でかなりできるのが便利。pomeraも悪くないが、「立ったまま片手でできる」のはこっち。

    外付けキーボードは使用頻度が下がったが、見た目と画面の広さは捨てがたい。

    まとめ

    iPhone + Blink + tmux環境は予想以上に実用的。いろいろ書いているがようするにios上でアプリを開いた瞬間に、mac上のclaude codeのターミナルが表示される、っていうことです。chatgptのiosアプリとかと同じ感覚ですね。sshのログインとかは一切無いです(大丈夫か)

    MacOSとiPhoneの両方で同じ開発環境にアクセスできるのは便利。(なんならipad上でも同じものを表示できる。ipadは常時点灯モードにしてビューア的にしている

    ---

    この記事もiPhone + Blinkで書いている。。。ならよかったんだけどこれもほぼclaude codeに書かせている。下書きをプロンプトで渡して、CMSに投稿させ、手動Mac上で校正。あと、ちょっと時間がかかる作業の場合は「おわったらDiscordで通知してね」というのもやってるが、殆どの作業が数秒でおわってしまうので今のところそんなに有用という感じは無い

    PomeraにLinuxを入れて、そこからTailscale経由でMacのClaude Codeにアクセスする環境を作った。

    結果的に外出先でも開発作業ができる環境になった。

    経緯

    iphoneからssh(mosh)して同様の接続経路で使っていたが、

    PomeraにLinuxが入っているなら、これを使えないかと思ったのがきっかけ。

    構成

    Pomera (Debian 11 ARMv7l)
        ↓ Tailscale VPN
    Mac (macOS)
        ↓ mosh + tmux
    Claude Code

    PomeraのLinux環境にTailscaleクライアントを入れて、Mac側に接続する

    実際の接続はmoshを使っている。tmuxでセッション管理

    使っている技術:

    • Pomera: Debian GNU/Linux 11 (bullseye) ARMv7l
    • Tailscale: VPN
    • mosh: リモート接続
    • tmux: セッション管理
    • Claude Code:

    問題と解決

    GPGキーエラー

    TailscaleをDebian環境にインストールするとき、GPGキーでエラーが出た。

    NO_PUBKEY 458CA832957F5868

    複数の方法でGPGキーを取得するスクリプトを作って解決した。

    使ってみて

    Pomeraのキーボードはまあまあ打ちやすい。

    長時間使っても疲れにくいのがいい。

    何より、使い道のないPomeraに多少の存在意義が

    利点:

    • 軽い(持ち運び楽)
    • 電池が長持ち
    • 静か
    • どこからでもTailscale経由で接続
    • tmuxで作業継続できる
    • Claude Codeの支援も使える

    外出先でのコーディングや文章作成に使えそう。

    感想

    正直、何をするかより環境を作ることが目的になっている

    がこういう取り組みから新しいアイデアが生まれることもあるので、無駄ではないと思う。

    接続構成:Pomera → Tailscale → Mac → mosh → tmux → Claude Code

    追記

    この記事も実際にPomera経由で書いている、、んだったらいいんだけど実際はClaudecodeに書いてもらった(作業もほぼほぼそっちでやってもらった。セットアップスクリプトをかいてもらってSCP転送して実行、ログを出力して再度見てもらって、、みたいな。

    このページのトップヘ