この記事はアドベントカレンダー2023の9日目の記事です。
こんにちは、21B SysAd班のmehm8128です。
今回は最近traQの改善で一石二鳥した話をしていきます。といっても当初予定していた記事が間に合わなさそうだったので書いてます。
僕はtraQチームでフロントエンドの改善をしていて、最近は普段traQを使っている中で特に直したくなったUX周りの改善を中心に行っているのですが、今回は元々以下のPRに取り組んでいました。
内容は書いてある通りなので省略しますが、モーダル周りの改善で、PCだとmousedown
、mouseup
を使うところがiOSだとtouchstart
、touchend
を使っている実装だったのが今回の一石二鳥ポイントです。traQのモーダル周りはかなり微妙な感じだと感じているので、いつか直したいですね...。
僕はfeedbackの対応(traQのfeedbackチャンネルにきたバグ報告や機能追加要望への対応)をしていることもあり、約180あるissueのほとんどは把握している(つもりな)のですが、今回上のPRを出すときにisIOSという関数の実装を見て、↓のissueを思い出しました(実装リンク先はissueのバグの修正後のコードなので、19行目が書かれていない状態でした)。
isIOS
の実装を見て、もしかしてこのissueはこのあたりが原因なのではと思い、ちょっと調べてみたらそれらしき記事に出会いました。
iPadではUserAgentにiPad
の文字列が含まれることを想定されたコードだったのですが、あるバージョンからはそうではなくて、iPad
だった部分がMacintosh
になってしまっていたのが原因でした。そのため、isIOS
がfalse
になってしまっていました。
僕はiPadを持っていないので、前にこのバグを報告してくれていた部員にUserAgentの確認をお願いしました。
そうすると結果は以下のようになっていて、記事の通りということが分かりました(複数人報告してくれていたので、依頼した人とは別の人の画像です)。
あとは直すだけなので、↓の記事などを参考にして、macOSで現状の動作を維持しながらiPadでは直るようにいい感じに直しました。
具体的には、(ua.includes('macintosh') && 'ontouchend' in document)
とすることで実現しました。
直したものが以下のPRです。
というわけで、元々はモーダルのmousedown
関連のPRに着手していたのですが、途中で別のissueに関連していそうなことに気づき、一石二鳥という形になりました。
traQ clientチームは今たくさんissueがあるのですが、アクティブな人が少なくて困っています。特にデザインも考えたい人とかいると助かります。部員のみなさんは是非参加してください!
明日はだんさんとT4tsu3iくんです、お楽しみにー