「プログラム作りたい...マジでどう書いたら正解なの?」

これ、難しく考えてるだけで実はプログラムを書く順番はけっこう簡単。プログラムの書きかたが分からないといつまでも成長しない。いつまでもパソコンの前でうんうんと悩むことになる。

そんなことにならないために、プログラムの書きかたを分かりやすく簡単に教えていこう。

プログラムを書く順番、実はけっこう簡単

プログラムを書くのは3ステップで簡単。基本的なプログラムの流れは下記。

  1. なんかのライブラリ(モジュール)をimport
  2. 変数 + 型の設定(Pythonでは変数のみ)
  3. なんかの処理(関数を使う、計算、if文、for文、while文など...)

上記の書きかたが、何個かの塊になったのがアプリケーションなるわけ。どんなプログラムでもこうなってる。

たとえば、以下のGoogleの検索結果を取得するプログラムを見ていこうか。

import requests as web
import bs4


lists = []
keywd  = ['python']
url = 'https://www.google.co.jp/search?&q=' + ' '.join(keywd)
uagent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0"

response = web.get(url, headers={"User-Agent": uagent})
response.encoding = response.apparent_encoding
response.raise_for_status()

soup = bs4.BeautifulSoup(response.text,'lxml')
datas = soup.find_all("h3", limit=5)

for data in datas:
    lists.append(data.text)
print(lists)
  1. 1、2行目でモジュールをimportしてくる
  2. 5~15行目で変数を設定
  3. 17、18行目でfor文処理をし、print文で表示

プログラムの流れを比較してみよう
先ほどの3ステップと比較しても一緒なことが分かるはずだ。

  1. なんかのライブラリ(モジュール)をimport
  2. 変数 + 型の設定(Pythonでは変数のみ)
  3. なんかの処理(関数を使う、計算、if文、for文、while文など...)

クラスや関数を作るときはどうするの?

クラスや関数(Pythonならdef)を作るときも順番は一緒

関数だと追加で『return』が付くかつかないか、これだけ。

  1. なんかのライブラリ(モジュール)をimport(最初だけの場合が多い)
  2. 変数 + 型の設定(Pythonでは変数のみ)
  3. なんかの処理(関数を使う、計算、if文、for文、while文など...)
  4. returnで処理した値を返す(ない場合もあり)

プログラムは基本、上から順番に処理がされていく。ただ、関数やクラスを呼び出すと呼び出した段階で割り込むことができる。

たとえば、以下のPythonプログラムを見ていこうか。

import requests
import bs4


def html_response():
    keywords = input('please input search keywords.')
    url = 'https://www.google.co.jp/search?&num=10&q=' + ' '.join(keywords)
    user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0"

    response = requests.get(url, headers={"User-Agent": user_agent})
    response.encoding = response.apparent_encoding
    response.raise_for_status()
    response_text = response.text
    return response_text


def scraping_google():
    lists = []
    soup = bs4.BeautifulSoup(html_response(), 'lxml')
    data_soup = soup.find_all("h3", class_='LC20lb')
    for data in data_soup:
        lists.append(data.text)
    return lists


if __name__ == '__main__':
    scraping_google()

さっきのGoogleで検索結果を取得するプログラムを関数化したパターンだ。

見てほしいのは1、2、17~23行目。

  1. 1、2行目でimportしてPythonのrequests、bs4というライブラリをimport(取り込んでくる)
  2. 18~20行目で変数を設定している
  3. 21,22行目でfor文の処理をする
  4. 最後、23行目でreturn文、listsという変数に値(Google検索結果データが入った)を返す

そして、19行目でhtml_response()という関数を取り入れてる。これは、5~14行目の処理を19行目で実行してくださいねってこと。19行目以外ではhtml_response()関数は実行されない。

プログラムを比較してみよう
作りかたは一緒だって分かるよね、これだけ簡単。

  1. なんかのライブラリをimport
  2. 変数 + 型の設定
  3. なんかの処理(計算、if文、for文、while文など...)
  4. returnで処理した値を返す(ない場合もあり)

プログラムを作るときの考えかた

プログラミングをするとき、プログラムを小さい塊として考えることが重要。

これが出来て何個も作っておくと組み合わせるだけで...なんと短時間でいい感じのプログラムができるように。だから、なるべく関数やクラスで書いたほうが小さい塊として簡単に書ける。なおかつ、後で使い回しができるようになるわけ。

1つの関数が長くても30行以内にプログラムを小さい塊として分ければOKだ。

まとめ:書きかたを意識してプログラムを作ろう【行動あるのみ】

正直、自分はこのプログラムの順番で書いていくことを知らなかった時期は絶望してた。

「プログラムを作りたい...けどマジでどう書いたら正解なのか?」って。でもこの記事でやってきたことを思い出してみよう。

  1. なんかのライブラリ(モジュール)をimport(最初だけの場合が多い)
  2. 変数 + 型の設定(Pythonでは変数のみ)
  3. なんかの処理(関数を使う、計算、if文、for文、while文など...)
  4. returnで処理した値を返す(ない場合もあり)

プログラムの書きかたが分かってから、1からプログラムを書けるように成長した。だから、あなたは書きかたを意識してプログラムを最低3つぐらいは作ってみてほしい。

まあ、頑張ってくれ。

人気記事コードなんて動けばいい、そう思ってました。この本に出合うまでは...