投稿者: sumito.tsukada

  • PandasのTimestampオブジェクトでNaTTypeエラーを回避する

    PandasのTimestampオブジェクトでNaTTypeエラーを回避する

    PandasのTimestampオブジェクトを使用して日付データを操作する際、不適切なデータが含まれていると、NaTTypeエラーが発生することがあります。 この記事では、PandasのTimestampオブジェクトでNaTTypeエラーを回避する方法について説明します。 (さらに…)

  • Flask と Quart 比較: どちらを選ぶべきか?

    Flask と Quart 比較: どちらを選ぶべきか?

    近年、Flask 以外に Quartも python で API を作る時に選ばれるようになってきました。 それぞれの特徴をまとめます。

    項目 Flask Quart
    作者 Armin Ronacher Philip Jones
    公開年 2010 2017
    ライセンス BSD MIT
    非同期対応 部分的 (サードパーティ製の拡張機能) ネイティブ (async/await 対応)
    コミュニティ 大規模で安定 より小規模で成長中
    ドキュメントの充実度 高い 中程度
    日本語のドキュメント数 多い 少ない
    GitHubのStarの数 55,000以上 (2021年9月時点) 3,000以上 (2021年9月時点)
    対象ユーザー 初心者〜上級者 中級者〜上級者

    Flask はより充実したドキュメントと多くの日本語ドキュメントがあり、GitHub のスター数も多いため、初心者にも中級者や上級者にも適しています。 一方、Quart はドキュメントの充実度がやや劣り、日本語ドキュメントも少ないため、中級者や上級者に向いています。

    サンプルコード

    /hello を叩かれたら、hello world と表示するだけのサンプルコードは以下の通りです   Flask の例:

    from flask import Flask
    
    app = Flask(__name__)
    
    @app.route('/hello', methods=['GET'])
    def hello():
    return 'hello world'
    
    if __name__ == '__main__':
    app.run()

    Quart の例:

    from quart import Quart
    
    app = Quart(__name__)
    
    @app.route('/hello', methods=['GET'])
    async def hello():
    return 'hello world'
    
    if __name__ == '__main__':
    app.run()

    Flask はシンプルで軽量なフレームワークで、大きなコミュニティがありますが、非同期処理には部分的な対応しかしていません。 一方、Quart は非同期処理にネイティブで対応しており、より効率的なアプリケーション開発が可能ですが、コミュニティはまだ成長中です。 どちらを選ぶかは、プロジェクトの要件と開発チームの好み、そしてチームメンバーの技術レベルによって異なります。 非同期処理のサポートが重要な要素であれば、Quart の方が適しているかもしれません。   一方、初心者向けのサポートや豊富なリソースが重要であれば、Flask が良い選択肢となるでしょう。

  • Runtime.ImportModuleError: Unable to import module ‘app’: cannot import name ‘json’ from ‘itsdangerous’ (/var/task/itsdangerous/init.py)

    以下は、「Runtime.ImportModuleError: Unable to import module ‘app’: cannot import name ‘json’ from ‘itsdangerous’ (/var/task/itsdangerous/init.py)」に対する解決方法についてのブログ記事です。

    Lambda関数でPythonコードを実行する際に、依存ライブラリのバージョンによって、Runtime.ImportModuleErrorエラーが発生することがあります。

    この記事では、そのうちの1つである「itsdangerous」ライブラリのバージョンに関連するエラーについて解説します。

     

    上記のエラーは、Lambda関数に必要な「itsdangerous」ライブラリが、Lambda環境で正しく動作しないために発生します。

    特に、このエラーは「json」という特定の名前の属性をインポートできないという意味です。

     

    この問題を解決するには、Lambda関数の環境を構成し、互換性のあるバージョンの「itsdangerous」ライブラリを使用する必要があります。

    まず、既存のrequirements.txtファイルに以下のように「itsdangerous」ライブラリをバージョン指定して追加してください。

    itsdangerous==2.0.0

    次に、依存関係を更新する必要があります。Lambda関数のデプロイパッケージ内に既にライブラリがある場合は、パッケージを再度構築する必要があります。以下のコマンドを使用してパッケージを再構築してください。

    pip install -r requirements.txt

    これにより、指定されたバージョンの「itsdangerous」ライブラリがインストールされ、Lambda関数で使用できるようになります。この手順を実行することで、「itsdangerous」ライブラリのバージョンに関連するエラーを解決することができます。

    ただし、Lambda関数で発生するエラーは様々な種類があり、問題の原因を特定することが困難な場合があります。この場合、Lambda関数のログを確認して、詳細な情報を取得することをおすすめします。

  • [ERROR] Runtime.ImportModuleError: Unable to import module ‘app’: cannot import name ‘soft_unicode’ from ‘markupsafe’ (/var/task/markupsafe/__init__.py) Traceback (most recent call last):

    以下は、Lambda関数で「markupsafe」ライブラリのバージョンに関連するエラーが発生した場合の対処法についてより自然な文面でまとめたものです。

    このエラーを解決するには、Lambda関数で使用される「markupsafe」ライブラリのバージョンを明示的に指定し、互換性のあるバージョンを使用する必要があります。まず、Lambda関数の「requirements.txt」ファイルを確認し、以下のように「markupsafe」ライブラリのバージョンを指定することで、互換性のあるバージョンがインストールされることを確認できます。

    Copy code
    markupsafe==1.1.1

    次に、Lambda関数に必要な依存関係を更新するために、次のコマンドを実行します。

    pip install -r requirements.txt

    これにより、指定されたバージョンの「markupsafe」ライブラリがインストールされ、Lambda関数で使用できるようになります。この手順を実行することで、このエラーを解決することができます。

  • [ERROR] Runtime.ImportModuleError: Unable to import module ‘app’: cannot import name ‘escape’ from ‘jinja2’ (/var/task/jinja2/__init__.py)

    以下は、Jinja2 ライブラリのバージョンに互換性の問題がある場合に発生するエラーについての対処法についての説明です。

    Runtime.ImportModuleError エラーが発生した場合、Lambda 環境で使用される Jinja2 ライブラリのバージョンに互換性の問題がある可能性があります。この問題を解決するには、互換性のあるバージョンの Jinja2 を使用するように環境を構成する必要があります。

    まず、requirements.txt ファイルを確認して、Jinja2 のバージョンが明示的に指定されているかどうかを確認し、以下のようにバージョンを指定します。

    Copy code
    Jinja2==2.10.1

    次に、Lambda 関数にデプロイされる依存関係を更新し、Lambda 関数を再デプロイします。これにより、互換性のあるバージョンの Jinja2 がインストールされ、エラーが解消されるはずです。

    もし最新バージョンの Jinja2 を使用している場合、互換性の問題が発生する可能性があるため、古いバージョンを使用するか、コードを更新する必要があります。それでもエラーが解決しない場合は、Lambda 関数のログを確認し、原因を特定する必要があります。

  • [ERROR] Runtime.ImportModuleError: Unable to import module ‘app’: cannot import name ‘BaseRequest’ from ‘werkzeug.wrappers’ (/var/task/werkzeug/wrappers/__init__.py)

    Flask と Werkzeug ライブラリのバージョンに互換性の問題がある場合に発生するエラーについての対処法についての説明です。

    Flask==1.1.2
    Werkzeug==0.16.1

    次に、Lambda 関数にデプロイされる依存関係を更新し、Lambda 関数を再デプロイします。

    これにより、互換性のあるバージョンの Flask と Werkzeug がインストールされ、エラーが解消されるはずです。

     

    もし最新バージョンの Flask と Werkzeug を使用している場合、互換性の問題が発生する可能性があるため、古いバージョンを使用するか、コードを更新する必要があります。それでもエラーが解決しない場合は、Lambda 関数のログを確認し、原因を特定する必要があります。

     

  • Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考:書評

    Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考:書評

    開発者向けの書籍『Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考』を読みました。 本記事では、本書の要点と私の感想も交えてまとめていきます。   この本は初心者から経験豊富なエンジニアまで幅広い読者にとって有益ですが、現実の開発現場ではさまざまな要因が影響を与えるため、適切な判断と柔軟な対応が必要かと思います。  

    はじめに

    近年、ソフトウェア開発の現場では、品質の高いコードを書くことが求められています。 本書『Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考』は、開発者が品質の高いコードを書くための考え方や技術を網羅的に紹介しており、現場で直接活用できる内容が多く含まれています。

    章ごとの要点

    以下に、本書の各章ごとの要点をまとめます。

    第1章: 良いコードと悪いコードの基本的な考え方

    この章では、良いコードと悪いコードの定義やそれらを判断する基準について解説されています。 良いコードとは、可読性、保守性、拡張性が高く、効率的で堅牢なコードのことをこの本では指しています。 一方、悪いコードは、読みにくく、保守や拡張が困難で、パフォーマンスや安全性に問題があるということが特徴です。

    第2章: コード品質を向上させるためのプログラミング原則

    この章では、SOLID原則やDRY原則など、コード品質を向上させるためのプログラミング原則が紹介されています。 これらの原則を遵守することで、可読性や保ち続性、拡張性が高いコードを実現することができます。

    第3章: リファクタリングによるコード改善

    リファクタリングは、コードの構造を変更することなく、可読性や保守性を向上させる手法です。 この章では、リファクタリングの重要性や具体的な手法が紹介されており、Martin Fowlerの「リファクタリング」などの他の資料とも相互補完的な関係があります。

    第4章: チームでのコード品質向上

    チームでのコード品質向上のための取り組みとして、コードレビューやペアプログラミングが紹介されています。 また、コーディングスタイルの統一やドキュメントの整備など、チーム全体での品質向上に役立つアプローチも解説されています。

    第5章: テスト駆動開発と自動化

    この章では、テスト駆動開発(TDD)と自動化の重要性が説明されています。 TDDは、テストを先に書くことで、コードの品質と保守性を向上させる開発手法です。 また、自動化により、ビルドやテスト、デプロイの効率化が実現されます。  

    感想

    私の感想として、本書は非常に読みやすく、実践的な内容が多く含まれているので、ソフトウェアエンジニアにとって有益な1冊だと思います。 特に、SOLID原則やリファクタリングに関する部分は、現場で直接活用できる知識が豊富に紹介されていて、非常に役立ちます。 ただし、実際の開発現場ではさまざまな要因が影響を与えるため、本書の内容を鵜呑みにせず、適切な判断と柔軟な対応が必要です。 また、開発者は継続的な学習やスキルの向上を心がけることが重要であり、本書を参考にしつつ、自身の経験や状況に応じて最適な方法を見つけることが求められます。 ただし、以下の部分は気になりました。

    • 一部の章が他の資料と重複している: 本書の内容の一部は、他の書籍や資料と重複しているため、すでにそれらを読んでいる読者にとっては新規性が低い場合があります。
    • 初心者向けの内容が少ない: 本書は経験豊富なエンジニア向けの内容が多く、初心者にとっては難解である可能性があります。
    • 個々のケースに対する具体的な解説が不足している: 本書では、一般的な原則や技術が紹介されていますが、特定のケースに対する具体的な解説が不足しているところがあるように感じました。
    • 実践のしやすさに関する懸念: 本書では多くの実践的な指南が提供されていますが、これらをすぐに現場で実践することが容易でない場合もあります。例えば、既存のプロジェクトで多くの技術的負債がある場合や、組織の文化が変更に抵抗する場合などです。このような状況では、開発者は段階的に改善を進めることや、組織全体の意識改革を促すことが重要です。
    • 学習の効果に関する懸念: 本書を読むことで、多くの知識や技術を習得できる可能性がありますが、それらを継続的に練習し、実際の開発現場で活用できるようになるまでには、時間と努力が必要かと思います。開発者は、継続的な学習やスキルの向上を心がけるとともに、定期的に知識を見直し、新たな技術や手法を取り入れることが重要と感じました。

    まとめ

    『Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考』は、ソフトウェア開発者にとって有益な書籍であり、多くの実践的な知識や技術が紹介されています。ただし、実際の開発現場ではさまざまな要因が影響を与えるため、適切な判断と柔軟な対応が求められます。 最後に、開発者は本書を参考にしつつ、自身の経験や状況に応じて最適な方法を見つけることが重要です。組織全体で品質向上の取り組みを行い、継続的なスキルアップを目指すことで、持続可能な開発を実現できるのではないかと感じました。  

  • WARNING: The command completed successfully but no settings of ‘sumito.tsukada’ have been modified.

    概要

    powershell を叩いて以下のようなエラーが発生した

    WARNING: The command completed successfully but no settings of 'sumito.tsukada' have been modified.

    調査した結果

    この警告メッセージは、PowerShellで実行されたコマンドが正常に完了したものの、

    「sumito.tsukada」という設定が変更されなかったことを示しています。

    つまり、コマンドは実行されましたが、特定の設定の変更が実際には行われなかった、または変更する必要がなかったということのようです。

    調査した限り、このような状況は、以下のような場合に発生することがあります。

    1. コマンドが正しく実行されましたが、既に設定されている値と同じ値が指定されたため、実際には変更がなかった。
    2. コマンドが正しく実行されましたが、条件に一致する設定が見つからなかったため、変更が行われませんでした。
    3. コマンドが何らかの理由で適用されるべき設定を見逃してしまった。

    この警告メッセージに対処するには、コマンドを再確認し、正しい設定が適用されるように修正するか、

    既に適切な設定がされている場合は、この警告メッセージを無視しても問題ありません。

    ただし、期待した変更が正しく適用されているかどうかを確認するために、関連する設定やログをチェックすることが推奨されているようです。

  • 子どもと自分もラクになる「どならない練習」の要約

    概要

    本記事では、「子どもも自分もラクになる「どならない練習」」の内容を要約し解説します。

    この本は、親子関係をより良いものにするために、どのように声をかけ、どのように接するべきかを詳しく説明しています。

    どならない練習の重要性

    親子関係において、どならずに子どもとコミュニケーションすることは非常に重要です。

    どなることで、子どもは心を閉ざしてしまい、親子関係が悪化することがあります。

    どならない練習をすることで、子どもとのコミュニケーションがスムーズになり、親子関係が改善されます。

    親の感情のコントロール

    どならない練習の第一歩は、親自身の感情をコントロールすることです。

    怒りやイライラを抑える方法を身につけることで、子どもにどならずに接することができます。

    感情をコントロールする方法として、深呼吸や瞑想などのリラックス方法が効果的と本書では書かれています。

    子どもの気持ちを理解する

    どならない練習では、子どもの気持ちを理解することも重要です。

    子どもの感情や考えを尊重し、共感することで、子どもは安心感を得られます。また、子どもの気持ちを理解することで、親は適切な声かけや対応ができるようになります。

    効果的なコミュニケーション方法

    どならない練習では、効果的なコミュニケーション方法を身につけることが重要です。

    具体的には、以下の方法が挙げられます。

    • 伝えたいメッセージを明確にする
    • 子どもの目線に合わせる
    • 質問や意見をオープンにする
    • 聞く姿勢を大切にする
    • ほめることを意識する

    これらのコミュニケーション方法を実践することで、子どもとの関係をより良いものにすることができます。

    状況に応じた対応

    どならない練習では、状況に応じて適切な対応をすることも大切です。

    例えば、子どもが落ち込んでいるときや、困っているときには、共感や励ましの言葉をかけることが重要です。

    また、子どもが喜んでいるときや、達成感を感じているときには、その気持ちを共有し、一緒に喜ぶことが大切です。

    長期的な視点を持つ

    どならない練習を続けることで、親子関係は徐々に改善されます。

    しかし、短期間で劇的な変化を求めるのではなく、長期的な視点で取り組むことが重要です。そのためにも、自分自身の成長や子どもの成長を楽しむことが大切です。

     

    まとめ

    子どもも自分もラクになる「どならない練習」について整理してまとめました。

    どならずに子どもとコミュニケーションすることが、親子関係をより良いものにする鍵となります。

    親子関係をより良いものにするために、「どならない練習」を続けていくことが大切です。

    子どもとのコミュニケーションがスムーズになり、親子の絆を深めることができるでしょう。

    どならない練習を通じて、子どもとの信頼関係を築き、共に成長しましょう。

  • 自分でできる子に育つ: モンテッソーリ教育とレッジョ・エミリア教育のほめ方と叱り方

    概要

    モンテッソーリ教育とレッジョ・エミリア教育におけるほめ方と叱り方について、オックスフォード児童発達学博士の知見をもとに解説しています。

    3歳から12歳までの子どもたちを対象とし、自立した子どもを育てるための方法を学ぶことができます。

     

    モンテッソーリ教育のほめ方と叱り方

    モンテッソーリ教育では、子どもの自主性と独立性を重視します。

    ほめ方は、具体的で明確に行い、子どもの努力や成果に焦点を当てます。叱り方は、子どもの自尊心を傷つけず、問題の行動に対してのみ行います。

    レッジョ・エミリア教育のほめ方と叱り方

    レッジョ・エミリア教育では、子どもの創造性と表現力を重視します。

    ほめ方は、子どものアイデアや表現に対して評価を行い、独創性を称賛します。叱り方は、子どもに対して共感を示し、問題の行動に対して改善策を一緒に考えます。

    自立心を育てるための共通のポイント

    モンテッソーリ教育とレッジョ・エミリア教育の両方で、以下の共通点があります。

    • 子どもの意見や感情を尊重する
    • 自主性や創造性を重視する
    • 問題解決能力を育てるために、子どもが困難に直面した際にサポートを提供する
    • 成長過程において失敗を許容し、その経験から学ぶ機会を提供する

    親の役割とサポート方法

    親として、以下の方法で子どもをサポートするよう書かれています。

    • 子どもとのコミュニケーションを大切にし、感情や意見を共有する機会を持つ
    • 子どもの興味や才能を見つけ、それらを伸ばす環境を整える
    • 自分でできることを任せることで、自立心を育てる

    年齢別のほめ方と叱り方のポイント

    3-6歳: ほめ方は具体的な言葉で励まし、叱り方は簡潔で分かりやすくする。
    7-9歳: ほめ方は成長や努力を評価し、叱り方は問題行動に焦点を当て、改善策を提案する。
    10-12歳: ほめ方は子どもの意見やアイデアを評価し、叱り方は子どもと共に解決策を考える。

    まとめ

    モンテッソーリ教育とレッジョ・エミリア教育のほめ方と叱り方を学ぶことで、自立心を持つ子どもを育てることができます。

    親として、子どもの意見や感情を尊重し、自主性や創造性を奨励することが大切です。

    年齢に応じたほめ方と叱り方を適用することで、子どもの成長に適切に対応しましょう。