LoginSignup
2
2

More than 1 year has passed since last update.

python の学習教材として streamlit で twitter検索アプリ を作ってみた

Last updated at Posted at 2022-07-27

①はじめに

pythonについて基礎学習を続けていたが、
一向にプロダクトを作成するイメージが掴めずにいたので、
一旦現状の知識で何か作成してみようと試みた。
教育サイトを使った基礎学習自体は楽だが、一方でモチベーションが下がりやすく
継続することが難しいと感じる。
現在学んでいることを使ってどういった活用が出来るのかをイメージするべく
まずは形にしてみて、今後のモチベーションアップを図りたいと思う。

②このプロダクトの説明

twitterAPIとStreamlitを組み合わせて、簡単なtweet検索アプリを作ってみた。

ローカル起動ではあるが、検索ボックスにキーワードを入れてボタンを押すことで
tweetのキーワード検索が出来る仕組みとなっている。
取得したtweetは本文だけを抽出して、pandasにてデータフレームを作成し、
表形式でブラウザに描画する。

コード
import streamlit as st
import requests
import os
import urllib
import json
import pandas as pd
from st_aggrid import AgGrid

st.markdown("# ツイート検索アプリ")
st.markdown("**APIを用いてツイッターからフリーワードでツイート検索出来ます**")

text = st.text_input("検索ワード入力欄")
boo = st.button("検索")

if boo and text != '':

    try:
        tweets = []
        b_token = os.environ.get('BEARER_TOKEN')
        headers = {'Authorization': f'Bearer {b_token}'}
        q_words = urllib.parse.quote(text)
        url = f'https://api.twitter.com/2/tweets/search/recent?query={q_words} -is:retweet'
        res = requests.get(url, headers=headers)
        j_res = res.json()

        for i in range(10):
            tweets.append(j_res['data'][i]['text'])

        df = pd.DataFrame(data={'ツイート内容': tweets})
        AgGrid(df, theme='blue')
    except:
        st.warning('検索ワードが見つかりませんでした')

elif boo and text == '':
    st.warning('検索ワードを入力してください')

コード自体は複雑ではないので、気軽に試してみて欲しいと思う。

③このプロダクトの価値

客観的に見て、残念ながら現状ではプロダクト自体に価値を持たせることは出来ていない
(時間の節約が出来る、売上に貢献できる、プロダクト自体が利益を生み出す等が無い為)
強いて言えば、教材としての価値はあるのではないかと思っている。
次項にてこのプロダクトを作成する中で学べた内容と参考リンクを紹介していく。

④このプロダクトから学べた内容

vscode プログラミングをする際にコードを記述する為に使用。
もっとも有名なエディターで汎用性も高い。

参考動画

streamlit pythonのライブラリの1つで、ブラウザ型のアプリケーションがhtml無しでも作れる。
(自分はローカルで動かしたが、githubと連携することで無料でも1つまで公開出来る)
ユーザーインターフェースを作るために使用。

参考動画

pandas pythonのライブラリの1つで、表形式のデータを簡単に作成することが出来る。
取得した情報を表形式で表現したかったので使用。

参考動画

twitterAPI twitterの情報を取得することが出来るAPI。
今回のデータソースになるので、これが無いと始まらない。

参考動画

Github バージョン管理が出来るサービス?よく分かっていないが
アプリを公開する為に、streamlitと連携することが必要だった為使用。

参考動画

仮想環境 コンピューターの領域上に切り離された作業領域を作るため使用。
ライブラリは凄く便利だが、組み合わせによっては不具合の原因になったりすることもある。
プロダクトごとに分けるのが無難だと思う。

参考ページ
https://www.python.jp/install/windows/venv.html

環境変数 コンピューター内部に辞書型で重要な情報を格納する仕組み(パスワードなど)
プログラム上に直書きするのはセキュリティ上問題があるのでこちらが推奨される。

参考ページ
https://www.javadrive.jp/command/command/index4.html

cli ディレクトリの移動、ライブラリのインストール、プログラムの起動、仮想環境の作成
環境変数の設定、バージョン管理などプロダクトを作成していく上で必須の知識。
逆に覚えていないと差し障りのあるもの。

参考ページ
https://www.modis.co.jp/candidate/insight/column_28

参考が殆どVtuberのサプーさんです。いつも参考にさせてもらっています。

⑤おわりに

簡単な1つのプロダクトを作成するにあたり、様々な異なる知識が必要になった。
基礎学習として学習サイトでコードを書くというのは言わば「点」であり、
全体像である「線」をイメージ出来ないというのは言わば当然の結果だと思う。
プロダクトを作成するという行為は、どんなプロセスが必要なのかを俯瞰して考える必要があるので
経験を積むうえで、定期的に行っていく必要があると感じた。

プログラミングに限らず、業務上でも大切な考え方なので教育担当の方は取り入れてみるのも
もしかしたら良いかもしれない。

2
2
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
2
2