nicohacoを作った
5/29 エンジニアLT
repo: https://github.com/abouthiroppy/slides
😋 me 😙
近況報告
maintainersに参加しました🙃
The GitHub maintainer community is a place for open source maintainers on GitHub to collaborate with each other, and with people who work at GitHub.
GitHubで働く人たちと協力して
GitHubを良くしていくことが主な目的となっています。
主に、問題点の提示、解決や
プレリリースの機能のフィードバックを行ったりします。
opensource.guide
http://abouthiroppy.hatenablog.jp/entry/2017/05/15/215836
nicohaco
nicohacoとは?
2017/05/15ぐらいから開発し始めた個人プロダクト
NicoBoxというニコ動の音楽アプリのPC版(Electron製)
まだαの段階です
icon
デザイナのmiiiさんに書いてもらいました 😄
ありがとうございます🌝
機能
- マイリスト作成
- マイリストへビデオを追加・削除
- 検索
- ランキング
ライブラリ
electron
- electron-builder
- パッケージングするときに楽
- electron-devtools-installer
- 様々なdevtoolsを楽に入れることができる
- 今回は、
ReduxDevtools
とReactDeveloperTools
を使用
- electron-gh-releases
- AutoUpdaterのラッパ
- GitHubのリリースページに上げたのを確認してくれる
webpack
Main Process(target: electron-main)
主に使う目的としては、NODE_ENV
でコードの分岐があるため
プロダクション用にコードを吐く必要があったため使用。
今現在、ESMでは書かれておらずCommonJS modulesで書かれている
Renderer Process(target: electron-renderer)
ReactのためにBabelを使用
またstring paddng
は入っていないためbabel-polyfill
を使用
今回はES5へ落とす必要性がないため、UglifyJSではなくBabiliを使用しminify
babel
presetsはreact
とstage-1
を使用
また、HMRとflowtypeを使うのでそれに関連するプラグインのみを使用
css
postcssを使用し、css-nextを基準に構築
mixinsはないので、postcss-mixins
を使用
IndexedDB
IndexedDBを使うことにした。
今回はlocalForageではなく、Dexie.jsを使った。
大変使いやすく、良かった(toArray()
の意味は個人的に分かりづらかった)
ui
photon.jsを使った。
クラスを当てるとOSXのデザインになるライブラリ。
注意点として、npmでinstallするとdist内にcssがないので
GitHubから直接urlで引いたほうがいい。
アーキテクチャ
Reduxを使用
Middlewareはredux-saga
ルーティングはreact-router@4.0.0-beta.6, react-router-redux@next
Atomic Design
Atomic Designを採用
どこからでもconnectできる状態であるので、Reduxと相性がいいかは不明
ただ、単位レベルで分けれるのでわかりやすい。
が、やはりチーム開発で採用するのは大変そう
(抽象的なので個人的な主観が入る可能性が高い)
あと、見方によってこれはどこだろうって悩む時間が勿体無い気もした
niconicoのAPIについて
難しかった。
キーのケースがcamelやsnakeだったり、
キーの意味が同じでもapi間でキー名が違ったりしていた。
特に、mylistからデータを消すAPIのキー名がid_list[0][]
だったのはすごかった
コードを見たほうが早いと思うので興味ある方は
リポジトリの方を見てください🤓
今後の課題
meta
- テストの追加
- コードのリファクタリング、コーナーケース、バグ潰し
feature
- cssがまだ終わってないので終わらせる
- マイリスト内の並び替え・シャッフル再生・ループ再生
- nicohistoryの自動ポーリング
- 検索機能の強化
- media-queryを使ってcolumnのレイアウト修正
The end
PRやIssueお待ちしております😎