こんにちは。EXDeckのフロントエンドを開発しているすえです。最近までhakunagiを名乗っていたり過去にはLG Electronics Botを名乗っていたりと名前が忙しい人です。
最近就職に成功したため身体の方も忙しく開発の時間があんまりありませんが、少ない時間を開発に割くモチベを上げようと開発進捗をブログにすることを決めました。WPなブログを立ててくれたさぶうぇい氏に感謝。
既にバックエンド班(一人)の記事でも触れられてますが、私はEXDeckというWebで動くTwitterクライアントのフロントエンドを担当しています。
なんでそんなものを作ってるのかを説明する前に、目標としているTwitterクライアントであるTweetDeckを軽く説明します。

TweetDeckはTweetDeck社が開発し、その後会社ごとTwitter社に買収された経歴を持つ、Webで動くTwitterクライアントです。
タイムラインやリストなどを表示する「カラム」を複数並べることによる圧倒的な情報量とカラムの自動更新によるストリームを売りにしており、公式クライアント扱いのためAPIの制限も気にならないという強みがあります。
そんなTweetDeckですが、あまりにも出来が悪い新バージョンのプレビュー版が公開されたり、しかもこれが有料化するかもしれないと、最近不穏な動きを見せています。
普段からTweetDeckを使っていて、なんなら※1MarinDeckの一部分を開発して自分で使っているのでこのダウンアップグレードはキツイと思っていたところ、さぶうぇい氏からクライアントを作らないかという話をもらい、後にEXDeckという名前になるクライアントを作ることにしました。
※1:このような「なんなら」の使用方法は正しくありません。
当時(2021年の9月頃)はフレームワークの知識もなく、バックエンド班(一人)の記事を書いた人の作ったReactなフロントエンドにちまちま追記したり別のJavaScriptファイルに関数を作ってたりしました。
この初代EXDeckはある程度動くようになっていたものの、開発面とパフォーマンス面、そしてデザイン面でかなりの問題を抱えているため作り直しが計画されていました。しかし結局、ここからEXDeckの開発はしばらく先延ばしにされることになりました。
しかし今年3月の終わり頃[いつ?]、唐突にEXDeckの開発が再開され、バックエンドとフロントエンドを完全に分離することが決まりました。
開発を再開する頃には色々ありTypeScriptを常用していてSvelteやらReactやらのフレームワークもある程度使えるようになっていたので、本腰を入れてフロントエンドを制作することにしました。
二代目フロントエンドは個人的に気に入っていたSvelteを使って作ることにしました。
作成は比較的順調に進んでいましたが、ツイートを取得して表示する程度までの機能を実装したところでSvelteでの実装に限界を感じ、フレームワークの選定からやり直すことになりました。
結果としてJSX採用・仮想DOM不使用・超高速を謳っているSolid.jsを三代目フロントエンド採用することにしました。Svelteとはコンポーネントの書き方がほぼ違うため実質作り直しが確定した瞬間です。
現在はこの三代目フロントエンドの制作を進めていますが、Solid.jsの情報の少なさ・ライブラリの数・ライブラリのバグなど複数の障害・作業時間の減少とモチベーションの低下で進捗はあまり芳しくありません。
この進捗ブログを書くことで少しでも進められればいいなと思っています。
因みにフロントエンドのソースコードは公開しています。常に開発者を募集しています。
今回はここらへんで