はじめに
みなさま、無限ループはご存じでしょうか?
無限ループとは、プログラムの処理が終了条件を満たさないまま繰り返し続けてしまう状態のことです。簡単に言うと 「永遠に続く」 処理ですね。
主に以下のようなものがあります。
# 常にTrueのまま
while True:
print("こんにちは")
# iに対する終了条件がない
i = 1
while True :
print(i)
i += 1
# iは常に1以上なので終了しない
i = 1
while i > 0 :
print(i)
i += 1
無限ループを実行してしまった場合、[ Ctrl ] + [ C ] キーで止めることができます。
経緯
こちらの記事は、はなださん及びプログラム制作にご協力いただいた方の了承を得て公開しています。
私が所属しているコミュニティにデータサイエンティストのはなださんという方がおられます。先日ご結婚をされたということで、ご報告記事が投稿されております。
はなださん主催のオフラインイベントがあったため、サプライズでお祝いすることになりました。
私はコミュニティ内でハンズオンイベントを定期的に開催しています。現在はPythonをテーマにしていたので、お祝いのプログラミングをプレゼントしようと考えました。
準備
以下の手順で準備を進めました。
<手順>
1. プログラムの作成
2. プログラムの渡し方の検討
3. サプライズ全体の調整
1. プログラムの作成
まずはプログラムを用意しました。最初はシンプルにこのようなプログラムにしようと考えていました。
#無限ループ
while True:
print("はなださん、いつまでもお幸せに!")
コミュニティメンバーには素晴らしい方がたくさんいらっしゃいます。みなさまのご協力のもと、プログラムを改良し、最終的にこのような形になりました!
import time
left_char, right_char = '✨', '⭐'
isPartner = True
#無限ループ
while isPartner:
print(f"{left_char}はなださん、いつまでもお幸せに!{right_char}", end='\r')
left_char, right_char = right_char, left_char
time.sleep(0.5)
より素敵なプログラムになりました。ご協力ありがとうございました!!
このプログラムのポイントです。
-
time
モジュールを読み込み、処理を0.5秒止める -
left_char, right_char
で左右に並べる絵文字を変数に代入 -
while isPartner:
がずっとTrueだから無限ループ -
print
でメッセージを表示 -
end='\r'
は改行しないで行頭に戻る制御文字で、画面の同じ場所に上書きして表示してくれる -
left_char, right_char = right_char, left_char
で両端の絵文字が交互に入れ替わり、アニメーションぽくなる
動作イメージとしては、以下のメッセージが0.5秒ごとに表示され、キラキラして見えます。
✨はなださん、いつまでもお幸せに!⭐
⭐はなださん、いつまでもお幸せに!✨
2. プログラムの渡し方の検討
このプログラムは実行結果だけでなく、プログラムそのものをお見せすることが重要です。
プログラムと実行結果が同時に見えるように、VSCodeを使用して画面投影することにしました。文字サイズも調整し、小さい画面でも見える大きさにしました。
(Editor: Font Size 25、Terminal > Integrated: Font Size 50)
はなださんはデータサイエンティストなので、きっとPythonが動く環境はお持ちのはず…!ということでプログラムそのものは後日お渡しすることにしました。
3. サプライズ全体の調整
サプライズでは他にもケーキやお花のプレゼントがあり、それらのタイミングとの調整が必要でした。
イベント直前に古畑任三郎のテーマ曲をループ再生してほしいとの要望があり、YouTube Musicで再生リストを作成しました。他にもエンジニアっぽい結婚ソングをリストに追加しました。
<♪再生リスト♪>
-
「古畑任三郎 オープニングテーマ」
謎の要望で1曲目に追加 -
「恋」/ 星野源
ドラマ「逃げるは恥だが役に立つ」の平匡さんはITエンジニア -
「世界はそれを愛と呼ぶんだぜ」/ サンボマスター
ドラマ「電車男」は2ちゃんねるへの書き込みを基にしたラブストーリー -
「てんとう虫のサンバ」/ チェリッシュ
プログラムの不具合(バグ)にちなんで選曲 -
「惑星ループ」/ Eve
リストに入れ忘れていましたが、一番合っているかもしれない...!
話し合いの結果、サプライズの流れは以下のようになりました。
<流れ>
1. 古畑任三郎のオープニングテーマをループ再生(小芝居)
2. はなださんに後ろを向いてもらい、ケーキを準備
3. ケーキが準備できたら「恋」を再生
4. ケーキを渡している間にプログラムをモニターに投影
当日
曲のループ再生はうまくいかず、次の曲に行ってしまいました、、、
しかし、プログラムの無限ループはうまくいきました!
改めまして、はなださん、ご結婚おめでとうございます!!
これからも幸せ無限ループしてください
注意
こちらはプログラムの知識があるエンジニアの方に贈るプレゼントです。
プログラムの知識がない方に贈った場合、無限ループがうまく認識されない可能性がありますのでご注意ください。