Pythonのプログラムを簡単にホスティングできるサービス、Pythonanywhere を使って、前にCheckiOの問題で書いたシーザー暗号とflaskを組み合わせてウェブアプリを試しにアップロードしてみた。
Pythonanywhereにアップロードした簡単ウェブアプリ
作成したウェブアプリはこちら:
いつまで無料版でこのコードを載せておくかわからないのでページのスクショを載せておく。
ページ 1 (‘/’)
ページ 2 (‘/encrypted’)
ようは、ページ1で好きな文章をアルファベットで入力し(日本語入力不可)、数字を選ぶと、その入力した文章がシーザー暗号化されて表示される、というもの。
シーザー暗号について
シーザー暗号とCheckiOについてはこちらから

「シーザー暗号」のことを聞いたことがある人はたくさんいると思う。今では陳腐であるが人類史初の暗号と言われる暗号化方法で、アルファベットの予め決めていた回数分「横にずらした場合の」アルファベットで文章を記述する、という暗号という概念が生まれた頃の初期暗号化方法。
例えば、「予め3回右にずらす」と決めておいて “I love you” という文章をシーザー暗号化すると、”l oryh brx” になる。ここでいう「3回ずらす」というのはアルファベット”abcdefghijklmnopqrstuvwxyz”の中で “a” を記入したい場合は右に3つずらした “d” を “a” の代わりに書くことになる。
シーザー暗号はその暗号化コンセプトを知っていてa-zのずらしを総当たり行うと解読可能であるので不完全な暗号化であるが、そのコンセプトとコーディングを学ぶ上ではためになる。
プログラムではこの「文章 (= “I love you”)」「何回 (= 3)」は入力内容になり、「暗号化された文章 (=”l oryh brx“)」が出力結果になる。
flaskを使ったコードについて
書いたコードに興味がある方はこちらからご確認ください。
コードについて簡単に解説すると、
- flaskをimportし、index.htmlとencrypted.htmlへのURLルーティングを作成
- index.htmlのinputフィールドに入力された情報をencrypted()でシーザー暗号化処理し、encrypted.htmlに渡す
- bootstrapを使ってindex.htmlとencrypted.htmlの見た目をちゃちゃっと作成
という流れ。シーザー暗号のコードは前に書いていたものがあったのと、bootstrapページはいくつかテンプレートを自分で作ったのでそれを使い回ししている。それらをflaskにつなげたというだけ。
Pythonanywhereについて
Pythonをバックエンド言語としたプログラムをサーバー上で簡単に走らせることができる。通常Pythonをサーバー上で走らせてウェブアプリを公開しようとすると、wsgiやらコード内で使用しているライブラリのインストールやらで慣れていない人にとってはハードルが高いのだが、Pythonanywhereではそういった心配が必要なく、フレームワークを選んでファイルをアップロードするだけ。(もちろんそのフレームワーク内の決まりに従う必要はある)
無料版はサブドメインで一つのウェブアプリを運用可能。有料プランは$5からで独自ドメインを使用したウェブサイトにしたり、クローラーなど自動化プログラムを定期的に走らせたり、諸々のサーバースペックが上がったりする。あと無料版だとデータベースはMySQLで、有料になるとPostgresが使える。
現在個人的に趣味で作っているウェブサービスを試しに$5プランでアップロードしてみるつもり。
コメント