普段利用しているSlackクローンのRocket.Chatについて, 結構前から動作に影響の大きな不具合が出ていたので頑張ってIssue報告してみた. これ自体は意図は伝わったのか,他にも同様の不具合を報告してくれる人が何人も現れ, これで対処してもらえると思いきや,報告から2ヶ月たっても修正されそうな雰囲気なし.
このままでは非常に使い勝手が悪いので, 自分で修正してみることを視野に検討してみた. とはいえ,フロントエンドはまったくわからないので どこから手を付ければいいのか悩ましいところ. いろいろと調べていたら, Rocket.Chatを実装する meteorフレームワークには 複数のチュートリアルがあることが判明. RocketChatのソースコードを読んでもわからないことばかりだし, かといってJavaScriptから勉強していたのでは時間が掛かり過ぎるので フレームワークの動作からおさえることに.
チュートリアル内容
3種類のチュートリアルのうち,最も基本的なReactなTODOアプリを実装してみた. meteorフレームワーク自体はなんとなく理解できたが, 途中まったく動作せずいろいろと確認してみた結果, チュートリアル内容に誤りがあることが判明. また,同様の不具合としてテストを追加実装しても実行されない様子.
Rocket.Chat実装調査
meteorフレームワークの動作がなんとなく理解できたので それではRocket.Chatの実装も調べてみようと思いきや 当然実際のアプリはより複雑で理解できず.
特にチュートリアルにはなかったディレクトリやインスタンス?が多数登場し どのような仕組みでロードされているのかわからないという, チュートリアルを試した成果がまったくない状況に. 諦めようか悩んでいたところ,やっとファイルを読込む順序や各種ディレクトリの意図を説明する ドキュメントを発見. これを読むことでやっとRocket.Chatの動作がなんとなくわかるようになった.
Issueへの対応
それじゃあ不具合修正も簡単に対処できるかというと,そちらは全く進捗なし. 不具合の原因がmeteorのルーティングまわりを制御する FlowRouterまわりにあることは理解できたが, FlowRouterがおかしいのか,Rocket.ChatにおけるFlowRouterの制御がおかしいのかは切り分けできず.
いろいろと調査しているうちに,時間切れになったので3連休中の調査は一旦終了. ECMAScript2015やnpmまわりの理解も追い付いていないのでまだまだ時間は掛かりそう. このペースで調査を進めて不具合修正できるのが先か,他の人が修正してくれるのが先か.