Slide 1

Slide 1 text

© Morisawa Inc. SES から SendGrid に変更したけど移行で問題が出た話 〜メールアドレスに日本語が使える?〜 株式会社モリサワ システム開発部門 小室 貴史

Slide 2

Slide 2 text

© Morisawa Inc. アジェンダ 1 • 自己紹介 • 株式会社モリサワと Morisawa Fonts の紹介 • Backend アーキテクチャの紹介と SendGrid 移行 • メールアドレスの RFC と国際化対応について • メールアドレスのバリデーション • まとめ

Slide 3

Slide 3 text

© Morisawa Inc. 自己紹介 名前:小室 貴史 所属:株式会社モリサワ システム開発部門 シニアテックマネージャー 仕事:テックリード、 インフラエンジニア 好きな Amazon Web Services サービス: CloudFormation 趣味:バイク 2 サーキットで YZF-R1 に跨る本人

Slide 4

Slide 4 text

© Morisawa Inc. 3

Slide 5

Slide 5 text

© Morisawa Inc. フォント販売方法も変革 物理媒体からクラウドへ 4 2005年 MORISAWA PASSPORT パッケージ サブスクリプション 2002年 OpenTypeフォント パッケージ 売り切り 2022年 Morisawa Fonts クラウド サブスクリプション

Slide 6

Slide 6 text

© Morisawa Inc. 5 © Morisawa Inc. Backend アーキテクチャ

Slide 7

Slide 7 text

© Morisawa Inc. Backend アーキテクチャ(SES 利用時代) 6 AWS Fargate で GraphQL サーバーを稼働 AWS Cloud ユーザー Amazon Route 53 Elastic Load Balancing AWS WAF Amazon Aurora Amazon DynamoDB Amazon CloudWatch Alarm Logs Amazon Simple Noti?cation Service (Amazon SNS) AWS Chatbot AWS CodeBuild AWS CodePipeline Amazon Elastic Container Registry (Amazon ECR) AWS Fargate Amazon SES Slack ※主要なサービスのみ記載しております

Slide 8

Slide 8 text

© Morisawa Inc. Backend アーキテクチャ(SES 利用時代) 7 当初 Amazon SES でメールを送信 AWS Cloud ユーザー Amazon Route 53 Elastic Load Balancing AWS WAF Amazon Aurora Amazon DynamoDB Amazon CloudWatch Alarm Logs Amazon Simple Noti?cation Service (Amazon SNS) AWS Chatbot AWS CodeBuild AWS CodePipeline Amazon Elastic Container Registry (Amazon ECR) AWS Fargate Amazon SES Slack ※主要なサービスのみ記載しております

Slide 9

Slide 9 text

© Morisawa Inc. Backend アーキテクチャ 8 その後、SendGrid へ移行しました AWS Cloud ユーザー ※主要なサービスのみ記載しております Amazon Route 53 Elastic Load Balancing AWS WAF Amazon Aurora Amazon DynamoDB Amazon CloudWatch Alarm Logs Amazon Simple Noti?cation Service (Amazon SNS) AWS Chatbot AWS CodeBuild AWS CodePipeline Amazon Elastic Container Registry (Amazon ECR) AWS Fargate Slack SendGrid

Slide 10

Slide 10 text

© Morisawa Inc. Amazon SES のバウンス率が急上昇 〜Amazon SES を止めてしまった日〜 9 SES を SendGrid に移行しました https://speakerdeck.com/tomuro/amazon-ses-nobaunsulu-gaji-shang-sheng-amazon-ses-wozhi-metesimatutari 3K View 超えて人気

Slide 11

Slide 11 text

© Morisawa Inc. 10 © Morisawa Inc. ここで質問 メールアドレスに日本語は使えますか?

Slide 12

Slide 12 text

© Morisawa Inc. Backend アーキテクチャ 11 SendGrid では日本語メールアドレスが使えませんでした AWS Cloud ユーザー ※主要なサービスのみ記載しております Amazon Route 53 Elastic Load Balancing AWS WAF Amazon Aurora Amazon DynamoDB Amazon CloudWatch Alarm Logs Amazon Simple Noti?cation Service (Amazon SNS) AWS Chatbot AWS CodeBuild AWS CodePipeline Amazon Elastic Container Registry (Amazon ECR) AWS Fargate Slack SendGrid

Slide 13

Slide 13 text

© Morisawa Inc. メールアドレスの基本となる RFC • RFC5321 Simple Mail Transfer Protocol(SMTP) • RFC5322 Internet Message Format • メールアドレスに使用できる文字が定義されている • 使える文字は ASCII が基本 • RFC は読むのが大変なので Wikipedia を見てみると… 12 RFC5321 と RFC5322

Slide 14

Slide 14 text

© Morisawa Inc. メールアドレスのWikipedia 13 「ASCII 文字である」と書かれている https://ja.wikipedia.org/wiki/メールアドレス

Slide 15

Slide 15 text

© Morisawa Inc. メールアドレスのWikipedia 14 「正確性に疑問」と注意が出ている https://ja.wikipedia.org/wiki/メールアドレス メールアドレスの国際化対応とは?

Slide 16

Slide 16 text

© Morisawa Inc. メールアドレスの国際化対応 RFC • RFC6531 SMTP Extension for Internationalized Email • RFC6532 Internationalized Email Headers • RFC5321 と RFC5322 の国際化対応がされている • ざっくり言うと UTF-8 がサポートされた 15 RFC6531 と RFC6532

Slide 17

Slide 17 text

© Morisawa Inc. 16 © Morisawa Inc. それってなんでもありになるのでは?

Slide 18

Slide 18 text

© Morisawa Inc. Email バリデーションの正規表現 (Go言語のライブラリ) 17 https://github.com/go-playground/validator/blob/5bf55dc757cad229e8297d42640ec036e2360df7/regexes.go

Slide 19

Slide 19 text

© Morisawa Inc. Email バリデーションの正規表現 (Go言語のライブラリ) 18 https://github.com/go-playground/validator/blob/5bf55dc757cad229e8297d42640ec036e2360df7/regexes.go @のチェック サロゲートペア使ってないか? Not a character 使ってないか? @の存在や、Unicode で未定義の文字がないか、 などをチェックしていることなどが確認できる

Slide 20

Slide 20 text

© Morisawa Inc. 19 © Morisawa Inc. まとめ

Slide 21

Slide 21 text

© Morisawa Inc. まとめ 20 • メールアドレスには日本語も使える • 未対応のプロバイダーやサービスに注意 • Amazon SES は国際化対応済み • ASCII 外の符号も使える • 日本語を含むメールアドレスの送信が可能 • SendGrid は国際化非対応? • 国際化対応に関する記載は見つけられなかった • 日本語を含むメールアドレスは送信できなかった • メールアドレスのバリデーションは OSS など活用すべき • 自分で書くのはかなり大変

Slide 22

Slide 22 text

© Morisawa Inc. 正規ユーザーで日本語メールアドレスを使っている人は 運良くいなかったため問題にはなりませんでした。 メールアドレスの国際化対応の必要性は考えておきましょう。 採用情報はこちら https://www.morisawa.co.jp/about/recruit/