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

ノート駆動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