先日こんな投稿が #Slack からありました。
なにか作ろうかなと思っていたのですが、これを期に前々から考えていたTwitterクローンを作ることに決めました。
インストールはこちら:https://slaim.lne.st/slack/install
アプリ名はSlaIMです。Slack専用のインスタントメッセージサービスということで、SlaIMと名付けました。
技術
私のQiita記事に何度も出てきていますが、Slackアプリ自体はSlack Bolt for Pythonを基盤にしています。
テンプレはこちらの記事においてあるのでHerokuにデプロイする形ですぐにSlackアプリ開発ができるようになっています。
画面構成
機能面
Twitter同様にpostしたものがタイムラインに流れる機能になってます。
ユーザーのフォローが出来て、フォローしている人のみのタイムラインを見る or 全ての投稿を見るかを選べます。
リプのみ、自分がFavしたもののみを見ることができるとか
文字列検索で投稿やユーザーを検索することが出来ます。

投稿されたpostは返信/シェア(いわゆるRT)/コメント付きシェアが出来ます。

ハッシュタグを入れると、このような形でメッセージ詳細画面からハッシュタグ関連postを取得することが出来ます。

みたいな形で、ざっくりとTwitterの機能面をクローンしてみました。
工夫した点
投稿は、SlaIMアプリのDM欄からメッセージ投稿することで行います。

画像投稿もできるようになっています。
Slackアプリからは画像等のファイルアップロードは出来ない
入力フォームに画像アップロード用の機能を実装することは出来ません。
ファイルURLを記入してそこからファイルを取得しにいってアップするというのは可能ですが、ユーザビリティ的には無理筋でしょう。
そのため、今回はDMに添付された画像をDLし、Pythonのboto3を使ってAWS S3にアップするようなフローにしました。
アップロード時に取得したURLを、Block Kitのimageブロックを使って表示しています。
通知系が実は重要な気がする
メンション時にはDM通知が入るようにしてあるのですが、例えばフォロー時とかRTといったタイミングでも通知を入れたほうがそれっぽくなるような気がします。これについては今後の実装ということで。
実際に作ってみると、Twitterも色々な工夫がされているなと感じます。
今後もアプデしていきますので、よろしければインストールして使ってみてください。
インストールはこちら:https://slaim.lne.st/slack/install
最後の砦
ハッカソンには動画エントリーが必要なんだけど、これを作るのが大変ですよね・・・
既存の課題
・アプリを再インストールすると、SlaIMユーザーとの紐付けが解除されてしまい、既存ユーザーと紐付ける仕組みがない
・リプライ画面から画像を追加することが出来ないのをどうしようかは今の所解がない
・フォロー/フォロワー画面が無い


