Programming languages

Create an Item

Items

Latest comments

Emailアドレスとして適切かどうかのチェックに使えるURI::MailTo::EMAIL_REGEXP

wakairo @wakairo
Last edited

rubyの標準添付ライブラリであるuriに存在しているURI::MailTo::EMAIL_REGEXPは、 ある文字列が規格上Emailアドレスとして適切かどうかのチェックに以下のように利用できます。

irb(main):001> require 'uri'
=> true
irb(main):002> URI::MailTo::EMAIL_REGEXP
=> /\A[a-zA-Z0-9.!\#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*\z/
irb(main):003> URI::MailTo::EMAIL_REGEXP.match?('[email protected]')
=> true
irb(main):004> URI::MailTo::EMAIL_REGEXP.match?('[email protected]')
=> false
irb(main):005> URI::MailTo::EMAIL_REGEXP.match?('[email protected]')
=> false

Railsガイドでも、 このEMAIL_REGEXPを用いてemailのバリデーションを行う方法を以下のように紹介しています。

validates :email, format: { with: URI::MailTo::EMAIL_REGEXP }

URI::MailTo::EMAIL_REGEXPを使うメリット

TechRachoの記事によると、URI::MailTo::EMAIL_REGEXPの正規表現はHTML規格書から持ってきているため、 URI::MailTo::EMAIL_REGEXPを使ったバリデーションはブラウザがinput type="email"で行うバリデーションと一致するというメリットがあります。

余談

URI::MailTo::EMAIL_REGEXPは、 Rubyリファレンスマニュアルにも Ruby標準ライブラリリファレンスにも、実は記載されていません。 ですので、URI::MailTo::EMAIL_REGEXPを利用するのは少々裏技的な側面があるのかもしれません。 ただ、上述の通り、Railsガイドや記事で取り上げられるぐらいに認知されていますので、利用しても大丈夫なのではないかと思います。

0
Raw
https://www.techtips.page/en/comments/331
😄1
🔧1
💡1

Pythonライブラリの作成に関する公式情報

kenicode SatoKen @kenicode

pyproject.toml[build-system]の指定が、サンプルプロジェクトではsetuptoolsである一方、チュートリアルではデフォルト扱いがhatchlingになっていて、両者で違いがあって興味深いですね。 公式(PyPA)としては、setuptoolsがまだまだ現役であることを認めつつ、今後はhatchlingを推していきたいということなのかな?

0
Raw
https://www.techtips.page/en/comments/300

Pythonライブラリの作成に関する公式情報

wakairo @wakairo
Last edited

なるほど、Pythonのパッケージングに関して、公式情報に相当する情報があるのですね。勉強になります。

それから、言及されているチュートリアルとサンプルプロジェクトのどちらも設定を書くのがsetup.pyではなくpyproject.tomlなのですね。 自分でも少し調べてみたのですが、python.orgにあるガイドには、「(パッケージングの設定には)pyproject.tomlファイルを使うのが標準的な慣習です。」と書いてあり、Zennの記事でも「現在でも歴史的経緯から setup.py のみで設定を行っているプロジェクトは多く存在しますが、このような構成は現在では非推奨」、「setup.pyを設定ファイルの一部として用いる場合であってもpyproject.tomlは配置するのが現在の標準的なセットアップ方法」と書いてある記事を見つけました。

どうやら、Pythonパッケージにはpyproject.tomlを用意すべし、pyproject.tomlを起点にしてPythonパッケージをビルドすべし、というのが公式見解のようですね。コマンドラインからsetup.pyを直接実行するやり方はlegacy、つまり、廃止予定とのことですし。

0
Raw
https://www.techtips.page/en/comments/299
🙋1

Pythonライブラリの作成に関する公式情報

takuma_tech Takuma @takuma_tech

Pythonのライブラリを自作するときに、フォルダ構成や設定ファイルの書き方について知りたくなることがあります。ライブラリを公開するかどうかやどの程度きっちり作るかなど状況は様々だと思いますが、ソフトウェアの規模が大きいときやあちこちから呼び出す関数を整備するときなどに、ライブラリやライブラリに準じるものを作成することはよくあることだと思います。そういうときにどういう作り方が行儀の良いやり方なのかを探していて見つけた情報が以下のものです。

Python公式サイトのパッケージングに関するチュートリアル

https://packaging.python.org/ja/latest/tutorials/packaging-projects/

Pythonの公式サイトである「python.org」に置いてある文書ですので、信頼できる情報なのだと思います。

PyPAのサンプルプロジェクト

https://github.com/pypa/sampleproject

Pythonでのパッケージングに関するとりまとめを行っている組織であるPyPAが出しているサンプルですので、信頼できるのではないかと思います。

0
Raw
https://www.techtips.page/en/comments/298
🔧1

__init__.pyの解説記事

takuma_tech Takuma @takuma_tech
Last edited

__init__.pyとモジュール・パッケージ・名前空間の関係について、以下の記事が分かりやすかったです。単に「こう書けば動く」ではなく、概念が説明されていてありがたいです。

0
Raw
https://www.techtips.page/en/comments/290
🔧1
❤️1