投稿者: shiha

  • CopilotにDjangoのJavascrptの処理を聞いてみた(7)

    Django htmlのformで入力時に、文字が小文字の英数字で、10文字数以内で、{{ list }}内の要素の値と重複しないようなチェックするjavascriptを生成してください

    回答:

    こちらが、DjangoのHTMLフォームで以下の条件を満たす入力チェックを行うJavaScriptのコードです:

    小文字の英数字(a-z、0-9)のみ許可

    最大10文字まで

    {{ list }} 内の要素と重複しないこと

    Copilotの回答:

    説明:
    {{ list|safe }} を使用して、DjangoのlistをJavaScriptの配列に変換。

    validateInput() 関数で入力値をチェック:

    正規表現 (/^[a-z0-9]{1,10}$/) により、小文字の英数字のみ許可し、最大10文字まで制限。

    配列 existingValues との重複チェックを行う。

    oninput イベントを使用し、リアルタイムでチェック。

    この方法なら、ユーザーに対して適切な入力を促すことができます!カスタマイズしたい点があれば、お気軽にどうぞ 😊

    完璧なプログラミング内容です。

    これをプログラミング初心者は有効活用してください!!

    「いまココぼっち」マッチングアプリを開発しておりますが、5月31にリリースします。

    Djangoフレームワークを利用したWebアプリケーション開発者としては、日本で一番年配者だと思っております?

    今、60代以上のプログラマーと交流をしたいと思っています。

    交流ご希望の方連絡ください!!

  • Copilotに簡単な質問(6)

    Pythonソースコードを検証してください

            if transmission_conditions[0] == '常時受信':
                sendemaillinepush(available_pushes, s_user, transmission_conditions)
                continue
            else:
                if transmission_conditions[0] == '受取らない':
                    continue
                else:
                    if transmission_conditions[4] == '達成':
                        continue
                    else:
                        sendemaillinepush(available_pushes, s_user, transmission_conditions)
                        continue
    
    
    
    Copilotの回答
    
    このコードも、前回と同様に if-else のネストが深くなっていますね。よりシンプルで可読性の高い書き方に整理すると、理解しやすくなります。
    
    改善例:
    python
    if transmission_conditions[0] == '常時受信':
        sendemaillinepush(available_pushes, s_user, transmission_conditions)
    elif transmission_conditions[0] == '受取らない' or transmission_conditions[4] == '達成':
        pass
    else:
        sendemaillinepush(available_pushes, s_user, transmission_conditions)
    

    改善ポイント:
    if-elif-else の活用

    ネストを減らして可読性を向上。

    条件のシンプル化

    or 演算子を使い、 受取らない または 達成 の場合は明示的に何もしない (pass) ように整理。

    メンテナンス性の向上

    どこを修正すればよいか、一目で分かるようになります。

    この変更で、より直感的なコードになったと思います。意図した動作と合っているか、一度確認してみてくださいね!

    いい先生ですね!!

    プログラミング初心者は、上手にAIを利用してプログラミングの生産性向上を図ることができる時代になりました!!

    プログラミング言語は文法がきちっとなっているので、AIの得意な分野ですね!!


  • Copilotに質問(5)

    django created_atから年、月、日を抽出するという簡単な質問

    Copilotの回答:

    1. Django ORMの annotate を使う
      Djangoの annotate を使えば、クエリ内で直接日付情報を抽出できます。

    python
    from django.db.models.functions import ExtractYear, ExtractMonth, ExtractDay

    queryset = YourModel.objects.annotate(
    year=ExtractYear(‘created_at’),
    month=ExtractMonth(‘created_at’),
    day=ExtractDay(‘created_at’)
    )

    for obj in queryset:
    print(obj.year, obj.month, obj.day)
    📌 ポイント

    ExtractYear, ExtractMonth, ExtractDay を使うと、DBから直接値を取得できる。

    DBの負荷を減らし、効率よくデータを取得できる。

    1. Pythonの datetime モジュールを使う
      Django ORMで取得後に datetime モジュールを使って処理する方法もあります。

    python
    from datetime import datetime

    obj = YourModel.objects.first() # 最初のレコードを取得
    created_at = obj.created_at

    year = created_at.year
    month = created_at.month
    day = created_at.day

    print(year, month, day)
    📌 ポイント

    created_at.year, created_at.month, created_at.day で簡単に取得可能。

    ORMでフィルタ後に処理する場合に便利。

    忘れがちな文法は、Copilotに気軽に聞いたほうが検索エンジンより効率がよさそう!!

    いまココぼっちというマッチングアプリを2025年5月にリリースします!

  • Copilotは賢い!(4)

    python 冗長なソースコードを探してください

    Copilotの回答:

    このコードにはいくつか冗長な部分がありますので、簡潔にするための提案をします。

    改善ポイント
    デフォルト条件の設定を関数化 serviceclient_column_c4_list の設定が複数箇所にあるため、関数化することでコードの重複を減らせます。

    s_query.serviceclient_column_c4 の処理を統一 s_query.serviceclient_column_c4 の更新と保存の処理を共通化できます。

    変数の適切な活用 transmission_conditions の代入が重複しているため、整理できます。

    改善後の例


    この修正により、可読性が向上し、無駄なコードを省略できます。 特に、条件分岐をシンプルにし、関数を使うことで冗長な処理を削減しました。

    どう思いますか?さらに改善したい点があれば教えてください!

  • Copilotを上手に使う(3)

    以下のpythonソースコードを簡易なソースコードに変換する

                    if '3名以内/月' in get_data:
                        number_samples = 3
                    elif '5名以内/月' in get_data:
                        number_samples = 5
                    elif '10名以内/月' in get_data:
                        number_samples = 10
                    elif '15名以内/月' in get_data:
                        number_samples = 15
                    elif '20名以内/月' in get_data:
                        number_samples = 20
                    elif '25名以内/月' in get_data:
                        number_samples = 25
                    elif '30名以内/月' in get_data:
                        number_samples = 30

    このコードを簡潔にするために、辞書を使ったマッピングを活用するのが良い方法です。以下のように書き換えることができます。

    python
    mapping = {
    ‘3名以内/月’: 3, ‘5名以内/月’: 5, ’10名以内/月’: 10,
    ’15名以内/月’: 15, ’20名以内/月’: 20, ’25名以内/月’: 25, ’30名以内/月’: 30
    }
    number_samples = mapping.get(get_data)

    この方法では、辞書を利用して get_data の値に応じた number_samples を取得できます。辞書を使うことで、コードがスッキリし、条件分岐を減らすことができます。

    いまココぼっちというマッチングアプリを開発しています。

  • Copilotに質問したら?

    質問:python 今日の日付から年、月、日を文字形式で得る

    Pythonで今日の日付から年、月、日を文字列として取得するには、datetime モジュールを使うのが一般的です。以下のように書くことで、年・月・日をそれぞれ文字列として得ることができます。

    from datetime import datetime

    # 今日の日付を取得

    today = datetime.today()

    # 年、月、日を文字列として取得

    year = today.strftime(“%Y”) # 年
    month = today.strftime(“%m”) # 月
    day = today.strftime(“%d”) # 日

    print(f”年: {year}, 月: {month}, 日: {day}”)

    使える!!!

  • Copilotに聞いてみた!

    python 今日の日付から月末までの日数を求める

    Copilotからの回答は、

    Python で今日の日付から月末までの日数を求めるには、datetime モジュールを使うのが便利です。以下のコードで計算できます:

    3秒ぐらいで応答があった。

    これなら使えそう!!

    以下は、pythonのプログラムソースコード

    from datetime import datetime, timedelta

    # 今日の日付を取得

    today = datetime.today()

    # 月末の日付を取得

    next_month = today.replace(day=28) + timedelta(days=4) # 適当な日を設定し、翌月に進む
    month_end = next_month – timedelta(days=next_month.day) # 月末の日付を取得

    # 今日から月末までの日数を計算

    days_remaining = (month_end – today).days

    print(f”今日: {today.strftime(‘%Y-%m-%d’)}”)
    print(f”月末: {month_end.strftime(‘%Y-%m-%d’)}”)
    print(f”月末までの日数: {days_remaining} 日”)

  • 想いが伝わるやさしいデザイン教室

    2024年2月23日このセミナーを受講しました。
    講師は、白川桃子氏(アートディレクター)で、「2店舗目オープンをお知らせするチラシ」を制作するというストーリーの講義でした。

    とても参考になりました。これから、チラシやWebページ制作に役立てていきます。
    このホームページでもこの手法で制作していきます。

  • ブログ記事を自動でXにポストする

    「Autoshare for Twitter」は、WordPressの記事が公開されると同時に、その記事を自動的にXにポストするプラグインです。

  • Xの投稿をブログに埋め込む

    Xの投稿をブログに埋め込む

    ブロックエディターで、Xの投稿記事をブログに埋め込む

    ブロック追加ボタンをクリック、ブロック>埋め込み>X(旧Twitter)
    を選択し、ポップアップにXのURLを貼り付けると埋め込み完了