Inkdrop v5をリリースしました

Inkdrop v5をリリースしました

Inkdrop v5をリリースしました

より高速なデータ同期とアプリ起動、アイコンの刷新とよりシンプルになったUI、プロジェクトのような動作が加わったノートブック、そしてプラグイン管理GUIなど

英語で書いてから日本語訳しています ⇒ English version is available here.

こんにちは、TAKUYAです。本日Inkdrop v5をリリースしました。前回のアップデートから5ヶ月ぶりとなります。沢山の新機能、改善やバグ修正があります。アナウンスできてとても嬉しいです。ベータ版のテストを手伝ってくださった皆さんに感謝します。ありがとう、Andi, can_Y, ebigram, Erdem, Gustavo, James, Mike, Rael, tdudz, Zhuolun!さて、本稿ではv5の新しく加えられた変更点についてご紹介して行きます。

日本語字幕あります。CCボタンをタップ

Inkdropとは? — 4年かけて作ったアプリ

A Markdown note-taking app that syncs

偶然この記事に出会ったみなさん: はじめまして!僕はInkdropを4年間ひとりで開発しています。時が経つのは早いですね。これはプレーンテキストのMarkdownノートアプリで、macOS、Windows、Linux、iOSそしてAndroidと様々なプラットフォームで動作し、End-to-end暗号化方式で安全に同期します。最初は自分のために作りました。当時、コードの構文ハイライトやvimキーバインディング、ハック可能性などのプログラマーフレンドリーな機能を備えたEvernoteの代替アプリをずっと探していまいた。でも全然見つけられなかったので自分で作ることにしたのがきっかけです。良いノートアプリを作る旅は想像するよりも本当に険しいものでした。でも4年間耐え忍び、改善し続けました。当ブログでは開発を通して学んだことをシェアしています。個人開発のビジネスにご興味のある方はご覧ください:

去年は、技術的負債を綺麗にすべくアプリをイチから作り直すという苦行(笑)を無事やり遂げました:

今回のアップデートはこれらの積み重ねの上に乗るものです。

実は完全な独りきりの開発ではありません

独りきりで良いエディタを作るのは至難の業です。なぜならデベロッパーには数え切れないほど沢山の個人の好みや「あるといい」機能があるからです。この問題に対処すべく、InkdropではパワフルなAPIを提供して、みなさんに自由に新たな機能や見た目を追加できるようにしました。僕自身はコア機能の改善に勤しむ傍ら、ついにプラグインの数は100個を超えました!そのうち80%がユーザコミュニティ製のプラグインです。素晴らしいですね。ユーザさんが楽しみながらInkdropをハックしていて僕もとても楽しいです。プラグインはこちらから閲覧できます。

プラグインは僕が沢山のオプション機能を追加する代わりに、コアの重要な機能の改善に集中することが出来ます。なので、Inkdropではプラグイン開発者ライセンスでプラグインの開発を推進しています:

Inkdropプラグイン開発者ライセンスのご案内
プラグインを開発するとInkdropを永久無料で使えるようになります

プラグインを作れば、Inkdropを永久無料で使えるというライセンスです。

より高速な同期とアプリ起動

ではまずはv5におけるパフォーマンス改善についてお話したいと思います。

データベースのクラスタをスケールアウトしてから、データ同期が予想外に遅くなってしまいました。調査の結果、サーバ間のRTTは166msと遅く、それは各サーバが異なるリージョンで動いているのが原因でした。つまりネットワークトポロジが悪かったのです。そこでサーバを同一リージョンに移し、しかしAvailability Zoneは別々の配置にしたところ、RTTは1ms以下に改善しました。その結果、ノート同期速度は以前の3倍になりました!

アプリの起動速度も格段に良くなりました。InkdropはElectron製のアプリなのですが、以前のバージョンでは起動に4秒もかかり、とても遅いものでした。今回、v8 snapshotsを利用することでこの起動速度の改善に成功しました。以下をご覧の通り、アプリの起動は1,000ミリ秒速くなりました。起動速度が遅いとストレスですよね。今回、この問題が解決できてとても嬉しく思います。具体的にどうやって達成したのかは以下の記事に書きました:

Electron製アプリの起動速度を1,000ミリ秒速くする方法
JavaScriptの読み込みはめっちゃ遅い / require() は必要になるまで呼び出すな / V8 snapshotsを使う

以下の通り、とても速いです。

アイコンの刷新とよりシンプルになったUI

ツールバーのアイコンは今ではちょっと古い感じがしていました。昨今の高解像度なディスプレイでは、それらは少々太すぎました。その上、エディタ上のアクションボタン群は幅を取りすぎていて、小さいディスプレイをお使いの方には使いづらいという問題がありました。

そこで、アイコンを刷新し、エディタアクションボタン群を再配置して、よりモダンでクリーンにしました:

右上の「 ︙ 」ボタンをクリックすると、エディタドラワー(Editor drawer)が表示されます:

今回の改善にはStreamline Iconsを使いました :)

プロジェクト的な動作が加わったノートブック

デベロッパーのみなさんは、沢山のプロジェクトやサイドプロジェクトを抱えていることでしょう。Inkdrop v4では柔軟性が足りなかったため、また一つプロジェクトが増えるたびに、ノートの整理がやりづらくなっていました。たとえ沢山のノートブックやタグやノートを作ったとしても、Inkdropは常にあなたの日頃のハックの努力をメモできる場所でなければなりません。その実現に向けて、今回のアップデートでは以下の新機能がサポートされました:

  • ノートのピン (pin notes to the top)
  • 畳まれた親ノートブックで子ノートも表示
  • ワークスペース・ビュー
  • 各ビューにおけるソート順序の記憶
  • ナビゲーション・ステートの記憶

以下で詳しくご説明します。

ノートのピン

Inkdropにて、どのノートで作業していたか覚えておくのに苦労する事が時々あるでしょう。 “Pin to Top”機能は、特定のノートをノート一覧の上部に据え付ける事ができます:

畳まれた親ノートブックで子ノートも表示

v5以前では、選択したノートブックは基本的にその直下にあるノートしか一覧表示しませんでした。沢山の子/孫ノートブックがある場合、そのプロジェクトの中身を縦断的に素早く把握したくても出来ませんでした。Inkdrop v5では選択ノートブックがサイドバー上で畳まれた状態の時、その子ノートも一覧に含むようになりました。以下をご覧ください:

サイドバーのノートブック右に表示されているノート数表示も、畳む/展開の状態に応じて変化していることに注目してください。

ワークスペース・ビュー

デフォルトでは、サイドバーにはデータベース内の全てのノートブック、ステータスとタグが表示されています。それらは一緒くたになっていて、どのプロジェクトに関する情報か見分けるのが難しい状態です。今作業しているプロジェクトに関する情報だけを表示したいという事があるでしょう。ワークスペース・ビューはサイドバーの情報を特定のノートブックに絞り込む事ができます:

各ビューにおけるソート順序の記憶

各ビュー(all/notebook/tag/status)において、ソート順序の設定が記憶されるようになりました。これでいちいちノートブック間でソート設定を切り替える必要がなくなりました。

ナビゲーション・ステートの記憶

ノートを書いている最中、他のノートを参照することが多々あるかもしれません。なので、ノートテイキングにおいてノートの検索から素早く編集していたノートに戻れる機能は重要です。以下のデモをご覧ください:

プラグイン管理GUI

プラグインはipm コマンドからインストール出来ましたが、いちいちターミナルを開いてコマンドを実行する必要があり、あまり手軽とは言えませんでした。一部のユーザさんはこのコマンドの取り扱いに混乱している様子でした。100個以上のプラグインがある今、簡単にプラグインをインストール・アンインストール出来ることは重要です。そこで、v5ではプラグイン管理のGUIを実装しました。ターミナルを開くこと無く、プラグインを追加・削除できます:

オートアップデートにも対応したので、 ipm update を実行する必要も無くなりました:

..and many more!

他にも沢山の改善やバグ修正があります。全て列挙するととても長くなってしまうので、詳しくはリリース・ノートをご覧ください。

Read more

ノート駆動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
書いて、歩け!なぜノートアプリはシンプルで充分なのか

書いて、歩け!なぜノートアプリはシンプルで充分なのか

どうもTAKUYAです。今回はノートやメモから新しい発想を生むための考え方についてシェアします。 自分はシンプルさをウリにした開発者向けのMarkdownアプリInkdropを作っています。なので、どうしても「ノートアプリの作者」としてのポジショントークが含まれてしまいますが、逆に言えば、「ノートアプリを約10年間作り続けてきた人間が、どうやってアイデアを生み出しているのか」 という実際的な体験談として読んでもらえれば幸いです。 結論から言うと、僕は「アプリ上でノート同士を連携させる必要はない。繋げるのはあなたの脳だ」と考えています。本稿では、ノートアプリの機能に溺れずユニークなアイデアを考え出すために僕が実践している事をシェアします。 TL;DR * ノート整理に時間をかけるな。グループ化で充分だ * すごい人はアイデアが「降りてくる」のを待つ * プログラミング × 料理動画 という有機的な掛け合わせ * ノートは「忘れる」ために書く * 歩け! ノート整理に時間をかけるな。グループ化で充分だ 巷ではZettelkastenなどが流行っているようですね。これ

By Takuya Matsuyama
貫禄を捨てて愛嬌で生き延びろ!40代オッサンの生存戦略

貫禄を捨てて愛嬌で生き延びろ!40代オッサンの生存戦略

どうもTAKUYAです。 つい先週(11月19日)に誕生日を迎え、41歳になりました。40代と言うのは若い頃には想像もしなかった年代で、どう生きれば良いのかというイメージがあまり具体的に湧かない、曖昧な年齢ではないでしょうか?自分の父親を想像するも、日中はいつも仕事でいなかったのであまり参考になりません。 自分は個人開発で生計を立てていて20代、30代で積み上げて来たものが上手く実を結んだおかげで今の生活があります。育児にも、いわゆるサラリーマンよりかは柔軟に参加できていて、子供との時間も沢山取れています。ママ友も出来ました(迷惑かけっぱなしですが)。 本記事では、そんなライフスタイルを送る自分が40代で大事にしたいことについて書きたいと思います。タイトルにもある通り、結論から言うとそれは「愛嬌」だと思います。以下、中年男性の愛嬌の重要性について説明します。 TL;DR * 「貫禄が出てきたね」と言われたら注意 * 笑顔を作れ。オッサンがムスッとしてたら普通に怖い * 謙虚に振る舞え。実績を積むと周りが萎縮する * ギャップ萌えを活用しろ 「貫禄が出てきたね」と言わ

By Takuya Matsuyama