つてとのブログ

【Flutter/Dart開発】twitterのような#ハッシュタグ検索をしてみたい話(理屈編)

 

こんにちは、たちつてとです。

表題通りで、アプリの方には

実装してしまっているんですが、

まあまあ長くなりそうなので、今回は理屈だけ

書いてみようと思います。

 

暇な方は、twitter本体を見ながら

読まれるといいかもしれません。

暇じゃない方は、そもそも読まれない方が

いいかもしれません。

 

実装しようと思ったきっかけ

なんか今風で面白そうそうだったから。

なお、twitterはやりません。

アカウントがあるだけ。

 

前、課長さんに、

twitterはやらんけど、参考のため見ることはある」

的なこと言われたんで、それも生きてますね。

 

タグ機能の観察

課長さんのいう通り、

まず観察するところから始めないといけません。

タグ入力の観察

twitter本体のツイート(?)作成字の表示を見ると、

#あいうえお

と入力すると、

#あいうえお

と水色になります。で、複数なら

#あいうえお #かきくけこ

など、スペースを入れればいいみたい。

暇ならやって見てください(2021/11/17時点)。

っつかいうまでもなく、ご存知の方のが多いんか。

 

で、なるほどと思う。

 

僕が一番気になったのは、

「タグ」というものを

どのような入力形式で実装してるかだったので...

そこわかったらあとは、どうとでもできます(強者の余裕)。

なお、パフォーマンス度外視。

タグ検索の観察

こちらはシンプル。

入力欄があって、完全一致したタグの

ツイート(?というんですかね)を検索。

違ってたらすいません。

予測変換で、完全一致の煩わしさをなくているものの

僕にはいらなかった機能。

 

僕がやって見たこと

というのも、テキスト入力して検索する機能は

すでにあるので、その方法で実装するのはつまらんです。

 

ヘッダーに、横スクロールできるバー?みたいなのを

作りたいなと思いまして。

f:id:tachitutetoNosuke:20211117201231p:plain

もちろんこちらも完成してます。

実装してから気づいたんですが

youtubeのトップにまんまの機能がありました。

 

 

僕が取った作戦

まとめ?になります。

メモ記録アプリで実装しました。

  • メモクラスに「タグ」プロパティ※

→何個も登録できるように、空白で分ける

というルールで登録。

例)

「しりとり」というメモのタグ

#りんご #ごりら #らっぱ

 

  1. 「タグ」ボタンをタップすると、
  2. 全データのタグを見に行く
  3. タグは(上述の通り)空白で分けられているので、splitで分解
  4. 完全一致(りんごタグをタップしたなら、具体例のしりとりメモは引っかかる等)で表示

 

補足
  • 最初の「タグ」プロパティについて

これはtwitterの例では、不要のようにも思えました。

理由は、メモには「タイトル」・「内容」という

プロパティがありまして(これは自然なはず...)、

「内容」の中に

「#」(ハッシュタグ)を見つけること

できれば良いからです。

 

詳細は知りませんが、

タグを作るときには、twitterではツイートの中に

#を埋め込んで...というのは最初に述べた通りです。

 

また、この

「「#」(ハッシュタグ)を見つけること」も

正規表現をうまく利用すれば、できそうな気がします。

 

じゃあなんでやらんかったんや

(アプリ側の処理が)めんどくさいからです。

僕がめんどくさかったわけではないです。

 

僕は、全データに対して検索かけるつもりだったので、

一つ一つのデータに、正規表現でチェックするのは

(アプリ側が)大変かと思ってやめました。

 

なお、実際のところは知りません。

 

やろうと思えば、「内容」の中に#を入れた時点で

青色の文字に変える、

とかも正規表現でできそうでしたが、

こちらは

明確にめんどくさいし、そんなんいらんわと思って

やりませんでした。

 

以上です。お疲れ様でした。

次回は実装したものについて、かければと思います。

 


基礎から学ぶ Flutter

 


Flutter モバイルアプリ開発バイブル