読者です 読者をやめる 読者になる 読者になる

Folioscope

プログラミング/Unix系/デザイン/CG などのメモがもりもり

Electron + Git でエンジニア向けのノートアプリ作ってます [WIP]

f:id:ibenza:20160123184048g:plain

ElectronとGitを使って、エンジニア向けのノートアプリを作ってます。

github.com

ノートアプリはたくさんあるけど、自分に合うノートアプリを作りました。 主な機能は以下のとおりです。

  • Gitベースでバージョン管理
  • Markdownで書ける
  • 好きなエディタを使える

Gitのパワフルなバージョン管理機能を使うことで、複数ユーザの編集や誰がどこを編集したか、履歴の管理と差分も簡単に見れるんじゃないかと考えてます。 またGitHubやBitbucketをバックエンドに使うこともできるので、自前でサーバを立てる必要もありません。 そして外部エディタでMarkdownを使うことで、自分の慣れた環境でノートを編集できます。

作り始めたきっかけ

非常に便利な時代になったので、クラウドで同期するノートアプリは探せばいくらでもあります。 でもそれだと満足しないんですね。 僕はLinuxユーザでかつオープンソースが好きで、プロトコルもオープンがいいです。 なのでGitベース・Markdown・好きなエディタで書けるノートアプリを作り始めました。

GUIフレームワークにElectron使ってます。 GUIベースのツールキットは数多くありますが、Electron使った理由は、簡単にクロスプラットフォーム化できて、Node.jsのたくさんの資源も使えます。 またMicrosoftを始めとする様々な企業でも採用されているので、フレームワークとしての息も長そうです。

開発を始めて

Node.jsもElectronも初めてなので、Visual Studio CodeAtomShibaを参考にしながら、手探り状態で開発を始めました。 幸いWebにもElectronの情報がたくさん載ってたので、シンプルなアプリはすぐに作れそうでした。 ただ開発が軌道に乗ると、次は設計の壁にぶち当たりました。 どうやら自分は、GUIアプリである程度開発が進むと、設計が破綻してコード全体の見通しが悪くなるようです。 とくにElectronだと、RendererプロセスとBrowserプロセスを考えないの行けないので、「この機能はどっちに実装しよう」と考える必要があります。 そこそこ開発が進むと、全てを取り壊してまた一から設計したくなります。 どうすれば破綻しない設計ができるのでしょうか?

TODO

まだまだ開発段階なので、実装は全然進んでないです。 改善点として

  • Gitのコンフリクト時のふるまい
  • 検索機能
  • キレイなUI
  • ノートのタグ付け

などです。 ひとまずGitのコンフリクト時の振る舞いと、UIの整理と、設計をまともにできれば、リリースかなと思っています。