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

貫禄を捨てて愛嬌で生き延びろ!40代オッサンの生存戦略

貫禄を捨てて愛嬌で生き延びろ!40代オッサンの生存戦略

どうもTAKUYAです。 つい先週(11月19日)に誕生日を迎え、41歳になりました。40代と言うのは若い頃には想像もしなかった年代で、どう生きれば良いのかというイメージがあまり具体的に湧かない、曖昧な年齢ではないでしょうか?自分の父親を想像するも、日中はいつも仕事でいなかったのであまり参考になりません。 自分は個人開発で生計を立てていて20代、30代で積み上げて来たものが上手く実を結んだおかげで今の生活があります。育児にも、いわゆるサラリーマンよりかは柔軟に参加できていて、子供との時間も沢山取れています。ママ友も出来ました(迷惑かけっぱなしですが)。 本記事では、そんなライフスタイルを送る自分が40代で大事にしたいことについて書きたいと思います。タイトルにもある通り、結論から言うとそれは「愛嬌」だと思います。以下、中年男性の愛嬌の重要性について説明します。 TL;DR * 「貫禄が出てきたね」と言われたら注意 * 笑顔を作れ。オッサンがムスッとしてたら普通に怖い * 謙虚に振る舞え。実績を積むと周りが萎縮する * ギャップ萌えを活用しろ 「貫禄が出てきたね」と言わ

By Takuya Matsuyama
過集中を避けるための働き方とルーティン(二児の父ver.)

過集中を避けるための働き方とルーティン(二児の父ver.)

どうもTAKUYAです。 先日書いた通り、最近個人開発を頑張りすぎて体を壊してしまいました。 その原因の一つが過集中癖です。自分はもともと何かに集中すると周りが見えなくなる傾向があり、それがたまに私生活にも影響を及ぼします。同じ失敗を繰り返さないためにも、ちょっと働き方を再設計したいと思います。 働き方に対して他人の指摘をアテにしない 自分のようなフリーランサーまたは自作サービスで生計を立てている人は、時間の使い方を自分で自由に決められます。その反面、どこまでも極端な働き方が出来てしまい、それを指摘したり止めてくれる人がいないという欠点もあります。自分には妻がいますが、全く違う業界なので自分の作業ペースがどのようなものか具体的に把握できません。 「疲れた!」と言えば「休んだら?」と言ってくれますが、働き方やペース配分などにまで口は出しません。なので、他人のストップサインはアテに出来ません。 (心理カウンセラーの可能性を別途検討中) 最近子供が生まれたので厳密なルーティン実行は出来ない 一日を時間単位・分単位で区切ってルーティンを組むのは気持ちがいいですよね。僕もそうしたい

By Takuya Matsuyama
なぜ体を壊してまで個人開発を頑張るのか?自尊心の欠如や過集中癖と向き合う

なぜ体を壊してまで個人開発を頑張るのか?自尊心の欠如や過集中癖と向き合う

どうもTAKUYAです。最近、個人開発を頑張りすぎて体調を崩してしまいました。アトピーが猛烈に悪化して、QoLが著しく下がってしまいました。まだ療養中ですが、毎日1万歩以上歩いて、徐々に回復しつつあります。 この過ちを繰り返さないためにも、自分は一体何が原因で頑張りすぎてしまうのか?という事について深堀りして考えてみたいと思います。また、個人開発におけるメンタルヘルスはあまり語られていないトピックだと思います。本記事が、同じように仕事を頑張りすぎてしまう人の助けになれば幸いです。 TL;DR * なんとなく続けていたソフト開発が自分を救った * 原体験が歪んだモチベーションを生んでしまった * 親が引くほどの過集中癖がある * 生得的な直せないバグと考えることにする * アプリの成功に関係なく、自分をあるがままに受け入れる * 挫折しないのは、なんだかんだで前向きだから * ユーザさんから「休め!」と叱咤された * 人生は長い。個人開発なんかで死ぬな 自己の原体験について振り返ってみる 個人開発だけで生活するようになって、かれこれ8年ぐらいが経ちます。こう

By Takuya Matsuyama
ユーザサポートの問い合わせを装った攻撃が怖すぎた

ユーザサポートの問い合わせを装った攻撃が怖すぎた

どうもTAKUYAです。個人開発をしていてアプリの知名度が上がってくると、作者個人(あるいはサイト管理人)を狙った攻撃というのをたまに受けます。つい先日も、怖すぎるメールを受け取ったのでシェアします。 件名: Cookie consent prevents platform access Hello, I cannot access use the store. The cookie consent notice keeps appearing and nothing happens once I approve or try to close it, so I’m unable to interact with the website. Please provide guidance on

By Takuya Matsuyama