見出し画像

プログラミングはシンプルに

先日、プログラミングを勉強中の方から質問を受けました。

プログラムを学ぶと色々なアイデアを実現できるのは理解できたけれど、そもそも何を作ればいいのかわからない、とのこと。

たとえば晩ご飯の献立を検索して出力するプログラムを作ろうと思っても、その方法を考えるのにも時間がかかるし、結局自分で検索した方が楽なのでプログラムを作る必要性がなくなってしまうと悩んでいました。

確かに、ちょっとしたアイデアでも実現しようと思うと難しかったりします。献立ひとつ検索するにも、どこの、どんな情報を、どんな形で取ってくるのかといった事前調査が必要ですし、画像を付けて結果を自分好みに表示したければウェブデザインの知識が必要になったりします。

ですが、せっかく思いついたアイデアだし、できる範囲で形にしてみては?と話が進み、一緒に考えてみました。

やりたいことの本質を探る

最初になぜ料理の献立を出力したいのか目的を確認してみると、晩ご飯を作るときの参考にするため、ということでした。検索した料理のレシピを見ながら作る場合もあるけれど、どちらかというとインスピレーションを得る意味合いが強いので、まずは料理のメニューをピックアップするだけでも良いのでは?とシンプルな形に落ち着きました。

ピックアップする料理の数も、何千個も表示されても目で追うのが大変です。ある程度の数があれば良いのです。だったら検索するサイトも絞り込めますね。

あとは、毎回同じ内容だとつまらないので料理のメニューが頻繁に入れ替わるようにしたいと思いました。検索条件を毎回変えるのも面倒なので、週間ランキングなど自動的に内容が入れ替わるサイトを探してみます。

最小限の目的実現

ここまで決まれば、あとはデータをどこから持ってくるのかを決めて、プログラミングで解決するだけです。検索するサイトとして必要な条件をまとめると、以下になりました。

・料理名が載っている
・ある程度の数が表示されている
・データが頻繁に更新される

で、探したところ丁度良いものが見つかりました。1週間分、1日3品目の献立が掲載されていて毎週更新されます。今回のプログラムに最適です。

[献立] 今週一週間のおすすめ献立メニュー|料理をするなら味の素パークの【レシピ大百科】

あとはプログラミングするだけ!早速、Pythonというプログラミング言語で作ってみました。完成してみるとたったの8行プログラムになりました(Requests、BeautifulSoupというライブラリを使用しています)。幸運にも簡単に目的は達成できましたが、実際には様々な試行錯誤があったので結構な時間がかかっています。

import requests
from bs4 import BeautifulSoup

url = 'https://park.ajinomoto.co.jp/recipe/menu/weekly/'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
contents = soup.find_all(class_='ellipsis')

for content in contents:
   print(content.string)
​

※サイトによってはプログラムの実行による情報取得を禁止している場合もありますので、実行の際はご注意ください。

あとは想像を広げていく

今回のプログラムは単純に料理名を一覧表示するだけでした。でもプログラミング技術を磨いていけば後からどんどんやりたいことを追加していけます。

たとえば、自動的に自分のLINEなどに送信すると便利そうです。メニュー名だけじゃなく画像やレシピも表示できると見栄えも良くなりますし、他のサイトを追加して料理を増やすのも1つのアイデアです。それよりも、よそを頼るよりオリジナルメニューを用意するのも面白そうですね。そうすれば個人で使うだけでなく他のユーザーさんも利用できるようにしたくなりますし、そのうちAIを使って好みの食事を提案!なんて可能性も広がります。

すごいゲームを作りたいからと最初から壮大なスケールで考えてしまう人もいますが、初心者の方は小さく作って後から足していく方が良いと思います。付け足しを続けていと、だんだん歪みができて最初からやり直しになる場合もありますが、そこから設計の大事さも理解できるようになるでしょう。

そして何よりも、自分の書いたプログラムが動く喜びをたくさん味わって欲しいと思います。

Photo by Paige Cody on Unsplash


この記事が気に入ったらサポートをしてみませんか?