iOSアプリ「Pythonista3」でクラスメソッドのおみくじを占えるようにした
こんにちは。池田です。AWS事業部合宿2017ではLT大会のトリを務めるという大仕事をやりきりました。
既にお気づきの方も多いと思いますが、プログラミング初心者です。
前回の記事では、めそ子さんとツーショット撮影ができるようにしてみました。
今回はクラスメソッドのおみくじをPythonista3で実現しようと思います。
今回はiPadAir2でやってみました。
前提条件
準備
おみくじ結果で表示させる画像の用意
クラスメソッドのおみくじページから10種類の画像とコメントを取得して保存。その後、前回の記事で紹介した「Dropbox File Picker V2.py」を利用してDropbox経由でiOS端末へ画像を配置します。今回は、各画像のファイル名を1から10の連番としました。
コード作成
画像ファイルと同じディレクトリにスクリプトを作成します。今回はomikuji.pyとしました。
# -*- coding: utf-8 -*- from PIL import Image import random
画像を扱うのでPILのImageモジュールと、ランダムな結果が得られるようrandomモジュールを利用します。
uranai = ['1.png', '2.png', '3.png', '4.png', '5.png', '6.png', '7.png', '8.png', '9.png', '10.png'] unsei = (random.choice(uranai)) # random の前の ( がコピペミスで抜けていたことに気づきました。20171026修正 mesoko = Image.open(unsei, 'r') mesoko.show()
おみくじの結果は10パターンなので、単純にリストへファイル名を列挙しました。
次に、10種類のファイル名からひとつをランダムに選びます。
選んだファイル名の画像ファイルを表示させます。
if unsei == '1.png': print ('開運AWSはAmazon Alexaです。\n力およばず悔しい思いを抱きがち。そんなときこそビルからの景色を眺めたり、しばらく連絡していない人に短いメールを送ってみたりして、ちょっとしたメンテナンスが必要かも。') elif unsei == '2.png': print ('開運検索エンジンはElasticsearchです。\n「こうだったらいいな」がいくつも叶うような嬉しい気配。足取りも軽やかで楽しい毎日が訪れそう。まわりの人にもおすそ分けすればさらなる相乗効果が期待できるかも?') elif unsei == '3.png': print ('開運OSSはHadoopです。\n毎日なんとなくのルーチン作業にちょっとしたアイデアを盛り込んで吉。意外な変化の訪れに思わず笑ってしまうかも?まずは日々のWebサービスの設定を見直してみるところから。') elif unsei == '4.png': print ('開運AWSはAmazon Alexaです。\n力およばず悔しい思いを抱きがち。そんなときこそビルからの景色を眺めたり、しばらく連絡していない人に短いメールを送ってみたりして、ちょっとしたメンテナンスが必要かも。') elif unsei == '5.png': print ('開運AWSはAuroraです。\n慎重さが求められる時期。打開策は入念な準備と絶やさぬ注意です。忙しくておろそかになりそうなときは、お隣に声をかけてみるのが近道になるかも。協力して乗り越えましょう。') elif unsei == '6.png': print ('開運プログラミング言語はPythonです。\n先延ばしを繰り返していたものが思わぬ結果に転びそう。残された道は初期化しかないというような状況を避けるためにも、時間を見つけて取り掛かってみては?') elif unsei == '7.png': print ('開運プログラミング言語はKotlinです。\n「必要十分」がつい口癖になり、要件をクリアすればなんでもいいやなんて思ってしまう今日この頃。たまには背伸びをしてみませんか?新しい世界が見えてくるかもしれません。') elif unsei == '8.png': print ('開運プログラミング言語はScalaです。\n上昇志向はあるけれど、トップが負う責任は重そう。ほどよい位置にいるという居心地はなかなかのものです。でも心のどこかに「まだまだいけるぞ」とアクセルを踏みたい気持ちも?') elif unsei == '9.png': print ('開運OSSはDockerです。\nメールやチャットなど、ツールに頼りがちなコミュニケーションに誤解注意報。ちょっと重い腰を上げて直接話しかけてみませんか?「話せばわかる何事も」となりそう。') elif unsei == '10.png': print ('開運データベースはMongoDBです。\n驚きのニュースが舞い込むかも。臨機応変に動けるように普段から準備運動しておけば、その一報をきっかけに物事がどんどんうまく転んでいく可能性が高いでしょう。') else: pass
スマートな記述ではないと思いつつもプロトタイプということでif文を使い、選ばれたファイル名に対応するコメントを表示させます。
コード全体は以下となります。
# -*- coding: utf-8 -*- from PIL import Image import random uranai = ['1.png', '2.png', '3.png', '4.png', '5.png', '6.png', '7.png', '8.png', '9.png', '10.png'] unsei = (random.choice(uranai)) # random の前の ( がコピペミスで抜けていたことに気づきました。20171026修正 mesoko = Image.open(unsei, 'r') mesoko.show() if unsei == '1.png': print ('開運AWSはAmazon Alexaです。\n力およばず悔しい思いを抱きがち。そんなときこそビルからの景色を眺めたり、しばらく連絡していない人に短いメールを送ってみたりして、ちょっとしたメンテナンスが必要かも。') elif unsei == '2.png': print ('開運検索エンジンはElasticsearchです。\n「こうだったらいいな」がいくつも叶うような嬉しい気配。足取りも軽やかで楽しい毎日が訪れそう。まわりの人にもおすそ分けすればさらなる相乗効果が期待できるかも?') elif unsei == '3.png': print ('開運OSSはHadoopです。\n毎日なんとなくのルーチン作業にちょっとしたアイデアを盛り込んで吉。意外な変化の訪れに思わず笑ってしまうかも?まずは日々のWebサービスの設定を見直してみるところから。') elif unsei == '4.png': print ('開運AWSはAmazon Alexaです。\n力およばず悔しい思いを抱きがち。そんなときこそビルからの景色を眺めたり、しばらく連絡していない人に短いメールを送ってみたりして、ちょっとしたメンテナンスが必要かも。') elif unsei == '5.png': print ('開運AWSはAuroraです。\n慎重さが求められる時期。打開策は入念な準備と絶やさぬ注意です。忙しくておろそかになりそうなときは、お隣に声をかけてみるのが近道になるかも。協力して乗り越えましょう。') elif unsei == '6.png': print ('開運プログラミング言語はPythonです。\n先延ばしを繰り返していたものが思わぬ結果に転びそう。残された道は初期化しかないというような状況を避けるためにも、時間を見つけて取り掛かってみては?') elif unsei == '7.png': print ('開運プログラミング言語はKotlinです。\n「必要十分」がつい口癖になり、要件をクリアすればなんでもいいやなんて思ってしまう今日この頃。たまには背伸びをしてみませんか?新しい世界が見えてくるかもしれません。') elif unsei == '8.png': print ('開運プログラミング言語はScalaです。\n上昇志向はあるけれど、トップが負う責任は重そう。ほどよい位置にいるという居心地はなかなかのものです。でも心のどこかに「まだまだいけるぞ」とアクセルを踏みたい気持ちも?') elif unsei == '9.png': print ('開運OSSはDockerです。\nメールやチャットなど、ツールに頼りがちなコミュニケーションに誤解注意報。ちょっと重い腰を上げて直接話しかけてみませんか?「話せばわかる何事も」となりそう。') elif unsei == '10.png': print ('開運データベースはMongoDBです。\n驚きのニュースが舞い込むかも。臨機応変に動けるように普段から準備運動しておけば、その一報をきっかけに物事がどんどんうまく転んでいく可能性が高いでしょう。') else: pass
改善点や今後のネタを考える
最後に
これでいつでもめそ子さん占ってもらえるようになりました。
今後もPythonista3やめそ子さんと楽しい時間を過ごしつつ、初心者から初級者にステップアップできるよう取り組んでいきます。