Streamlitを使ってパスワード生成アプリを作成しよう!

IT・プログラミング

今回は、Streamlitを使用して簡単なパスワード生成アプリを作成するアプリを作りたいと思います。
ユーザーがパスワードの長さや含める文字種を選択し、生成ボタンをクリックするとランダムなパスワードが生成されます。

パスワード生成

コード全体

import streamlit as st
import random
import string

def generate_password(length, use_uppercase, use_numbers, use_special_chars):
    characters = string.ascii_lowercase
    if use_uppercase:
        characters += string.ascii_uppercase
    if use_numbers:
        characters += string.digits
    if use_special_chars:
        characters += string.punctuation

    password = ''.join(random.choice(characters) for _ in range(length))
    return password

st.title("パスワード生成アプリ")

password_length = st.slider("パスワードの長さを選択してください", min_value=6, max_value=20, value=12)
use_uppercase = st.checkbox("大文字を含める")
use_numbers = st.checkbox("数字を含める")
use_special_chars = st.checkbox("特殊文字を含める")

if st.button("パスワードを生成"):
    password = generate_password(password_length, use_uppercase, use_numbers, use_special_chars)
    st.success("生成されたパスワード: " + password)

st.info("セキュリティのために生成されたパスワードは安全に保管してください。")

コードの詳細

今回のパスワード生成アプリは、指定した条件に基づいてランダムなパスワードを生成するものです。

1. 必要なライブラリのインポート

まず、必要なライブラリをインポートします。streamlitは、ウェブアプリケーションを作成するためのライブラリです。また、randomstringはランダムな文字列を生成するために使用します。

import streamlit as st
import random
import string

2. パスワード生成関数の定義

パスワードを生成するための関数を定義します。この関数は、指定された長さと文字種に基づいてランダムなパスワードを生成します。

def generate_password(length, use_uppercase, use_numbers, use_special_chars):
    characters = string.ascii_lowercase
    if use_uppercase:
        characters += string.ascii_uppercase
    if use_numbers:
        characters += string.digits
    if use_special_chars:
        characters += string.punctuation

    password = ''.join(random.choice(characters) for _ in range(length))
    return password

generate_password 関数についてもう少し詳しく解説します。この関数は、指定された条件に基づいてランダムなパスワードを生成します。

generate_password 関数の概要

generate_password 関数は、以下のパラメータを受け取り、指定された条件に従ってランダムなパスワードを生成します。

  • length: パスワードの長さ
  • use_uppercase: 大文字を含めるかどうかのフラグ
  • use_numbers: 数字を含めるかどうかのフラグ
  • use_special_chars: 特殊文字を含めるかどうかのフラグ

パスワード生成のアルゴリズム

以下の手順でランダムなパスワードを生成します。

  1. 最初に、string.ascii_lowercase で小文字のアルファベットを初期化します。この文字列に他の文字を追加していきます。
  2. use_uppercase フラグが True の場合、大文字のアルファベットを characters 文字列に追加します。
  3. use_numbers フラグが True の場合、数字を characters 文字列に追加します。
  4. use_special_chars フラグが True の場合、特殊文字を characters 文字列に追加します。
  5. 生成されるパスワードの長さが length となるまで、characters 文字列からランダムに文字を選んで連結し、パスワードを生成します。

3. StreamlitアプリのUIの作成

次に、StreamlitアプリのUIを作成します。st.titlest.sliderst.checkboxなどの関数を使用して、ユーザーが設定を行えるUI要素を表示します。

st.title("パスワード生成アプリ")

password_length = st.slider("パスワードの長さを選択してください", min_value=6, max_value=20, value=12)
use_uppercase = st.checkbox("大文字を含める")
use_numbers = st.checkbox("数字を含める")
use_special_chars = st.checkbox("特殊文字を含める")

4. パスワード生成と表示

ユーザーが設定を行った後、”パスワードを生成” ボタンがクリックされた場合に、実際にパスワードを生成して表示します。

if st.button("パスワードを生成"):
    password = generate_password(password_length, use_uppercase, use_numbers, use_special_chars)
    st.success("生成されたパスワード: " + password)
st.info("セキュリティのために生成されたパスワードは安全に保管してください。")

これで、簡単なパスワード生成アプリのコードが完成しました。ユーザーがパスワードの長さや含める文字種を選択し、生成ボタンをクリックしてランダムなパスワードを取得できます。

GoogleColabのコード

タイトルとURLをコピーしました