Python・AIテック

StreamlitでSalesforceと連携するアプリを試してみる

スポンサーリンク

1. はじめに

企業で使用されるCRM(顧客関係管理)システムの中でも、Salesforceは非常に人気があります。一方で、データ分析や可視化のために、PythonのフレームワークであるStreamlitも多くのユーザーに利用されています。今回の記事では、StreamlitとSalesforceを連携させて、データをインタラクティブに表示するアプリケーションを作成する方法について解説します。

2. 準備

2.1 必要なツールとライブラリのインストール

まず、以下のツールとライブラリをインストールします。

  • Python
  • Streamlit
  • Salesforceのライブラリ(Simple-Salesforce)

以下のコマンドを使用してインストールを行います。

pip install streamlit simple-salesforce
2.2 Salesforce APIの設定

Salesforce APIを使用するには、Salesforceのデベロッパーアカウントが必要です。以下の手順に従って、APIアクセスの設定を行います。

  1. Salesforceデベロッパーアカウントの作成
  1. Connected Appの設定
  • Salesforceにログイン後、「設定」→「アプリ」→「アプリケーションマネージャー」に移動し、「新しい接続アプリケーション」を作成します。
  • API(OAuth)設定で、必要な情報(Callback URLやOAuthスコープ)を入力します。
  1. OAuth認証情報の取得
  • 作成したConnected Appの「コンシューマーキー」と「コンシューマー秘密」を取得します。
2.3 Pythonコードの準備

必要なライブラリをインポートし、Salesforceに接続するための基本的なコードを準備します。

import streamlit as st
from simple_salesforce import Salesforce

# Salesforce接続設定
sf = Salesforce(username='your_username', password='your_password', security_token='your_security_token')

3. 基本的なStreamlitアプリの作成

まずは、Streamlitアプリの基本構造を作成します。

import streamlit as st

st.title('Salesforceと連携するStreamlitアプリ')
st.write('このアプリでは、Salesforceのデータを表示します。')

このスクリプトをapp.pyとして保存し、以下のコマンドで実行します。

streamlit run app.py

ブラウザが自動的に開き、基本的なタイトルと説明が表示されます。

4. Salesforceデータの取得と表示

次に、Salesforceからデータを取得し、Streamlitで表示する方法を説明します。今回は、Salesforceの標準オブジェクトである「Account」データを取得して表示します。

import streamlit as st
from simple_salesforce import Salesforce
import pandas as pd

# Salesforce接続設定
sf = Salesforce(username='your_username', password='your_password', security_token='your_security_token')

st.title('Salesforceと連携するStreamlitアプリ')
st.write('このアプリでは、Salesforceのデータを表示します。')

# Salesforceからデータを取得
query = "SELECT Id, Name, Industry, AnnualRevenue FROM Account LIMIT 10"
records = sf.query(query)['records']

# データをDataFrameに変換
df = pd.DataFrame(records).drop(columns='attributes')

# データを表示
st.write("Accountデータ:")
st.write(df)

このスクリプトを実行すると、Salesforceから取得したAccountデータがDataFrame形式で表示されます。

5. インタラクティブな機能の追加

次に、ユーザーがインタラクティブに操作できる機能を追加します。例えば、特定の業界(Industry)を選択して、その業界に関連するAccountデータのみを表示する機能を追加します。

import streamlit as st
from simple_salesforce import Salesforce
import pandas as pd

# Salesforce接続設定
sf = Salesforce(username='your_username', password='your_password', security_token='your_security_token')

st.title('Salesforceと連携するStreamlitアプリ')
st.write('このアプリでは、Salesforceのデータを表示します。')

# Salesforceからデータを取得
query = "SELECT Id, Name, Industry, AnnualRevenue FROM Account"
records = sf.query(query)['records']

# データをDataFrameに変換
df = pd.DataFrame(records).drop(columns='attributes')

# 業界リストを取得
industries = df['Industry'].unique().tolist()
industries.insert(0, 'すべて')

# ユーザー入力を取得
selected_industry = st.selectbox('業界を選択してください', industries)

# データフィルタリング
if selected_industry != 'すべて':
    df = df[df['Industry'] == selected_industry]

# データを表示
st.write("Accountデータ:")
st.write(df)

このスクリプトを実行すると、ユーザーは業界を選択でき、選択した業界に関連するAccountデータのみが表示されます。

6. データの可視化

Streamlitを使うと、データの可視化も簡単に行えます。次に、Accountデータの年収(AnnualRevenue)を棒グラフで表示する方法を紹介します。

import streamlit as st
from simple_salesforce import Salesforce
import pandas as pd
import matplotlib.pyplot as plt

# Salesforce接続設定
sf = Salesforce(username='your_username', password='your_password', security_token='your_security_token')

st.title('Salesforceと連携するStreamlitアプリ')
st.write('このアプリでは、Salesforceのデータを表示します。')

# Salesforceからデータを取得
query = "SELECT Id, Name, Industry, AnnualRevenue FROM Account"
records = sf.query(query)['records']

# データをDataFrameに変換
df = pd.DataFrame(records).drop(columns='attributes')

# 業界リストを取得
industries = df['Industry'].unique().tolist()
industries.insert(0, 'すべて')

# ユーザー入力を取得
selected_industry = st.selectbox('業界を選択してください', industries)

# データフィルタリング
if selected_industry != 'すべて':
    df = df[df['Industry'] == selected_industry]

# データを表示
st.write("Accountデータ:")
st.write(df)

# 年収データを可視化
st.write("年収の分布:")

fig, ax = plt.subplots()
ax.bar(df['Name'], df['AnnualRevenue'])
plt.xticks(rotation=90)
st.pyplot(fig)

このスクリプトを実行すると、選択した業界の各Accountの年収が棒グラフで表示されます。

7. ユーザー入力に基づくデータ更新

最後に、ユーザーが入力したデータを基にSalesforceのデータを更新する方法を説明します。例えば、特定のAccountの年収を更新する機能を追加します。

import streamlit as st
from simple_salesforce import Salesforce
import pandas as pd

# Salesforce接続設定
sf = Salesforce(username='your_username', password='your_password', security_token='your_security_token')

st.title('Salesforceと連携するStreamlitアプリ')
st.write('このアプリでは、Salesforceのデータを表示します。')

# Salesforceからデータを取得
query = "SELECT Id, Name, Industry, AnnualRevenue FROM Account"
records = sf.query(query)['records']

# データをDataFrameに変換
df = pd.DataFrame(records).drop(columns='attributes')

# 業界リストを取得
industries = df['Industry'].unique().tolist()
industries.insert(0, 'すべて')

# ユーザー入力を取得
selected_industry = st.selectbox('業界を選択してください', industries)

# データフィルタリング
if selected_industry != 'すべて':
    df = df[df['Industry'] == selected_industry]

# データを表示
st.write("Accountデータ:")
st.write(df)

# 年収の更新
st.write("年収の更新:")

account_id = st.selectbox('Accountを選択してください', df['Id'])
new_revenue = st.number_input('新しい年収を入力してください', min_value=0, value=0)

if st.button('年収を更新'):
    sf.Account.update(account_id, {'AnnualRevenue': new_revenue})
    st.write(f'Account ID {account_id} の年収が {new_revenue} に更新されました。')

このスクリプトを実行すると、ユーザーは特定のAccountを選択して新

しい年収を入力し、ボタンをクリックすることで年収を更新できます。

8. まとめ

本記事では、StreamlitとSalesforceを連携させる方法を解説しました。Streamlitを使用すると、PythonコードだけでインタラクティブなWebアプリケーションを簡単に作成できます。Salesforceからデータを取得し、表示、可視化、更新するアプリケーションを作成することで、データの活用がさらに広がります。これを基に、さらに高度な機能を追加して、あなた自身のニーズに合ったアプリケーションを作成してみてください。

タイトルとURLをコピーしました