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

Share
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

ハッカーと写真家

ハッカーと写真家

どうも、Takuyaです。 エージェント型コーディングは、今やすっかり欠かせないワークフローになりました。 自分のような個人開発者にとっても、ソフトウェア開発の景色と考え方を一変させました。 同時に、この劇的な経済的変化に不安を感じている人も多いと思います。 ほとんどの人にとって、これはプログラマーとして経験してきた中で最大のパラダイムシフトです。 自分もなかなか受け入れられず、悲嘆の五段階の取引(Bargaining)と抑うつ(Depression)の段階を抜けるまでに結構時間がかかりました。 でも Opus 5.5 を見てから、AI は自分でほぼコードを書くのをやめてもいいくらい賢くなったと感じました。今は主に、生成されたコードを Neovim でレビューしています。 AI はこれからも進化し続けるし、自分がコードに触れる機会は着実に減っていくでしょう。 その中で、今後自分たちが何を学ぶべきか、プログラミングに対するメンタルモデルをどう変えていくべきかについて議論したいと思います。それと、この特別な瞬間の自分の考えや気持ちを書き残しておきたいと思ったので、本稿は自分のための「

By Takuya Matsuyama
信念を貫け!1年半の開発と3ヶ月の燃え尽きから学んだAIコーディングの教訓

信念を貫け!1年半の開発と3ヶ月の燃え尽きから学んだAIコーディングの教訓

お断り: 元の記事は英語で書き、壊れた文法はAIで直しました TL;DR * アプリの新バージョン開発に費やした1年半(3ヶ月の燃え尽き期間を含む)で学んだこと * AIは常に人生の二の次であるべき。過去には二度と戻れない * 5年後に振り返ったとき、Fableがどうだったとか完全にどうでもいい * シングルタスクをキープしろ。エージェントの数は関係ない * 頭の中のコンテキストスイッチが次のボトルネック * 理解があるからこそ、次のアイデアが生まれる * 自分を本当に幸せにするものを知れ – 僕は自分が欲しいものを作る * SaaSを10年以上運営するのは、同じ作品を何年も描き続ける漫画家のようだ * 自分の信念を築けるのは、自分だけ Inkdrop v6の開発に1年半費やした どうもTAKUYAです。英語圏でかれこれ10年個人開発をしています。先日投稿した通り、予てから作っていた新バージョンのMarkdownノートアプリをやっとリリースしました。繰り返しになるので、リンクだけ貼っておきます: Inkdrop is an AI-native Markd

By Takuya Matsuyama
Inkdrop v6リリースしました

Inkdrop v6リリースしました

どうもTAKUYAです。日本語でもお知らせします。 Inkdrop v6を正式リリースしました!1.5年がかりの大改修となり、大変お待たせしました。本バージョンでは、新しいMarkdownエディタや、最近のエージェント型コーディングワークフローに最適化された新しいAI連携機能など、根本から作り直した改善が盛りだくさんです。それでいて、気が散らないシンプルでクリーンなUXはそのまま維持しています。 まずはじめに、既存のユーザの皆様に大きな感謝を述べたいと思います。開発期間中に辛抱強く待って下さった事、そしてCanaryテストで多くのフィードバックをくれたことに心から感謝します。皆さんのサポートなしには実現できませんでした。 ウェブサイトもv6に合わせて完全に作り直しました。アプリのUIをそのまま使ってライブデモを構築したので、アプリをDLせずとも新しいエディタを試せるようにしました。ぜひ触ってみてください: Inkdrop is an AI-native Markdown note app for developers — smooth context flow between

By Takuya Matsuyama
個人開発と生活

個人開発と生活

朝、娘をバス停まで送り出す。前にちらっとみかけた田村淳の相槌術が面白そうだったので、ママ友との雑談で早速実践してみたら効果てきめんだった。その方法は単純に、職業病で癖になっている批判的思考を完全オフにし、相槌に全神経を注ぐ、というものだ。「へぇ」「うん」「うーん」「なるほど〜」と、相手の話にどんなバリエーションで返そうかという所に集中する。騙されたと思って試してみて欲しいんだが、このお陰で相手の話がよく理解できて、自然なフォローアップの質問やリアクションが浮かぶようになる。こちらから頑張って面白い話をひねり出す必要が無いので、気が楽になった。話の結論も何もいらなくて、「そうなんですね」「いいですね」「ほんじゃお疲れ様です〜」みたいな感じで締めくくる。反応に困ったらとりあえず「いいですね」まじで便利!男相手の会話でも有効。インタビューにも応用が利きそうだ。 天気が悪くてだるいので、やる気が出るまで部屋でレシートの撮影などの単純作業をして過ごした。レシートを撮ったら事務代行さんに投げる。そのうちAIに代替させたい。レシートは基本カフェばっかりである。 ユーザフォーラムをチェックしたら、

By Takuya Matsuyama