Lambdaで外部ライブラリを使いたいんだよなあ。LambdaでスクレイピングPythonスクリプトをイベントドリブンに実行するべく四苦八苦した過程で、私が詰まった点や分かりにくいと感じた点を、なるべく簡潔に解説します。LambdaでPythonのスクレイピングをするならDockerで環境を用意しようPythonでスクレイピングするためにはSeleniumやBeautifulSoup4のような外部ライブラリを利用します。Chromeを使うならそのインストールも必要ですね。OS上ではスクリプトが動きません。そこで登場するのがDocker。Lambdaにリソースをパッケージングした仮想環境(コンテナ)をアップロードして、その仮想環境を使ってスクレイピング用Pythonスクリプトを実行します。この記事ではDockerの概要とインストール方法についてサクッと解説します。そもそもDcokerとは?Dockerはコンテナ型の仮想実行環境を構築するためのソフトウェアです。ハイパーバイザ型(Hyper-V)やホスト型(ViratualBox)の仮想化と比べて、コンテナ型は「非常に軽量」であることが最大の強みであります。Dockerが軽量である理由は、仮想化する範囲がOS単位ではなく「コンテナ」と呼ばれるプロセス単位だからです。「コンテナ」とは、実行環境を他のプロセスから隔離するLinuxカーネルの機能です。以下に、コンテナ型とホスト型の違いをザックリ図解しました。コンテナ型は仮想化する範囲が小さいことが分かりますね。Dockerを使うメリットは以下です。簡単に仮想環境のスクラップ&ビルドができるローカル仮想環境の統一1つ目のメリットについては先ほど述べた通りです。2つ目のメリットは、仮想化範囲が小さいおかげで、環境を作り直す際のハレーション(他への影響)が少なく済むからです。Dockerは1人で検証するときだけでなく、チームで開発する際にも役立ちます。それが3つ目のメリットである「ローカル環境の統一」です。チーム内で同じDockerイメージを利用することで、各メンバーのローカル環境に左右されることなく開発可能です。自分のローカル環境が汚れないのも嬉しいですね。ホスト型とコンテナ型の仮想環境を工場に例えてみましょう。ホスト型は1つの製品を作るために工場を1つ建てるイメージです。コンテナ型は1つの工場の中に複数の部屋があり、その部屋の中では別々の製品が作られています。部屋ごとに製造に必要な機材や材料は異なりますが、「工場」という建物は1つで十分です。製造するモノが変わったとしても、工場を建て直す必要はなく、部屋の中の機材や作業員を変更するだけでOKです。結論、「Dockerは軽量で環境統一が容易な仮想化ソリューション」と覚えておけば良いです。DockerをインストールしようザックリDockerを理解できたところでDockerをインストールしましょう。OSの場合のインストール手順です。ダウンロードDockerの公式サイトにアクセスします。Store]をクリックします。Download]をクリックします。account]からアカウントを作成します。アカウントの作成が完了したらログインします。Dockerをクリックしてdmgファイルをダウンロードします。dmgファイルを展開したらApplicationsフォルダへ移動します。初回起動Docker.appを起動します。権限設定が必要なので、先ほど作成したDockerアカウント情報を入力します。起動準備中の間にログインしておきます。Terminalで以下のコマンドを実行しましょう。version以下のように表示されたらインストールが成功しています。バージョンはいつインストールしたかによって異なります。筆者がインストールした2018/11/19時点でバージョンは18.06.1-ceでした。true今回の記事ではDockerのインストールまで完了しました。Lambda用のDockerイメージにスクレイピング用リソースをパッケージングしてテストスクリプトを実行します。この記事では、以下について解説します。リモートOKなスタートアップでフロントエンド|搾取されないエンジニアを増やすために、キャリア論や転職を成功させる方法、勉強方法について発信しています。