Inkdrop のロードマップ vol.3

Inkdrop のロードマップ vol.3

Inkdrop のロードマップ vol.3

今後予定している抜本的改善や新しい機能など

この記事は “The Roadmap of Inkdrop vol.3” の日本語訳です。

こんにちは、TAKUYAです。MarkdownノートアプリInkdropを一人で開発運営しています。

最近、前回のロードマップのタスクをすべて完了しました。

モバイル版の再構築など、なかなかにハードな道のりでした。モバイル版はそのお陰でノートの閲覧や編集がとても快適に使えるようになりました。気に入って下さっているようでとても嬉しいです。ちなみに、その開発で得た知見はこちらの記事にまとめましたのでよろしければ御覧ください。React Nativeの開発に役立つと思います。

そして、ロードマップには無かったのですが、同期機能に関して重要なアップデートがありました。それはコンフリクトしたノートの自動コピーです。最も最悪なユーザ体験はノートのデータが失われることです。この改善によってより安心してアプリが使えるようになりました。この機能のバグ修正に熱心に協力してくださったOtawaraさんやMeoさんに感謝します。ありがとうございます。お陰様で動作が安定しました。

さて、これまで沢山の改善が加えられてきましたが、Inkdropはもっと先へ進みます。フォーラムではその事についてユーザのみなさんからいろいろ意見を仰ぎ、アイデアを頂きました。では、Inkdropの未来について語りましょう。

タスク進捗表示は最近追加された機能の一つです

その前に、一つお話したいお知らせがあります。

このアプリは大手のメディアに一度も取り上げられることなく、ゆっくりと成長してきました。ユーザの増加は口コミを中心にもたらされてきたのです。それは安定したサービスの提供と迅速丁寧なサポートを可能にしました。もしスタートアップのように急激な成長を追い求めていれば、一人ではとても扱えずサーバは不安定、ユーザサポートはお粗末な事になっていたでしょう。

そして今、継続課金ユーザは600人に達しようとしています。だいたい月50人くらいのペースで増えています。目標である1,000人が徐々に見えてきました。総売上はすでに300万円を超えました。お陰様で、当面の生活費はそれほど気にせず、アプリの開発に集中できるようになりました。あと開発ツールや運用ツールにもお金をかけられるようになったので、作業が更に効率化できそうです。ありがとうございます。

では本題に入りましょう。今回も長い旅になりそうです。

新しいモバイル版の紹介記事にて言及した通り、デスクトップ版は根本的な再デザインが必要でした。今後も安全性や安定性、シンプルさ、簡潔さを保ちつつ開発を長期的に継続していくためです。なぜならアプリのスタックが古くなりつつあるからです。たとえばReactは未だにv14を使っています。いくつかのライブラリは既にdeprecateされています。これらを最新版にキャッチアップするには、breaking changeが多すぎます。また、2年前の僕にとってReactでの開発は初めてでしたが、今ならもっとうまくやれるでしょう。

新しいコアモジュール群はJavaScript + Flowで書き直されテストが加えられました。これらのモジュールはデスクトップ版(Electron)とモバイル版(React Native)間で共用されることを前提としています。ここでデスクトップ版と統合したいと思います。

現在データの暗号化はInkdropのサーバ上で行われます。僕はただのインディーデベロッパーなので、僕の運用するサーバが完全に安全だと信じるのは難しいでしょう。また、僕がみなさんのデータを盗み見していないことを証明するのは構造的に不可能です。そのためユーザ自身で用意したCouchDBと同期できる機能をサポートしています。ただ、それは明らかにお茶を濁しているだけで、本質的な問題を解決していません。

クラウド同期に標準対応しているノートアプリとして、セキュリティは最上級の問題です。ずっと、どうすればInkdropにEnd-to-End暗号化(端末上で暗号化すること)を導入できるか考えていました。これはAppleのiCloudでも採用されている技術で、もはやデファクトスタンダードなセキュリティ技術といえるでしょう。なのでサービスとしての要求基準を上げる必要があります。

透明性の担保として、開発した暗号化モジュールの一部はオープンソース化しようと考えています。コードレベルで安全性を確認できます。また、もしInkdropのクライアントを開発するときにも再利用できます :)

技術的に難しいものではありますが、やるべき時です。

ノートが増えるにつれて、検索機能の重要性は増します。

現在の検索UIは冗長な構文や小さなテキストボックスのせいで結構使いづらいです。デフォルトの検索条件である -status:completed -status:dropped は長すぎるのでなんとかして短く表示したいところです。クエリが長くなれば折り返して常に全容が見えるようにすべきです。また、検索条件の入力補助としてオートコンプリートがあると便利です。

検索アルゴリズムはTF/IDFによる実装で、PouchDBのモジュールとして実装されています。しかしそこにはいくつかの問題があります:

  1. インデックス化が遅い。モバイルで特に顕著です。PouchDBとSQLite3の間に大きなオーバヘッドがあるためです。沢山ノートがある場合、インデックス構築にとても長い時間がかかってしまっています。僕は待たされるのが嫌いです。
  2. マッチングがあいまいで不安定。一貫性のないマッチング動作によってノートの発見を阻害しています。

これらの問題に対処するため、現在の実装を一旦捨てて、効率化と一貫性を念頭に置いて構築し直したいと思います。React NativeとElectronの両方で動くように作るのは結構難しそうですが。

嬉しいことに、すでに沢山のプラグインがユーザのみなさんによって作られています。 Inkdropはデベロッパー向けのアプリです。他の洗練されたエディタと同様に、できるだけ自由にカスタマイズできるように高い拡張性を備えることは重要です。しかしながら現在のAPIドキュメンテーションは不完全で、作者である僕の助けを借りなければプラグインを作成することが難しい状況です。

新しいデスクトップ版もまたパワフルなAPIを備える予定です。その拡張性を出来るだけスムーズに理解できるように、しっかりとしたドキュメンテーションを用意したいと考えています。

Markdownは画像サイズの調整に標準で対応していません。ノートをHTMLビューで見た時、画像が大きすぎたり小さすぎることはよくあるものです。その悩みを解決したい。

この問題に対してはいくつかの解決案があります:

  1. プラグインで画像サイズを指定できるようにMarkdownを拡張する
  2. HTMLのimgタグを使う
  3. プレビュー画面でサイズを調整できるGUIを追加する
  4. #inkdrop-image-* のようなURLハッシュを識別する

1番目はシンプルですがMarkdownのシンタックスを拡張したくありません。他のツールとの互換性が失われるからです。2番目はシンタックスを壊しませんが、HTMLをわざわざ書くのは面倒です。3番目はWYSIWYGっぽい機能です。プレーンなテキストエディタにはそぐわないでしょう。

なので4番目のソリューションを採用したいと思います。例えば、以下のように画像を記述します:

<span id="58b2" class="rd qe io rq b gz sb sc m sd se">![img](inkdrop://file:-58zRhql1#inkdrop-image-small)</span>

アプリはURIのハッシュ部分を認識します。この場合 #inkdrop-image-smallです。それに対して以下のようなCSSを適用します:

<span id="24fa" class="rd qe io rq b gz sb sc m sd se">img[src*="#inkdrop-image-small"] {<br></br> max-height: 10em;<br></br>}</span>

これで小さな画像表示が得られます。もしピクセルパーフェクトな表示を得たい場合は、画像をクリックしてください。フルウインドウのプレビューが表示されます。

Samantha と Sceptic、アイデアありがとう!

Markdownで直にテーブルを記述するのは結構大変ですよね。なにかテーブルを生成を支援する機能が欲しいところです。また、ショートカットでカーソル位置の前/後に列や行を追加できたり削除したり出来るとなお便利です。ただし、TyporaのようなWYSIWYGスタイルのテーブルエディタは実装しません。

Inkdropが様々な国の人々に使われていることは、僕がとても誇りに思っている事実の一つです。しかし現在のスペルチェッカーは英語にしか対応していません。他の言語への対応はそこまで難しくありませんので、対応したいと思います。

Cornelius、提案ありがとう!

お読み下さりありがとうございます。

お気付きかもしれませんが、今回のロードマップは新機能の追加よりもコア機能の改善にフォーカスしています。より永く使って頂けるように、シンプルでクリーン、安定かつ安全なサービスを提供するためです。

でもここで挙げたのはあくまで大きな変更のみです。これまでのように、予告なく新機能や改善が加えられることもあります。なのでぜひ遠慮なくご意見をお聞かせください。僕はいつでもあなたのご意見を歓迎します。

いつもバグ報告や機能要望ありがとうございます。これからのInkdropの発展にご期待下さい!

Read more

Claude Codeをtmuxのポップアップウィンドウで継続的に走らせる方法

Claude Codeをtmuxのポップアップウィンドウで継続的に走らせる方法

💡本記事は英語ブログの日本語訳です。 どうも、TAKUYAです。 AIコーディングでは専らClaude Codeを使っています。最初はtmuxでターミナルの右側にペインを分割して使っていたのですが、幅が狭すぎてメッセージやdiffがまともに表示できず、使いづらかったです。 <Prefix>+zでペインを最大化すればいいのですが、毎回やるのは面倒でした。 そこで、ポップアップウィンドウでClaude Codeを起動するようにしました。キーバインドを押せばセッションが開き、閉じてもバックグラウンドで動き続けるので、すぐに再開できます。 この記事では、それを実現するためのtmuxの設定方法を紹介します。 動画で見る(英語): ポップアップウィンドウはサブプロセスを維持できない tmuxのdisplay-popupコマンドを使うとポップアップウィンドウを表示でき、ちょっとしたツールにすぐアクセスするのに便利です。 僕はlazygitでgitの状態をサッと確認するのに使っています: bind -r g display-popup -d '#{pane_current_path}'

By Takuya Matsuyama
Keychron K2 HEを無刻印化する手順

Keychron K2 HEを無刻印化する手順

どうもTAKUYAです。KeychronさんにK2 HEをお願いしたら音速で送ってくれたので、無刻印化してみました。どうやったのか過程をシェアします。 Unboxing 上はKeychron Q1です。これは3年間ぐらい使ってきました。キーキャップが若干くたびれていますね。でも問題なく今まで使えていました。そろそろ飽きてきたので新しいキーボードを試したいと思い、前から気になっていたK2 HEを試すことにしました(写真下)。 Amazon | 【国内正規品】Keychron K2 HE ラピッドトリガー ワイヤレス カスタムキーボード、ホールエフェクトGateronダブルレール・マグネットスイッチ、2.4GHz・Bluetooth無線対応、QMKプログラム可能、アルミ+ウッドフレーム、USレイアウト、RGBライト、Mac Windows Linux対応 (ブラック) | Keychron | パソコン用キーボード 通販【国内正規品】Keychron K2 HE ラピッドトリガー ワイヤレス カスタムキーボード、ホールエフェクトGateronダブルレール・マグネットスイッチ、

By Takuya Matsuyama
ノート駆動AIコーディング術の提案

ノート駆動AIコーディング術の提案

どうもTAKUYAです。みなさんはAIエージェントを普段のコーディングで活用されていますか。ちょっと面白いワークフローを思いついたのでシェアします。それは、ノート駆動のエージェンティック・コーディング・ワークフローです。最近Claude Codeのプランモードを使っていたら、ターミナル内で生成されたプランを読むのが辛かったんです。それで、じゃあMarkdownノートアプリであるInkdropをプランの保存先バックエンドとして使えば解決するんじゃないかと思って、 試してみました。こちらがそのデモです(英語): こちらがClaude Codeの設定ファイル群です: GitHub - inkdropapp/note-driven-agentic-coding-workflow at devas.lifeComplete Claude Code configuration collection - agents, skills, hooks, commands, rules, MCPs. Battle-tested configs from an Anthropic hackathon w

By Takuya Matsuyama
2025年個人開発活動の振り返り

2025年個人開発活動の振り返り

どうもTAKUYAです。もう1月も半ばに差し掛かっているけど、2025年の自分の活動の振り返りをしたい。去年を一言で言うなら、本厄を満喫した年だった。 厄年とは、人生の節目にあたって、体調不良や災難が起こりやすいと経験的に言われる年齢のこと。数え年で42歳、確かにもう若さに任せた事は出来ないなと痛感した年だった。(ところであなたの国ではこのような年はありますか?) 夏に体調を崩して2~3ヶ月動けなくなった 暖かくなり花粉が飛び出した頃に、持病のアトピーが悪化しだして、まともに生活出来なくなってしまった。酷さで言うと、2019年に脱ステした時と同じぐらい。 脱ステに無事成功したから、この地獄は二度と味わうことはないだろうと高を括っていたが、まさか7年後にまた味わうとは思わなかった。当時の独身時代と違い、妻も子供もいる中で、周りに多大な迷惑をかける事となった。夏の子供との思い出が全く無い。悲しい。 現在はQoLもほとんど元の状態まで復活できた。写真を撮って症状の変化を記録したので、機会があればシェアしたい。食事療法など色々試したが、結局歩くのが一番自分に効いた。それ以来、一日一万歩

By Takuya Matsuyama