今週のプロジェクト: Jasper
今週は、GitHubの通知を管理するためのElectronベースのツールであるJasperの作成者にインタビューしました。
こんにちは!あなたは誰ですか?
日本のソフトウェア開発者、丸山 亮です。JasperとESDocを開発しています。
Jasperとは何ですか?
Jasperは、GitHub用の柔軟で強力なイシューリーダーです。github.comとGitHub Enterpriseのイシューとプルリクエストをサポートしています。
なぜそれを作ったのですか?
人々が仕事やOSS活動でGitHubを使用していると、日々多くの通知を受け取る傾向があります。通知を購読する方法として、GitHubはメールとウェブ通知を提供しています。私はこれらの通知を数年間使用しましたが、次の問題に直面しました。
- メンションされたイシュー、コメントしたイシュー、またはウォッチしているイシューを見落としやすい。
- 後で確認するためにいくつかのイシューを頭の片隅に置いておきますが、それらを忘れてしまうことがあります。
- イシューを忘れないように、ブラウザで多くのタブを開いたままにしています。
- 自分に関連するすべてのイシューを確認するのは難しい。
- チームのすべてのアクティビティを把握するのは難しい。
これらの問題を回避するために多くの時間とエネルギーを費やしていたため、これらの問題を効率的に解決するためにGitHub用のイシューリーダーを作成することにし、Jasperの開発を開始しました。
誰がJasperを使用していますか?
Jasperは、GitHubを使用している複数の企業の開発者、デザイナー、マネージャーによって使用されています。もちろん、一部のOSS開発者も使用しています。また、GitHubの一部のスタッフも使用しています!


Jasperはどのように機能しますか?
Jasperが構成されると、次の画面が表示されます。左から右に、「ストリームリスト」、「イシューリスト」、「イシュー本文」が表示されます。
この「ストリーム」がJasperの中核機能です。たとえば、「electron/electronリポジトリの@zekeに割り当てられたイシュー」を見たい場合は、次のストリームを作成します。
repo:electron/electron assignee:zeke is:issue
ストリームを作成して数秒待つと、条件を満たすイシューが表示されます。
ストリームで何ができますか?
ストリームに使用できる条件の種類を紹介します。
ユーザーとチーム
ストリーム | イシュー |
---|---|
mentions:cat mentions:dog | ユーザー cat または dog をメンションしているイシュー |
author:cat author:dog | ユーザー cat または dog によって作成されたイシュー |
assignee:cat assignee:dog | cat または dog に割り当てられたイシュー |
commenter:cat commenter:dog | cat または dog がコメントしたイシュー |
involves:cat involves:dog | cat または bob が「関与」しているイシュー |
team:animal/white-cat team:animal/black-dog | animal/white-cat または animal/black-dog がメンションされているイシュー |
involves
は mention
、author
、assignee
、または commenter
を意味します。
リポジトリと組織
ストリーム | イシュー |
---|---|
repo:cat/jump repo:dog/run | cat/jump または dog/run のイシュー |
org:electron user:cat user:dog | electron 、cat 、または dog のイシュー |
org
は user
と同じです
属性
ストリーム | イシュー |
---|---|
repo:cat/jump milestone:v1.0.0 milestone:v1.0.1 | cat/jump の v1.0.0 または v1.0.1 にアタッチされているイシュー |
repo:cat/jump label:bug label:blocker | cat/jump の bug **および** blocker がアタッチされているイシュー |
electron OR atomshell | electron または atomshell を含むIssue |
レビュー状況
ストリーム | イシュー |
---|---|
is:pr review:required | cat/jump でレビューが必要なIssue |
is:pr review-requested:cat | cat によってレビューがリクエストされたIssue。しかし、これらはまだレビューされていません。 |
is:pr reviewed-by:cat | cat によってレビューされたIssue |
これらを見てお気づきかもしれませんが、ストリームはGitHubの検索クエリを使用できます。ストリームと検索クエリの使用方法の詳細については、以下のURLを参照してください。
- jasperapp.io/doc.html#stream
- help.github.com/articles/searching-issues
- help.github.com/articles/search-syntax
Jasperには、未読Issueの管理、未読コメントの管理、スターの付与、通知の更新、Issueのフィルタリング、キーボードショートカットなどの機能もあります。
Jasperは有料製品ですか?費用はいくらですか?
Jasperは12ドルです。ただし、無料トライアル版を30日間使用できます。
なぜJasperをElectronで構築することを選んだのですか?
私はElectronの以下の点が気に入っています。
- JavaScript/CSS/HTMLでアプリを開発できる。
- Windows、Mac、Linuxプラットフォーム向けにアプリをビルドできる。
- Electronは活発に開発されており、大規模なコミュニティがある。
これらの機能により、迅速かつシンプルなデスクトップアプリケーション開発が可能になります。素晴らしいです!何か製品のアイデアがあれば、ぜひElectronの使用を検討してみてください。
Jasperの開発中に直面した課題は何ですか?
私は「ストリーム」の概念を理解するのに苦労しました。最初はGitHubのNotifications APIの使用を検討しました。しかし、特定のユースケースをサポートしていないことに気づきました。その後、Notification APIに加えて、Issues APIとPull Requests APIの使用を検討しました。しかし、それは私が望んでいたものにはなりませんでした。その後、さまざまな方法を考えているうちに、GitHubのSearch APIをポーリングするのが最も柔軟性があることに気づきました。この時点に到達するまでに約1ヶ月の実験を要し、その後、ストリームの概念を持つJasperのプロトタイプを2日間で実装しました。
注:ポーリングは最大でも10秒に1回に制限されています。これはGitHub APIの制限としては十分に許容できるものです。
次はどうなりますか?
私は以下の機能を開発する予定です。
- フィルタリングされたストリーム:ストリームには、ストリーム内のIssueをフィルタリングするフィルタリングされたストリームがいくつかあります。これはSQLのビューのようなものです。
- 複数のアカウント:github.comとGHEの両方を使用できるようになります。
- パフォーマンスの向上:今のところ、WebViewでのIssueの読み込み速度は通常のブラウザよりも遅いです。
更新情報については、Twitterで@jasperappioをフォローしてください。