10
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【React】LINEアプリにソックリなWEBチャットBOTを作ってみた!!【Redux Starter Kit】

Last updated at Posted at 2019-09-19

はじめに

ある日、衝動にかられて・・・
React × Redux + α で LINEアプリにソックリなWEBチャットBOTを作ってみた!!

Reactで作ったLINEモドキなので名前は RINE (笑)!

こちらのサイトから見れます!
RINE
↑自作したオリジナルアイコン

ちなみに、隠し機能も仕込んであります。
トーク画面で「バルス」と投稿すると・・・!!?

主な画面と機能概要

ホーム画面 トーク一覧画面 トーク画面
1_home.png 2_talk.png 3_talk_detail.png
  • 友達リストを実装しても役に立たないので、あえて本物とはちょっと違う感じにしてみた
  • 2種類のボットから選択できる
  • 選択すると→のトーク画面に遷移
  • テキストと写真が投稿できる
  • 投稿するとボットからテキストや写真の返信がくる
  • 上部のメニューからノートの投稿もできる
  • この他にオマケで、フィード画面とノート画面も作ったけど、ここでは省略
  • 本物のLINEにあるタイムライン画面やニュース画面などは未実装

主な利用技術/ライブラリ/API

ソースコード

ソースコードはこちらのリポジトリに置いてある。
微妙にサイズの調整とかバグとかもあるので、気が向いたらまた随時更新するかも。

実装におけるポイント

メッセージの投稿

  • トークメッセージの履歴はすべてReduxのStateに保存
  • ボットの発言には、以下のAPIを利用

写真の投稿

  • 投稿した写真はBase64にエンコードして保存。
  • ただし、Base64のような巨大なデータの保存には、LocalStorageには向かない(デスクトップだと大丈夫だが、特にモバイルだと容量の壁にあたりやすい)ため、IndexedDBに保存

メッセージ受信時にバイブレーションさせる

メッセージを読み上げる

完全な静的サイト

  • 完全な静的サイトとして実装し、Netlifyにデプロイ
  • オマケ機能として実装したフィード画面は、呼び出し先がCORSで引っかかるので、Netlify FunctionsをCORS Proxyとして利用

PWA対応

感想と教訓

全般

  • 見た目は簡単に見えるが、コードとしてはそれなりの規模になるし、作るのには予想以上に骨が折れる。
  • やはり、Redux Starter Kitは最高に扱いやすい。
  • A3RT Talk APIに比べると、Noby APIはちょっとレスポンスが遅い気がする。

コンポーネント設計ってやっぱり重要

  • Atomic Designっぽく分類してみたものの、実装中に、コンポーネントとして分けるべきかどうか迷う場面が多々あった。
  • クラス設計と同じで、一度大きなコンポーネントを作ってしまうと、分けるのが面倒で苦労する。先にちゃんとコンポーネント設計をしてから実装したほうが後々のリファクタの労力は減る。

デザイン・スタイル設計ってやっぱり重要

  • 見た目(主にスタイルシート)をいかに本物に近づけられるか試行錯誤したのが一番苦労した点かもしれない。
  • CSSフレームワークは使わず、全部自前でCSS書いた。
  • styled-componentsを利用したが、コンポーネント設計と同様、これも共通化設計をちゃんとしないと、カオスになる(なった)
  • アイコンは、react-iconsっていうのを利用したけど、本物のLINEで使われているものに近いアイコンがなかなかなかったりもした。

さいごに

自分のスマホにPWAとしてホームスクリーンを追加してみたところ・・・
わぁ!本物のLINEとそっくりだ!!

ss.png

こちらからは以上です。

10
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?