Inkdrop Mobile v2 プライベートβ 公開のお知らせ

Inkdrop Mobile v2 プライベートβ 公開のお知らせ

Inkdrop Mobile v2 プライベートβ 公開のお知らせ

こちらは本家記事の日本語訳です。

こんにちは、InkdropソロデベロッパーのTAKUYAです。

長らくお待たせしていた新モバイル版Inkdropがようやくプライベートβでの公開に漕ぎ着けました。最後にロードマップを公表してから早6ヶ月です。あっという間でした。ずっと水面下で開発していたので一部の方にはこのプロジェクトの勢いが以前よりも衰えたと感じていたかもしれません。ご安心ください、そんなことは全くありません。英語アカウントの方のTwitterで頻繁に開発の進捗を報告していたので、ご存知の方もいるかと思います。長い間お待ちいただき本当にありがとうございます。

本稿ではこの6ヶ月間の取り組みや、新しいインターフェイスと多くの改善が加えられたアプリについて少しご紹介します。

6ヶ月も要した主な理由はこれです。以前、こちらの記事にも書きましたが、Inkdropには根本的な再デザインが必要でした。今後も安全性や安定性、シンプルさ、簡潔さを保ちつつ開発を長期的に継続していくためです。そのために新しいコアモジュール群はJavaScript + Flowで書き直されテストが加えられました。これらは次のロードマップで、デスクトップ版の実装にも置き換えられます。そうすれば、このアプリは5プラットフォームに対応しながらも1つの共通化されたコードベースによって構成されるようになって、たった一人でも十分可能なメンテ性が実現されます。これは自分だけでなく皆さんにとっても、プロジェクトの継続性を確かなものにする重要なステップです。その難しい作業を6ヶ月でほぼ終えることができて僕はとても嬉しいです。

では、今回のアップデートについてもう少し詳しく見ていきましょう。

以前のバージョンでは大きな問題を抱えていました — すごく動作が遅かった点です。Google Pixel 1のようなハイエンド製品であっても苦しい動作ラグがありました。なぜこんなに重かったのかというと、アプリはReact Native製で、JavaScriptで組まれていたからです。JavaScriptはマルチスレッドに対応していません。なのでデータアクセス処理をバックグラウンドスレッドで実行させるために悪戦苦闘していました。そこにはUIに影響を与える3つのボトルネックがありました:

  1. SQLite の I/O
  2. 全文検索に向けた日本語のトークナイズ
  3. 大量の単語データの保存

1については、拙作のsqlite3モジュールを改良してすべての処理をバックグラウンドスレッドで行うようにしました。2に対しては、専用の分かち書きネイティブモジュールを開発しました。3はPouchDB依存の問題なのですが、内部処置を小分けして実行するように改造しました。これらの対処が功を奏して、僕らが渇望していたスムーズなスクロールやもっさり感が解決できました。

そしてエディタです。これもノートの読み込みがすごく重かったのですが、改善しました。重かった理由は、コンポーネントがWebベースで作られていたことと、非効率なビュー構造です。アプリはWebViewを毎回ノートを開くたびに読み込まなくてはいけませんでした。それが受け入れがたい読み込み時間を引き起こしていました。React Nativeはプログラミングパラダイムとして宣言的なビューの記述をしなくてはなりません。そのため、エディタを閉じてノート一覧画面に戻ると常にWebViewもアンロードされてしまっていました。この問題を解決するために畳み込み構造を持つコンポーネントを設計しました。エディタは常にノート一覧画面の裏にいるので、アンロードされません。このコンポーネントのお陰で無駄な読み込み時間を短縮することが出来ました。

これらの改善によって、手元のMoto G5 (Google Pixel 1よりも二倍遅い)でも充分なパフォーマンスで動作するようになりました。

僕はiOSユーザなので、アプリのUIがiOSっぽくなってしまうのは避けがたい問題でした。でも NativeBase というReact Native向けのクロスプラットフォームなコンポーネントライブラリのお陰で、簡単にマテリアルデザインに沿ったUIを構築できました。Androidユーザの皆さんが違和感なく使えるものになったことを願います :)

Android版のMarkdownエディタは完成度が低くてお粗末なものでした。それはエディタと呼ぶには相応しくないほどに機能が大きく欠けていました。そこには技術的なハードルがあったからです — Google Play Storeでもごく僅かなアプリしか高機能なエディタを備えていないように。しかしInkdropはそれを乗り越えました。デスクトップ版と同じ実装、つまりAndroid上でCodeMirrorをうまく動かすことに成功しました。ツールバーはもちろん、リスト補完、コードブロックの構文ハイライト、オートインデント、日本語入力対応などがAndroidでも実現しました。この実装アプローチには多くの可能性があります。例えば、vimキーバインドの対応も将来的には不可能ではないでしょう。

僕らはプログラミングをするのにまだまだPCが不可欠ですが、アプリがユビキタスに様々なデバイスで動作することを望んでいます。いつでもどこでも働けるように。だからタブレット対応によってアプリがより便利でパワフルになることは間違いありません。僕もそれを望んでいた一人です。自分のiPad Proでも使えるようになってすごく嬉しいです。

タブレット上では、アプリはデスクトップ版と同じく3カラムのレイアウトです。サイドバーとノート一覧は非表示に出来るので、読み書きに集中できます。大きなタッチスクリーンでのノートテイキングを是非お楽しみください。

なぜ僕らプログラマーは暗黒のUIをこぞって好むのでしょうか。僕にはわかりません。しかし、かっこいいのは事実です。本ベータ版ではデフォルトのUIがダークテーマに設定されています。反転した色の美しき世界へようこそ。

みなさんのサポートがなければここまでたどり着けませんでした。感謝の意を込めて、正規ユーザの皆様に限定してベータ版のアクセスをいち早くご提供します。

プライベートβテストに参加するには以下の手順を踏んでください:

  1. フォーラム
  2. 専用トピック
  3. コメントで参加の旨を表明する(例: “I’d like to test android version.”など。出来れば英語でお願いします) — あなたのプラットフォーム(Android/iOS)を教えてください。Androidの場合はPlay Storeの登録アドレスをDM経由で教えてください。
  4. こちらのトピック

ご協力ありがとうございます!

Read more

Inkdrop v6 Canary版リリースしました — 新Markdownエディタやその他新機能盛り沢山

Inkdrop v6 Canary版リリースしました — 新Markdownエディタやその他新機能盛り沢山

Inkdrop v6.0.0 Canary版リリースしました — 新Markdownエディタやその他新機能盛り沢山 こんにちはTAKUYAです。 v6.0.0 の最初の Canary バージョンをリリースしました 😆✨ v6では、アプリのコア機能の改善がたくさん盛り込まれています! * リリースノート(英語): https://forum.inkdrop.app/t/inkdrop-desktop-v6-0-0-canary-1/5339 CodeMirror 6 ベースの新しいエディタ フローティングツールバー v5ではツールバーがエディタの上部に固定されており、使っていないときもスペースを占有していました。 v6では、テキストを選択したときだけ表示されるフローティングツールバーに変わりました。 GitHub Alerts 構文のサポート Alerts の構文が正しい色と左ボーダーでハイライトされるようになりました。 ネストされたアラートや引用にも対応しています。 また、アラートタイプの入力を支援する補完機能も追加されました。 スラッシュコマンド 空行で /

By Takuya Matsuyama
AIのお陰で最近辛かった個人開発がまた楽しくなった

AIのお陰で最近辛かった個人開発がまた楽しくなった

AIのお陰で最近辛かった個人開発がまた楽しくなった こんにちは、TAKUYAです。日本語ではお久しぶりです。僕はInkdropというプレーンテキストのMarkdownノートアプリを、デスクトップとモバイル向けにマルチプラットフォームで提供するSaaSとして、かれこれ9年にわたり開発運営しています。 最近、その開発にClaude Codeを導入しました。エージェンティックコーディングを可能にするCLIのAIツールです。 最初の試行は失敗に終わったものの、徐々に自分のワークフローに馴染ませることができました。そして先日、アプリ開発がまた「楽しい」と感じられるようになったのです。これは予想外でした。 本稿では、自分がエージェンティック・コーディングをワークフローに取り入れた方法と、それが個人開発への視点をどう変えたかを共有します。 * 翻訳元記事(英語): Agentic coding made programming fun again 自分のアプリに技術的負債が山ほどあった ご想像のとおり、9年も続くサービスをメンテするのは本当に大変です。 初期の頃は新機能の追加も簡単で

By Takuya Matsuyama
個人開発を7年以上続けて分かった技術選択のコツ

個人開発を7年以上続けて分かった技術選択のコツ

個人開発を7年以上続けて分かった技術選択のコツ InkdropというMarkdownノートアプリを作り続けて7年になる。 お陰さまでその売上でずっと生活できている。 これまで個人開発でどう継続していくかについて「ユーザの退会理由をあれこれ考えない」とか「アプリの売上目標を立てるのをやめました」とか、ビジネス面あるいはメンタル面からいろいろ書いてきた。 今回は、技術面にフォーカスして、どう継続して開発していくかについてシェアしたい。 TL;DR * 最初はとにかく最速でリリースする事を最優先する * 迷ったら「ときめく方」を選べ * 程よいところで切り上げて開発を進める * 使っているモジュールがdeprecatedされるなんてザラだと覚悟する * 古いから悪いとは限らない * シンプルにしていく * 老舗から継続の秘訣を学ぶ * 運ゲー要素は排除しきれない 最初はとにかく最速でリリースする事を目標に技術選定する 開発計画とビジネス計画は切っても切り離せない。 コーディングに傾倒するあまり完璧主義に陥って結局リリース出来ないまま頓挫してしまう個人開発者は多い

By Takuya Matsuyama
子育て中の個人開発者の一日

子育て中の個人開発者の一日

子育て中の個人開発者の一日 どうもTAKUYAです。 久しぶりに生活まわりの事を書きたい。自分はInkdropというMarkdownノートアプリを売って生きている。 子供も無事順調に成長しており、あと数ヶ月で3歳になるというところで、イヤイヤ期もやっと終わりが見えてきた。 生活パターンもなんとなく定着しつつあるので、ここで一旦どんなルーティンなのか書き出してみる。ちなみに当方今年で40歳。 平日の1日の流れ * 06:30 妻と子供起床、朝食 * 07:10–30 俺起床、朝食 * 07:40 布団を畳んで子供を着替えさせる。妻はその間に化粧や通勤の準備 * 08:00 ストレッチと軽い筋トレ(腕立て50回、スクワット100回) * 08:10 妻と子供を見送る。15分前後瞑想 * 08:30 散歩 * 09:00 作業開始(カフェまたは家) * 11:00 昼飯 * 12:00 ダラダラする * 12:30 作業再開(だいたい家)

By Takuya Matsuyama