SnapでInkdropがインストールできるようになりました

SnapでInkdropがインストールできるようになりました

SnapでInkdropがインストールできるようになりました

Linuxでもアプリの自動アップデートが可能に!

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

こんにちは、TAKUYAです。一人で作っているInkdropというMarkdownノートアプリに関するニュースです。

WindowsやmacOS版では、アプリの新バージョンが出たら自動でアップデートする機能が付いています。しかし長い間、Linux向けのアプリ配布ではこの機能が付いていませんでした。嬉しいニュースがあります。InkdropがSnapでインストールできるようになりました。SnapはLinux向けのApp Storeです。本稿で詳しく説明させてください。

この機能を実現するためにフォーラムで協力してくれたDan、Sceptic、Parkerに感謝!

Snapについてご紹介する前に、なぜSnap経由でアプリを配布するに至ったのか、その経緯を説明させてください。

InkdropはElectron製のアプリで、Squirrelを統合することにより自動更新機能を実現していますが、それが動作するのはWindowsとmacOSのみでした。そのため、Linuxユーザは新バージョンが出るたびに手動でダウンロードしなければならず、その体験はひどいものでした。

ただ、Linux向けにはすでに.debと.rpmパッケージを提供していました。なので例えばLaunchpadのようなパッケージホスティングサービスに簡単に公開できるものと僕は思い込んでいました — 残念ながらそれは違いました。去年、実際にそれをやろうとしましたが上手く出来ませんでした。その理由は、Electron製のアプリが非常に多くのモジュールに依存しているからです。例えば、アプリにはNodeJSが直接バンドルされています。この事が理由でLaunchpadにアップロードした時に沢山の警告とエラーが出力されてしまいました。その上、出来上がったパッケージのサイズは126MBにも及び、リポジトリのサイズ上限にすぐに達しそうでした。どうやらElectronはこういったホスティングサービス上での配布があまり想定されていないようです。だからといって手間を掛けて自分でホストしたくありません。

同じくElectron製アプリのAtomエディタがWebUpd8チームによってLaunchpadに公開されているのを見つけました。彼らは一体どうやったのでしょう?! パッケージの中身を調べて驚きました。アプリそのものがパッケージに入っていなかったのです。その代わり、atom-linux64.tar.xzというファイルが同梱されていました:

<span id="c397" class="qx pz io rh b gz rm rn m ro rp">$ lesspipe atom_1.26.1-1~webupd8~0_amd64.deb<br></br>atom_1.26.1-1~webupd8~0_amd64.deb: [36/6658]<br></br> new debian package, version 2.0.<br></br> size 86712130 bytes: control archive=1390 bytes.<br></br> 843 bytes, 19 lines control <br></br> 710 bytes, 10 lines md5sums <br></br> 569 bytes, 33 lines * postinst #!/bin/sh<br></br> 124 bytes, 14 lines * postrm #!/bin/bash<br></br> 49 bytes, 10 lines * preinst #!/bin/sh<br></br> Package: atom<br></br> Version: 1.26.1-1~webupd8~0<br></br> Architecture: amd64<br></br> Maintainer: Alin Andrei <<a class="ag hb" href="mailto:webupd8@gmail.com" rel="noopener ugc nofollow" target="_blank">webupd8@gmail.com</a>><br></br> Installed-Size: 84707<br></br> Depends: git, gconf2, gconf-service, libgtk2.0-0, libudev0 | libudev1, libgcrypt11 | libgcrypt20, libnotify4, libxtst6, libnss3, python, gvfs-bin, xdg-utils, libdbus-1-3, libcap2, libxkbfile1,<br></br> libx11-6, libasound2, libsecret-1-0, gir1.2-secret-1<br></br> Recommends: lsb-release<br></br> Suggests: libgnome-keyring0, gir1.2-gnomekeyring-1.0<br></br> Section: devel<br></br> Priority: optional<br></br> Homepage: <a class="ag hb" href="http://www.atom.io" rel="noopener ugc nofollow" target="_blank">http://www.atom.io</a><br></br> Description: Atom text editor from GitHub<br></br> Atom is a hackable text editor for the 21st century, developed by GitHub.<br></br> .<br></br> Atom is open source and built on top of atom-shell.<br></br> .<br></br> Atom is designed to be customizable, but also usable without needing to edit a config file.<br></br> . [10/6658]<br></br> Atom is modern, approachable, and hackable to the core.</span><span id="7fe4" class="qx pz io rh b gz rq rn m ro rp">*** Contents:<br></br>drwxr-xr-x root/root 0 2018-04-27 21:52 ./<br></br>drwxr-xr-x root/root 0 2018-04-27 21:52 ./opt/<br></br>drwxr-xr-x root/root 0 2018-04-27 21:52 ./opt/atom/<br></br>-rwxr-xr-x root/root 86630492 2018-04-27 21:52 ./opt/atom/atom-linux64.tar.xz<br></br>drwxr-xr-x root/root 0 2018-04-27 21:52 ./usr/<br></br>drwxr-xr-x root/root 0 2018-04-27 21:52 ./usr/share/<br></br>drwxr-xr-x root/root 0 2018-04-27 21:52 ./usr/share/icons/<br></br>drwxr-xr-x root/root 0 2018-04-27 21:52 ./usr/share/icons/hicolor/<br></br>drwxr-xr-x root/root 0 2018-04-27 21:52 ./usr/share/icons/hicolor/16x16/<br></br>drwxr-xr-x root/root 0 2018-04-27 21:52 ./usr/share/icons/hicolor/16x16/apps/<br></br>-rw-r--r-- root/root 1095 2018-04-27 21:52 ./usr/share/icons/hicolor/16x16/apps/atom.png<br></br>drwxr-xr-x root/root 0 2018-04-27 21:52 ./usr/share/icons/hicolor/48x48/<br></br>drwxr-xr-x root/root 0 2018-04-27 21:52 ./usr/share/icons/hicolor/48x48/apps/<br></br>-rw-r--r-- root/root 4713 2018-04-27 21:52 ./usr/share/icons/hicolor/48x48/apps/atom.png<br></br>drwxr-xr-x root/root 0 2018-04-27 21:52 ./usr/share/icons/hicolor/256x256/<br></br>drwxr-xr-x root/root 0 2018-04-27 21:52 ./usr/share/icons/hicolor/256x256/apps/<br></br>-rw-r--r-- root/root 42856 2018-04-27 21:52 ./usr/share/icons/hicolor/256x256/apps/atom.png<br></br>drwxr-xr-x root/root 0 2018-04-27 21:52 ./usr/share/icons/hicolor/32x32/<br></br>drwxr-xr-x root/root 0 2018-04-27 21:52 ./usr/share/icons/hicolor/32x32/apps/<br></br>-rw-r--r-- root/root 2778 2018-04-27 21:52 ./usr/share/icons/hicolor/32x32/apps/atom.png<br></br>drwxr-xr-x root/root 0 2018-04-27 21:52 ./usr/share/icons/hicolor/128x128/<br></br>drwxr-xr-x root/root 0 2018-04-27 21:52 ./usr/share/icons/hicolor/128x128/apps/<br></br>-rw-r--r-- root/root 16496 2018-04-27 21:52 ./usr/share/icons/hicolor/128x128/apps/atom.png<br></br>drwxr-xr-x root/root 0 2018-04-27 21:52 ./usr/share/doc/<br></br>drwxr-xr-x root/root 0 2018-04-27 21:52 ./usr/share/doc/atom/<br></br>-rw-r--r-- root/root 1423 2016-05-11 21:01 ./usr/share/doc/atom/copyright<br></br>-rw-r--r-- root/root 4394 2018-04-27 21:38 ./usr/share/doc/atom/changelog.Debian.gz<br></br>drwxr-xr-x root/root 0 2018-04-27 21:52 ./usr/share/applications/<br></br>-rw-r--r-- root/root 246 2018-04-27 21:52 ./usr/share/applications/atom.desktop<br></br>drwxr-xr-x root/root 0 2018-04-27 21:52 ./usr/bin/<br></br>-rwxr-xr-x root/root 3416 2018-04-27 21:52 ./usr/bin/atom</span>

たぶんインストール処理中にtar.xzを展開しているのでしょう。それはちょっと複雑過ぎます。という訳で、PPAでdebパッケージを公開するのは難しいと判断して、Snapを試してみることにしました。

Snapとは:

Snaps are containerised software packages that are simple to create and install. They auto-update and are safe to run. And because they bundle their dependencies, they work on all major Linux systems without modification.

和訳すると: Snapはコンテナ化したソフトウェアパッケージのことで、シンプルな手順で作成・インストールできます。自動アップデートに対応していて、安全に実行できます。すべての依存モジュールを同梱しているので、すべてのメジャーなLinuxディストロで動作します。

素晴らしいですね。その上、Snapは既存の.debパッケージから生成出来ます。その手順について、Electronチームによる公式のドキュメントもあります:

そしてこちらがInkdropのsnapcraftリポジトリです:

Snapcraftは自動で.debパッケージをサーバからダウンロードして、ビルドしてくれます。さらに継続ビルドサービスも無料で提供しているので、自分のマシンで必ずしもビルドする必要がありません。便利ですね。こちらが、Snapコンテナ内で動作するInkdropです:

Yay! 遠回りしましたが、やっとこさ自動更新機能がLinuxでも提供することが出来ました。ちなみにsnapdは1日に4回更新のチェックをしてくれます。

Inkdropのクイックスタートガイド(英語)をアップデートしておきました。

snapd をまだインストールしていない場合は、こちらから事前に行ってください。以下のようにしてアプリをインストールできます:

<span id="b5d5" class="qx pz io rh b gz rm rn m ro rp">sudo snap install inkdrop</span><span id="1895" class="qx pz io rh b gz rq rn m ro rp"># Allow the app to access to your keyring<br></br>sudo snap connect inkdrop:password-manager-service</span>

手動でアップデートする場合は、以下のコマンドを実行します:

<span id="fc0b" class="qx pz io rh b gz rm rn m ro rp">sudo snap refresh inkdrop</span>

でも基本的には必要ありません。snapd が1日に4回更新を自動でチェックしてくれるからです。

注意点ですが、Snapでインストールした場合、ipmコマンドはinkdrop.ipm となります。ipmを使ってプラグインをインストールするにはこちらのドキュメントをご参照ください。

もし何か問題があればお気軽にフォーラムまでご連絡ください。それでは、自動更新機能をお楽しみください!

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