サーバーを使ったやり取りをしてみたい その2 「サーバー作ってみる」

こんにちは♪ python勉強中のcacaponです~
今回はpythonの第2回目ということで、サーバー作りをしていきたいと思います♪
前回のまだ見てないよ~という方は、前回の記事も見ていただけるとうれしいです♪

=前回の記事=

サーバーを使ったやり取りをしてみたい その1 「どこが分からないかな?」 - cacapon’s diary

==========
参考までに、今回行ったPCでは以下のような環境になっています。
=環境=
os:windows 7 64bit版
pythonインストール済み
==========

さて、それではサーバーを作っていきましょう…
といいたいところですが、そもそもサーバーって何なんですかね?

cacapon的な理解としては、「他のコンピュータと通信してデータのやり取りをする為の装置」という認識なのですが…

 

………

 

…合っているか分からないので調べてみました♪

wikipedia[1]に書いてあるものの内、今回cacaponが作ろうとしているサーバーは「クライアントサーバモデル」のようです~
クライアントサーバモデル[2]とは、以下のようなもののようです~

特定の役割を集中的に担当するコンピュータ(サーバ)と、利用者の操作するコンピュータ(クライアント)に役割を分け、これらが相互にネットワークで接続されるクライアントサーバモデルが一般化した。このモデルでは、クライアントがサーバに「要求」を送信し、サーバがそれに「応答」を返す形で処理が行われる。

なるほど~ 
 ・サーバーに「要求」を送って
 ・その結果をサーバーから「応答」を返す

という形が出来れば今回のテーマは完成形になりそうですね♪

=サーバー作りに挑戦!=
ではどんなサーバーを作ればよいかイメージができましたので、
そんな形のサーバーを作っていきましょう~

といっても一から作るのは大変そうだし、楽できないかな~探した所、pythonでサーバーを作る為のフレームワークなるものがあるとの事。
django」と「flask」の二つを見つけましたが、どうもflaskのほうが「軽量なフレームワーク」「学習の敷居が低いフレームワーク」との事で、今回はflaskで作ってみることにしました♪

参考ページ[3]を元に、簡単なサーバーを作成したいと思います~

=手順=
①flask をインストール
windowsの場合は、コマンドプロンプトで以下のコマンドでインストールできます。

f:id:cacapon:20190219115532p:plain
※pipコマンドが使えない場合は、インストール時にpath設定がされていない可能性があります。ここでの説明は割愛させていただきますのでご了承ください~
cacaponもミスってコマンドが使えなかったので、
参考ページ[4]のサイトを参考に再インストールしました~ 

pythonでファイルを作る
server_prototype.pyというファイルを作りました。中身はこんな感じです。

f:id:cacapon:20190219121232p:plain

flaskをinportして、
appという名前でFlaskのインスタンスを作成?
@app.routeは処理をどこで行うかの指定…ですかね?
指定しているのは一番最初のトップページのところですね~
deは'hello server'と表示するだけの簡単なものです。

if 以下は実行時の処理ですね。
port=5000で5000番のポートを設定しています。

しかし、if__name__ == '__main__':って良く見かけるんですけど、
これって何の処理なのでしょう?? もう少し調べる必要がありそうです~

③実行♪
pyファイルをクリックして実行します♪
実行すると、こんな感じの画面が出てきます。

f:id:cacapon:20190219122641p:plain

出来ましたら、ウェブブラウザから
ローカルポストの5000番ポートにアクセスしましょう♪

http://localhost:5000/

問題なければ、まっさらなページが出てきます。
問題あると、なんか英語の文章が出てきます。
ちなみにreturn のところの””に文字を入れてるとその文字が表示されますよ~

…ん?hello server!が見当たりませんね?どこいったのでしょう?
探してみたら、実行時の黒画面にしれっと追加されていました。

f:id:cacapon:20190219123940p:plain

何度か試したところ、ローカルホストに接続したタイミングで「hello server!」が表示されていました!
ん?ローカルホストに「要求」だしたら、
黒画面にhello server!と「応答」を返すって… 
まんま、クライアントサーバモデルですね!

サーバー作るだけのつもりが、いつの間にか「要求」「応答」も出来ちゃったようです!

=まとめ=
cacapon的には想定外だったのですが、二回目にして当初の目的だった「PCから要求を出して」「サーバーから応答を返す」プログラムが出来てしまいました~
ですが、なんとなく出来ちゃった感じですし、現状の知識で応用は出来ないでしょう…
 あと、出来たサーバーが「ローカルホスト」なので、外部からは接続できない状態です。ここも外部のコンピューターから接続できるようになりたいですね~

次回は、要求、応答のあたりをもう少し深く掘り下げていく予定です♪
ここまで見てくださってありがとうございました~ またです♪

=参考ページ=

[1]サーバ - Wikipedia

[2]クライアントサーバモデル - Wikipedia

[3]Flask入門 - Python学習講座

[4]Python3のインストール - python.jp