Tooterminal v2.0.0 リリースとか、ここ最近やったことについて

(初めに)今までにあったことを読みやすさ度外視で書きなぐっているので、読むのに飽きたら諦めてページを閉じるのが精神的に負担がなくておすすめです。


本日12時頃、久しぶりにTooterminalをアップデートし、メジャーバージョンを上げたv2.0.0にしました。🎉

おそらくTooterminalを愛用してくれているひとは、久しくアップデートがなかったのでもう更新はないだろうと思っていたかもしれません。そんな事ありませんよ!

僕だって普段からTooterminalを使っているので、アップデートしたいと日頃思っています。
ただ、開発に対するモチベーションが上がらなかったのが主な原因です。ぶっちゃけ。

Tooterminalのv2.0.0構想については、今年の4月頃からありました。それがここまでリリースに時間がかかってしまったのは、単純に自分の技術力不足が原因です。

Tooterminalv1系は、去年のマストドンブームに乗っかってノリと勢いだけで作ったものだったので、コードが汚くて可読性や保守性を完全に無視した書き方をしていました。

大雑把な枠組みを作るだけならトリップ状態で楽しくできるものですが、しばらく使ってて不具合が見つかってくるとそうは行きません。数行の修正をするだけですが、どこに何のコードを書いたかわからなくなるような書き方をしているおかげで、対象の行を探すのに費やすコストが次第に鬱陶しくなってきていました。

とはいえ新しいAPIもマストドン本体に追加されてきて、既存のまま放置というのも次第に使いづらくなってきました。僕はようやく重い腰を上げることにしました。(3末あたり)

当初の計画ではv1系のコードをリファクタリングするのではなく、新しい思想の元「似たような何か」をゼロベースで作るものでした。

マルチカラム対応、LinuxやMacOSXからのブラウザ対応、Webpackを用いた開発環境の整備、保守性を高くするためのクラス設計やSASSを用いた細かなファイル管理、より本物のIOSに近づけるための機能追加。

ゆっくりながらも確実に新しいクライアントは形になってきました。順調に行けばv1リリースからちょうど1年の8/20にリリースをする予定でした。
(そういえば今日はちょうど1年と1ヶ月目ですか)

問題となったのは、jQuery Terminal Emulator Plugin(以下jQTEP)とTooterminalの相性の悪さでした。jQTEPはフォーカスイベントになにか手を加えているらしく、ストリーミングを流した状態で画面をクリックするとスクロール位置が変化してしまいます。

v1系はjQTEPをフォークして、Tooterminal仕様にして書いていましたが、v2に上げた暁には綺麗なままのjQTEPを使おうと心がけました。

しかしやはりそのままのものではフォーカスを当てる度にスライドしてしまう不具合は改善できませんでした。コレが新しいTooterminal2をリリースすることができなかった主な原因です。
その他にもいくつかの不具合があり、一旦白紙。

4ヶ月ほど地道に書いてきましたが、まぁ無駄になったことはないです。本格的にnpmパッケージを触ったことやよりキレイなコードを書くためのノウハウは間違いなく積み上がりました。

おかげで、改めてv1の開発環境を見た時、今までよくこんな環境で作っていたものだと、欠点を見つけることができました。

その後、gulpを導入してタスクの自動化をし、必要なパッケージはnode_modulesから引っ張ってくるようにし、今まで自力でminifyしていたものもbabelで一括でできるようにしました。

その結果検証に費やす時間が劇的に改善され、今まで嫌厭していた些細なコード修正ができるようになり、本日のv2.0.0リリースとつなげることができました。

8月まで書いていた旧v2の機能も今回のアップデートで載せようと思いましたが、その前に不具合修正をしただけのTooterminalを僕自身が使いたかったので、一旦はここでv2.0.0のタグを切らせてもらいました。

またしばらくしないうちに、絵文字ピッカーと投稿プレビュー機能は公開できると思います。それまではあまり期待しすぎない程度に待っていていただければ幸いです。