Xのフォロワーを増やしたいと思い、自動フォローツールを開発しました。
当初は、PCの電源を切っていても裏で機能するツールにしたかったですが、バージョンの互換性などの問題で要件を妥協し、PC起動中のみ動くツールにしました。
作業の流れ
1.ローカルでseleniumのコードを書く
2.ローカルでテスト
3.AWS Lambda を利用してseleniumが動くよう設定する(PCをシャットダウンしている時でも稼働させる)
4.バージョンが合わずエラーが出た為、解決策を模索
5.LambdaはあきらめてWindowsのタスクスケジューラーで実装(PC起動中のみ稼働する)
参考サイト&注意点
今までSeleniumを使ったことがなかったのですが、
サイトを開く -> サイトから特定の要素を取得 -> 任意の動作をさせる -> 終了
というシンプルな物だったのですぐに実装できました。
pythonはライブラリを入れるのも簡単で、気軽に弄れてありがたいです。
Lamdaで実装する際は、下記のサイトをメインにpythonやselenium、その他利用しているライブラリのバージョンを最新のものに読み替えて作業していました。


しかし、勝手に違うバージョンで作業していたせいで後々困ることになりました。
問題点
AWS Lambda上でseleniumuを動かす場合、headless で動かすことになります。
※seleniumにはheadfulとheadless があり、ブラウザ画面を表示させて処理を実行するか、しないかという違いがあります(その他にも細かい違いあり)
ローカル環境ですべて最新verで動かしていた限りでは、問題なく機能していたのですが、
AWS Lambdaに設定するとバージョンが合わないせいでエラーが発生してしまいました。
調査を行った結果、下記のサイトが非常に参考になりました。

どうやら、chromedriverとheadless-chromiumのバージョンによって動作しない場合があるらしく、大抵の場合動作しないことがわかりました。。(ごく一部の組み合わせでのみ動作可能)
確認の為、記載されているchromedriver及びheadless-chromiumをLambdaにて設定した所
確かにうまく機能しました。
しかし、基本的にverは最新のものを使いたい派(セキュリティ面の不安もあるので)の私は
chromedriverやheadless-chromiumのバージョンを下げるという対応に納得できませんでした。
最新verで機能する組み合わせを模索
最新verで動くようにするにはどうすればいいかを調査しました。
headlessではなくheadfullで Lambdaを動かす方法や、そもそもLambdaではなく別のクラウドサービスで実装する方法なども調べました。
結果、そもそもクラウドサービスを利用せずとも私のPCは常時稼働していることが多い為、
Windowsのタスクスケジューラーからpythonファイルを定刻に実行するよう設定すれば要件は満たせると判断しました。
反省点
・seleniumにはheadlessやheadfullがあることを理解していなかった。
初めて利用するツールなのにあまり内容を調査せず実装が先走ってしまいました(よく知らないツールやシステムは触って覚えるのも大事ですが、事前調査を怠るとつけが回ってきます)
・バージョンの組み合わせ、動作確認をしなかった。
実際の業務ではまず序盤に調べるようなことですが、個人での開発だった為『全部最新なら多分行けるだろう』の精神でやってしまいました。
感想
今回ツールを作ろうと思ったのは、XのAPI利用料が高すぎるせいだったりします。
本当はAPIを利用して作成した方が保守性などの観点からも長く利用できる(seluniumはサイト構成が変わる度に修正しなければならない可能性がある)と思ったのですが、
利用料を調べて、明らかに個人で出せる金額ではなかったので断念しました。
また、開発に移る前によさげなXのフォロー自動化ツールがないかも調べましたが、私が求めている機能を持ったものが見つかりませんでした。
おそらく、各企業サイドもAPIの価格がネックになっており、TwitterAPIが予告なく変更や終了された前例がある為、ツール開発に下手に手が出せないでいる状況なのではないかと考えています。
逆に言うと、こういった時期に一定以上のクオリティのツールを出せれば利用者はかなり見込めるとも思っています。X APIの個人向け価格がもう少し安くなれば、一攫千金を狙ってシステムを作ってみるのもありですね。

