Pythonista 対話アプリ Jarvis MVCモデル

Python学習【365日チャレンジ!】116日目のマスターU(@Udemy11)です。

家庭菜園でトマトやとうもろこしを育てているのですが、雨が降ると一気に成長するんです。

毎日たっぷり水をやっても次の日に

成長したな〜!

と感じるくらい伸びないのですが、「結構、雨ふったな〜」というくらいの雨が降ると、次の日はびっくりするくらい大きくなっているのがわかるんです。

これは実際に育ててみないと実感できませんが、まじでびっくりします。

できれば育ってほしくない植物も成長するので、雑草を抜くのが大変で困っちゃうんですけどね。

いつになったら食べられるかな〜。

ということで、今日もPython学習をはじめましょう!

昨日の復習

昨日は、MVCモデルで作る対話アプリJarvisの動作をコントロールするファイル、controllerフォルダに格納するconversation.pyのコードを書きました。

Jarvisの対話動作などを定義したrobot.pyをインポートして、クラスのオブジェクト(インスタンス)を作り、どの関数をどの順番で実行するかを書きました。

conversation.pyでは、オブジェクトを生成して関数を実行するだけなので、これまでに書いてきたコードに間違いがなければ、これでJarvisは完成で、conversation.py内で定義した関数を実行すれば、Jarvisが動きましたよね。

今日は、最終的に、そのconversation.pyを実行してJarvisを動かすためのファイルmain.pyを作って、その動作を確認してみます。

main.py

基本的には、controller内のconversation.pyをインポートして、talk_about_sports()を実行するだけです。

ただ、下記のエントリーでも解説しているようにif __name__ == '__main__':を使って、メインの実行ファイルの場合に関数を実行するような記述が必要です。

パッケージがインポートされることを想定する必要があるためにこの記述が必要になりますので、main()関数を定義して実行するようなコードになっています。

import jarvis.controller.conversation


def main():
    jarvis.controller.conversation.talk_about_sports()
    
if __name__ == '__main__':
    main()

ここまで、酒井さんの講座のサンプルコードを参考にしながら、Jarvisを作ってきたのですが、このmain.pyを実行してみるとエラーが起こるんですよね。間違いなく。

そんなときは、あせらずにエラーが指摘しているコードを見直してみましょう。

原因はほとんどがタイプミス(例えば、imputだったり、templeteなど)なので、きちんとコードが間違っていないか再確認しましょう。

問題なく動けば、あとは何度か繰り返して実行してranking.csvにデータがきちんと保存されているか、人気のスポーツが取り出せているかなどをチェックしましょう。

対話アプリJarvis

今回作成した【Jarvis】が動いているところを見せるには、やっぱりYoutubeでしょ!

ってことでチャンネル作成して、動画をアップロードして、Youtuberデビューしちゃいました。

iPhoneのアプリ【Pythonista】で実行しているので、上下を少しカットしたものの、ちょっと縦長で見づらくなってしまいました。

まず最初に作成したJarvisのフォルダ構成を表示しています。

Pythonista Udemy講座 MVCモデル設計

次にmain.pyを実行していますが、一人目の回答者は【ichiro】さん、2人目は【本田】さん、3人目は【kazu】さん、最後が【daisuke】さんです。

実は、最後の人は、北島康介さんのつもりだったので、【kosuke】にするつもりがどういうわけか、大介になってしまったのはご愛嬌。

3人目の【kazu】さんで、Soccerのカウントが【2】になるので、4人目の質問の際には、Baseballに代わって、最初にSoccerをおすすめしています。

最後のほうで、きちんとranking.csvに入力したデータが入っているのがわかります。

Pythonisitaは最高

ここまでの学習では、ほとんどのコードをiOSのアプリ【Pythonista】で作成しました。

まだ一部の機能しか使えてませんが、想像以上にPythonを使うことができてビックリしてしまうくらいの完成度です。

もちろん、Pycharmなどに比べると利用できない機能が多いのですが、Macを使える状況であればPycharmでコードを書くとして、iCloudやDropBoxなどに保存しておけば、Macが使えないときでもiPhoneで続きを書くことができるので、めっちゃ便利です。

Pythonを本気でマスターしたいiPhoneユーザーには【Pythonista】は必須のアイテムです。

Pythonista 3

Pythonista3
価格:
1,220円
会社:
omz:software
ジャンル:
仕事効率化
評価:
4.5

今回のJarvisでは、酒井さんのコードで採用されているtermcolorが【Pythonista】では使えないため、使わずに指定されている引数も削除しました。

なので、質問の出力文字に色はつけられていませんが、動作は全く問題がありません。

これから使い倒していくつもりですが、困っていることといえば、老眼が入り始めた私の目には少し小さくて見づらいというところくらいです。

少し改良してみよう

Udemy講師 酒井さん プログラミング Python

今回の対話アプリJarvisは、この酒井さんの講座、現役シリコンバレーエンジニアが教えるPython3入門+応用+アメリカのシリコンバレー一流コードスタイルで紹介されていたサンプルコードを少し改良して作成しています。

今回出来上がったコードを元に、新しい動作を加えるなどいろいろな改良を加えたり、全く違うコードで一から書いてみれば、Pythonのスキルが向上することは間違いありません。

コードを読み解きながら、写経するのも重要ですが、基本となるサンプルを学習したあとは、一から自分で同じようにコードを書きつつ、独自のカスタマイズをしていくことが大切です。

サラッと学習するだけでなく、同じような動作を行うロボットを、MVCモデルで一から考えて作ってみてください。

残念ながら、たくさんコードを書かないとコードの書き方は上達しないので、コツコツと1からコードを書く練習をしましょう!

明日は、完成したコードを少しカスタマイズしてみようと思っています。

それでは明日も、Good Python!