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

Share
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

個人開発で日本から海外へ、10年間の歴史 — ひろしさんとの対談(前編)

個人開発で日本から海外へ、10年間の歴史 — ひろしさんとの対談(前編)

数週間前、ひろしさんのポッドキャストにゲストで出演しました。お互いの長い個人開発の経験について語り合いました。英語版を作成する過程で、日本語でも綺麗に整形した書き起こしが出来たので、こちらに掲載します。お楽しみください。 ※ギアアイコンをクリックして、音声と字幕を日本語に変更できます。 00:00 イントロ:TAKUYAさんようこそ 01:32 TAKUYAさんの自己紹介:WalknoteからInkdropまで 04:54 独立への踏み切り方:慎重派と勢い派 06:51 個人開発がフリーランス案件につながった 09:17 Inkdropで食えるようになるまで 12:15 なぜ最初から海外市場を狙ったのか 14:54 AI登場前、英語コピーに苦戦した話 16:18 AIバイブコーディング時代をどう見ているか 17:24 全てのコードを一行ずつレビューする使い方 21:06 AIは新幹線:速さの先にあるもの 25:53 AI時代に「感性」が大事になる 27:

By Takuya Matsuyama
「一汁一菜」にAI時代の生き方が詰まっている

「一汁一菜」にAI時代の生き方が詰まっている

どうも個人アプリ作家のTAKUYAです。 今回は、AI時代を開発者・クリエイター・表現者としてどう健やかに生きるか、について考えていることをシェアしたいと思います。ここでの「健やかに生きる」とは、心身の健康を保ちながら、ものづくりを楽しみ続けるという意味です。 読者の中にも、最近のAIの急速な進化の中でどう生き残り、さらに活躍していくかを悩んでいる方は多いのではないでしょうか。正直、すべてに対する正解はわかりません。未来を正確に予測できる人はいないからです。 でも自分は、ソフトウェア寄りのアーティストとして生きる上で大事なのは、「戦略」や「堀(moat)」を築くことよりも、「生きる方向性」 だと思っています。 人生とは速度ではなく方向である – ゲーテ 自分はどこに行きたいのか?何を見たいのか?それが大事です。戦略は状況に合わせて柔軟に変えればいいからです。 今回は、日本の文化からいくつかの生き方の原則を探ってみたいと思います。 最近、料理研究家の 土井善晴 さんの 「一汁一菜でよいという提案」 を読んで、日々のリズムを健やかに保つためのヒントがたくさん詰まっていると感じまし

By Takuya Matsuyama
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