LoginSignup
49

More than 5 years have passed since last update.

kobito-oss のソースの読み方

Last updated at Posted at 2017-03-29

メインの開発者として、備忘録を残しておく。

どんなものか試したい人は、 https://mizchi.github.io/kobito-oss/ で、IndexedDBの許す5MBぐらいまでは試せる。

一応言っておくと、これは僕が退職するんでOSS化ってわけではなく、元々あった計画の前倒しです。時期が早まったのはある。

以下、どのようにコードを読むか。

念頭に置くこと

  • 2年前 の技術選定のスタック
  • Mac版Kobitoと仕様が違う。Kobitoと同期しない、Inboxという仮グループがある。
  • mizchi/arda
  • electron 以前の atom-shell 時代の互換コードが一部残ってる
  • 細々とバグ対応はしつつ、あんまり依存パッケージのメンテ出来てなかった
  • 公開にあたって、個別のタスクの綺麗さより、ビルドできるの優先した
  • とりあえず yarn で固定して yarn upgrade-interactive でバージョンを上げた
  • View周りが jade(pug)/coffee, それ以外が typescript

直したかったが、既存のものとの互換性を優先したもの

  • 今だったら mizchi/md2react より remark-react を使う
  • 当時IMEが壊れていたので、codemirror にパッチを当てまくったものを使ってるが、今だったらHEADで動く気がする
  • coffeeはやめたいが、coffee => es2015 は検証する量が多くて無理(decaffeinate は完全ではない)
  • react-jade も、あんまりメンテされてなくて、不穏
  • typescript の module を使ってる箇所と使ってない箇所がある。連結方法も古い。(tsconfig.jsonが仕様になる前に書かれたので後から書き足している)
  • コンパイラを更新して検出されるようになったものについては、any で潰した。すまん。

とりあえず動かしてみる

ベース部分(SPA部分)ビルドする。

$ git@github.com:increments/kobito-oss.git
$ cd kobito-oss
$ cp config.json.example config.json
$ script/build

electorn パッケージを介して起動

$ npm install -g electron
$ electron electron-packager/browser

このとき、ファイル監視してビルドするタスクを走らせておけば、electron をリロードすると自動で適用される。

$ cd application
$ yarn watch

ブラウザ版で確認したい場合

$ cd application
$ yarn build

これで application/public/index.html をブラウザで開くと表示されるはず。(yarn watch タスクはブラウザ版で必要なものをビルドしていない。これはすべてを browserify するのが重いから)

ビルドが終わったら、public 以下が完全なSPA。

Web版の制限

  • Qiitaにログインできない
  • 右クリックのコンテキストメニューは出ない

ここだけElectron依存になってたため。自分でアクセストークンを入手して設定すれば動く、かも。

Qiita へのログイン機能を有効化する

https://qiita.com/settings/applications からアプリケーションを登録する。注意点として、QiitaだけでなくQiita:TeamへのRead/Writeも取得すること。リダイレクト先はとりあえず https://qiica.com などを推奨。

あとは kobito-oss の config.json に clientId / clientSecret を埋め込んでからビルドする。自分自身がOAuth のホストにもなるので、 secret も必要。

バイナリの作り方

script/build
cd electron-packager

# mac
script/build-mac

# win
script/build-win

Linux ビルドの作り方

は用意してないが、既存のタスクをみて electron-packager のオプションでガチャガチャやればできるはず。

今後の開発方針

increments としては、あまり積極的にメンテ出来ない。本家とは切り離されているので、ここにコントリビュートしても適用されるわけではない。

寄ってたかって開発したい人が複数いるなら、kobito-usergroupなどのグループを取って、そこで開発してはどうか。可能な限り、質問に応えるが、4月から別の仕事なので、ベストエフォートで。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
49