えいのうにっき

a-knowの日記です

「GDPRとかいろいろあるけど、それでも個人でWebサービス開発やっていこうよ」という話

前回のエントリ↓のつづき。

blog.a-know.me

Pixelaを作り、運用するにあたって、「今までやったことなかったけど、今回は絶対にやってみよう」と思っていたことがあって、それが「利用規約の整備」と「GDPRにちゃんと向き合うこと」だった。

なお、以下の文章は「ごく最近に "利用規約" というものに向き合い始めたばかりのド素人」が書いているものであり、その正確さ等については一切保証できません。が、「今回僕はこうやった」ということについて書いてあるため、もし誤解や不足、問題点などがあればぜひご指摘いただきたいです。プログラミングといっしょで、問題点をひとつずつ直していくことを通じて "安心して使ってもらえる・運用していけるWebサービス作り" を上達していきたい、という気持ちがあります。

なぜ取り組もうと思ったか?

僕はとにかく意識が低くて、GDPRが施行されるという今年の5月下旬頃になって初めて、GDPRというものの存在を認識した、という体たらくだったんだけど、そのときにその内容(というか概要)を知って、愕然としてしまった。

何に愕然としたかって、まずその適用されそうな範囲の広さと罰則の厳しさ。当時すでに2つのWebサービスを運用していた(しかも悪いことに(?)、カッコつけてどちらも英語で提供していた)こともあり、またGDPRに対する無知も手伝って、めちゃくちゃ焦ってしまった。で、以下のようなエントリを書いたりなどしてみたりした。

blog.a-know.me

そしたら今度は、インターネットが好きだからWebサービスづくりも好きなのに、今後はこんな "インターネット的じゃないこと" を自分の作ったWebサービスでやっていかなきゃいけないのか?、という自責の念みたいな感情が湧いてきてしまった。結局上記サービスは一度クローズすることにした(理由はGDPRのことだけじゃないけどね)。

  • そういう出来事があったこと
  • 最近ちょうど業務でも契約周りとかの仕事を扱うようになっていて「そういう文言」に対する心理的ハードルが少し下がっていたこと
  • 僕よりも全然若い学生の方が開発しているサービスでも、しっかりと利用規約が整備されているのとかを見たりしたこと

......といったことなどがあって、「次にやるときは!」という気持ちになっていたのであった。(既存のサービスに対して「利用規約だけを整備しよう」という気持ちにならないのは、ひとえに僕の性格の問題である。)

利用規約は「ユーザーに対するバリデーション」だなと思った

そんなわけで僕は生まれて初めて、「自分のつくったWebサービスの利用規約」を作ってみることになったんだけど、作りながらまず思ったのは、以下のようなことを明確にする記述が非常に多いな、ということ。

  • どういう人を"ユーザー"と認めるのか
  • "ユーザー"にはどういうことをすることが認められて、どういうことは認められていないか。認められていないことをおこなった場合、どういうことになる可能性があるのか。
  • それとは逆に、こちら(サービス提供者)は何をして、何をしないのか。何を約束して、責任範囲はどこからどこまでなのか。
  • "ユーザー"に対してこちら(サービス提供者)が期待していることはどういうことか

そして同時に、「なんかプログラミングとすごい似てるな」ということも感じた。特に、ユーザーからの入力に対するバリデーションを考えてるときの思考回路に近いかんじ。

利用規約って「アプリケーションの外にある物事、ユーザーに対するバリデーション」だなぁと。そう考えたら、規約を読み書きすることは、日常的にプログラミングをする人でもきっと向いているし、コードを書くのがうまい人はきっと規約を作るのも上手いんだろうな、と思ったりした。

Pixela でやったこと・まとめ

そろそろ本題に。ここから、「利用規約・GDPR対応絡みに関して、Pixelaでやったこと」について書いていく。

今回僕は、「これまで利用規約というものを作ることなくWebサービスの趣味開発をやってきたこと」に問題意識とコンプレックスを持っていたため、「利用規約を作ろう!」と思いたち、またGDPRのことがあったので「GDPRを意識した利用規約を作ろう!」というところを目指したのだけど、サービスを公開して少し経ってからようやく、 "プライバシーポリシー" というものの存在に気がついた(思い出した)。

多分ではあるが、個人情報保護法やGDPRへの対応を考えるならば、利用規約というよりはプライバシーポリシーの整備になるのかな?という気がしてきていることと、あと以下のような素晴らしい書籍が出ていることについても最近知ったので、今はもう割り切って、利用規約・プライバシーポリシーについては、今後しっかり "リファクタリング" していこう!と思っている次第。

なので、今回このブログでは「 "利用規約" をどのようにして作ったか」に終始するけれど、もしこのブログを見ているみなさんが「利用規約、作ってみるか!」という気になったのであれば、ぜひ "利用規約" と "プライバシーポリシー" とをそれぞれ作成してみることを検討してもらえたらな、と思う。

作成手順、方針

今回僕は、以下のような手順、方針で作成を進めていった。

  1. 利用規約のベースの選定
  2. 選定したベースに対して、加筆修正を加えていく
    • 「Pixelaというサービスを使ってもらうときに注意してほしいことは何か」「Pixelaを使ってくれるユーザーに対して、僕から約束できること・もしくはできないことは何か」といった観点で。
    • このとき、今自分が業務で関わっているプロダクトの利用規約参考に書いてあること・その観点を、大いに参考にした
      • 業務で関わっているぶん、「このプロダクトにおいて、こういうことは許容する」「こういうことはやって欲しくない」みたいなラインや実態について、自分の感覚として一番理解できているものだろう、と思ったから。
    • 文章の感じは、前後の雰囲気でなんとなく書いてみている。なので、「普通はこういう書き方しないよ」みたいなところはあるかも。
  3. そうしてできた利用規約に、GDPRへの対応を考慮した文言を書き加えていく
    • 上述のとおり、本来であればそれは "プライバシーポリシー" として別で作成するのがよかった?(ここらへんはまだよくわかってないです)
  4. ここまでの作業は全部日本語でおこなった。最後にそれを英語に翻訳した
    • 僕は今回は gengo という翻訳サービスを活用した

利用規約、別に誰にチェックしてもらえるわけでもなく、またコンパイラがエラーを吐いてくれたりするわけでもないので、「これでいいのかな......」という気持ちは終始あるし、拭いようがないんだけど、「それでも、何も書かないよりはマシなはず」という気持ちでガリガリ書いていった。

以降では、そうしてできた利用規約に、GDPRへの対応を考慮した文言を書き加えていく のところについてもう少し詳しく書いていく。

GDPRへの対応の記述をする際に参考にしたもの

いくら「GDPR対応、やるぞ!」と意識が高まっていたからといって、正直言ってGDPRの原本を読むほどの気力はなかったため、まず、以下のようなサイトを一通り熟読した。

また、先日開催の技術書典#5で、GDPR対応をテーマとした本も出されていたため、これもゲッツ。

techbookfest.org

ただ、最終的に一番参考になった(させていただいた)のは以下の2つの記事。

https://blog.craftz.dog/gdpr-a-practical-guide-for-developers-24f94f2fce34blog.craftz.dog

https://blog.craftz.dog/inkdrop-now-complies-with-gdpr-f51e68081f04blog.craftz.dog

ひとつめの記事で 主要な「すべきことリスト」 について、ふたつめの記事で 実際に対応してみて分かったことや注意点 についてが、それぞれ日本語で書かれている。ありがたい限り。

この2つの記事をベースに、「PixelaをGDPRに対応させるには?」という観点でチェックをおこない、記述を継ぎ足し、時にはアプリケーションを修正したりするなどした。

GDPRの概要の確認

まず、GDPRの概要として以下のような点を確認した。

  • サービスや会社の規模には依らない
  • 個人を特定できる情報の全てが対象になる
  • サーバーのロケーションは関係ない

つまり、これだけ見ると Pixela も対象になることになる。

また、サービス提供者サイドがやらなければいけないことの確認。

  • ユーザーがユーザー自身の手で、ユーザーの個人情報を閲覧・削除・エクスポートすることができること
    • アクセスログなどにも情報が記録されたりしないこと。Pixelaはいずれもクリアしている
  • 提供するサービスがバックグラウンドで利用している他のサービスなどからも同様に削除されること
    • Pixelaは GCP 以外のSaaSサービス等は利用してはいなかった
  • "管理者権限" みたいなものがある場合、管理者からのユーザーの個人情報へのアクセスも制限できるように
    • Pixelaでは該当する機能はなかった
  • プロフィールを自由に編集できること
    • Pixelaに "プロフィール" に該当するものはなし
  • データを送ることに、事前に明示的に許可を求めること
    • これは当初考慮できていなかったため、ユーザー登録APIに agreeTermsOfService という必須フィールドを設けた
    • また念の為、サイトへの Google Analytics の導入はおこなっていない。
  • 年齢確認をおこなうこと(ユーザが16歳未満の場合は親の同意が必要)。
    • これも当初考慮できていなかったため、ユーザー登録APIに notMinor という必須フィールドを設けた
  • 必要以上にデータを保持しないこと
    • PixelaというWebサービスとして必要最小限のデータを保持するつくりにしたことは去ることながら、
    • 「APIサービス」という形態とすることで、意図せずデータを取りすぎてしまうこともおこらないようにもした
  • クッキー
    • Pixelaではその取扱はなし。

こんな感じ。ここまででもう既に一仕事終えた感はある。w

そもそも「GDPR対象業者」なのかどうか?

と、この段階でそこかよ、という感じもあるかもだけど、「そもそも、Pixela のようなサービスを個人で開発・提供しようとする僕は、"GDPR対象業者" なのかどうか?」という点を考慮する必要がある。

Pixelaのサービス提供者(僕)は「日本で活動していてEUに拠点がない業者」ではあるが、上述の通り、GDPRはサービスや会社の規模に関係なく適用されるルールである。......ルールである、のだけど、https://blog.craftz.dog/inkdrop-now-complies-with-gdpr-f51e68081f04 にも以下のように書かれていて、

EUに拠点がない業者は “Article 3 Territorial scope”の域外適用の項目に該当します。これに関する日本語の解説は以下の記事が役に立つでしょう。

EU一般データ保護規則(GDPR)(第3回):域外適用(EUに拠点がない日本企業に適用される場合) | 弁護士法人 三宅法律事務所
以下のいずれかに該当すればGDPR対象業者とみなされます:

(a)EU 在住のデータ主体に対する商品・サービスの提供に関する処理。
(b)EU 域内で行われるデータ主体の行動の監視に関する処理。

GDPR対象業者の判断基準とプライバシーポリシーを書く際のポイントまとめ - https://blog.craftz.dog/inkdrop-now-complies-with-gdpr-f51e68081f04

GDPR対象業者とみなされる上記 (a)(b) に該当するかどうかについては、考慮してみてもよさそう。

(a) EU 在住のデータ主体に対する商品・サービスの提供に関する処理 に該当するかどうか

これは、どのような言語や通貨が使用されているか、EU域内の個人に関する言及があるか、商品やサービスの提供範囲等を考慮して判断 され、単に英語のウェブサイトを載せているだけでは適用されない。

Pixelaはそもそも無料サービスで、英語(利用規約については日本語も提供)でのサービス提供。広告も出していないのでEU向けの広告がでてしまうようなこともない。つまり、この項目には該当しない。

(b) EU 域内で行われるデータ主体の行動の監視に関する処理 に該当するかどうか

ユーザの行動履歴を収集しているかどうか? つまり、行動履歴を分析してパーソナライズされたり、リターゲティング広告を実施する目的での情報収集 といったことをすると対象となるが、Pixelaでは上記の目的で個人情報を取り扱ってもいないので、この項目には該当しない。

つまり、こちらがGDPR対応を意図して実施したあれこれの対策に仮に漏れがあったとしても、そもそもGDPRの対象業者とはみなされない、というわけだ。これには心底ホッとした。

ただ、だからといってここまでやったことを放り投げる気にもなれなかったので、その安心感を後ろ盾に、さらに作業を進めていった。上述の著者の方も、以下のようなことを書かれている。

サービスがGDPRに準拠していると言うことは一定のプライバシー保護基準を満たしていると言うことです。それはEUのみならず日本も含めたユーザの皆さんにとっても安心できるメリットがあります。

GDPR対象業者の判断基準とプライバシーポリシーを書く際のポイントまとめ - https://blog.craftz.dog/inkdrop-now-complies-with-gdpr-f51e68081f04

Data Protection Officer (DPO) の雇用義務について

GDPRは、対象業者にDPO(データ保護担当者)を任命するように義務付けています。要はプライバシーと法律の専門家を雇って業者の健全性を保つのが目的です。個人開発者にとって、この費用は甚大なものです。

GDPR対象業者の判断基準とプライバシーポリシーを書く際のポイントまとめ - https://blog.craftz.dog/inkdrop-now-complies-with-gdpr-f51e68081f04

とあります。GDPRは、対象業者にDPO(データ保護担当者)を任命するように義務付けているとのこと。

ただ、DPOの任命は全ての業者に義務付けられるものではなく、以下のような条件がある、とも。

  • 公的機関かどうか
  • 大規模に個人情報を収集して処理しているかどうか
  • 医療データや政治データを取り扱っているかどうか

もちろん、Pixelaは上記のいずれにも該当しない。

......ふぅ!これらのようなことを一通り考慮・対応をおこなって、「最低限、GDPRに対応している状態」にはなったことになる。ここからは、「そのことをユーザーに対して示す」対応について。

再三になるけど、「ユーザーに対して示すこと」を僕は利用規約でやろうとした(やった)わけだけど、本当は「プライバシーポリシー」のほうが良かったのかもしれないな、と思っている。

GDPRを意識して利用規約に盛り込んだ点

通常の「サービス利用規約」として作成した文書に対して、「GDPRを意識して利用規約に追加で盛り込んだ点」は、以下のような点。

何を、何のために収集するのか

PixelaはGAEを使っており、アクセスログ(IPアドレスやURL、UAなどを含む)は Stackdriver Log に自動的に記録されてしまう(し、記録しないことはそれはそれで問題がある)。またPixelaは、ユーザー自身が任意の情報を自ら登録することのできるサービスでもある。

そういった点を踏まえて、利用情報、登録情報について、どういうものが記録され得て、それはどういうときに使われる可能性があるのか、を明記した。また、情報の利用可能性として、当初盛り込んでいた 各ユーザーに最適化した情報を本サービス上に表示する場合 を削った。当初はこの記述を、「今はそういう機能はないけど、今後そういう機能を作ることができたら面白いかも」くらいの気持ちで記述していた。

いつどうやって収集するのか

上記の利用情報、登録情報がどういう場合に記録されるのかに加えて、Pixelaが能動的・暗黙的に取得している情報はないことも明記した

収集された情報に対する技術的措置はどうしているのか

Pixelaにおいては、唯一、認証用トークンが若干センシティブな情報に相当すると考えられる。が、それもハッシュ化した上で記録していること・ハッシュ化される前の文字列については記録されないこと、を明記した。

データの削除はどうなっているのか

利用情報(アクセスログ)については Stackdriver の仕様に左右されるので、正直にその旨を記載した。登録情報についても、ユーザーが削除操作をすることでサービスからは完全に削除される旨を記載した。

データがどこに保存されるのか・作業者はどの国にいるのか

これまじか、と思ったけど、GCPのリージョン情報を書いた。でもこれでいいのかな......。。

障害時などにログを確認したりする場合、その作業を行う者(僕)はどの国にいるのか、についても明記した。

どうやってユーザのデータにアクセスするのか

これは、使っているパブリッククラウドの管理機能を用いて、という形で明記した。

どのサードパーティサービスを使っているか

ここまで、GCPを使っていることは利用規約には明記しないままにしていたのだけど、どうやら書いておく必要があったみたいなので、「GCPを使っている」ことを明記した。

個人情報を機械的な判断に用いているかどうか

そういうことはやっていないので、「やっていない」ということを明記した。

ユーザが同意していない用途での情報利用をしないこと

利用用途を明記することで対応した。

不要なデータを登録フォームで受け取らない

APIサービスなので自明ではあるが、利用規約にもその旨を明記している。

こんなかんじだろうか。

そして公開

こんな感じで書いた日本語の利用規約を、上述の翻訳サービス・gengo などを活用して英語化。その両バージョンを、最初は gist で・公開後すぐに GitHub Wiki に、公開した。

GitHub Wiki にしておくことで、購読もしやすいし、なによりrevision(変更履歴)も残せる。もちろん僕にとっても「編集がしやすい」というメリットもある。

利用規約を作ってみて、意外だったこと

実際に利用規約を作ってみて、ちょっと意外に思ったことは、「わりと柔軟な書き方をしてもいいものっぽいんだな」ということ。例えば以下のような記述。

本規約は、日本語によるものを正本とします。他の言語による翻訳は、ユーザーの便宜のためにのみ提供されるものに過ぎず、ユーザーとサービス提供者の間で法的に拘束力を有するものは日本語版のみとします。

利用規約(Terms of Service Japanese Version) - https://github.com/a-know/Pixela/wiki/%E5%88%A9%E7%94%A8%E8%A6%8F%E7%B4%84%EF%BC%88Terms-of-Service-Japanese-Version%EF%BC%89

「人類が読むことができて」「それが誤解なく理解されることができる(いろんな受け取り方がされる余地がないこと)」みたいな表現ができればいいっぽいんだなー、と。もちろん、必要最小限の綺麗な書き方、みたいなのもあるとは思うけど、そういうところも含めて、やっぱりプログラミングっぽいな、と思いますね。w

GDPRとかいろいろあるけど、それでも個人でWebサービス開発、やっていきませんか

こういったこと諸々をやってみて、いま僕は、このエントリのタイトルにあるような、「GDPRとかいろいろあるけど、それでも個人でWebサービス開発、やっていこうよ」という気持ちになっている。そういった創作活動の場としてのインターネットが僕は大好きだし、やっぱり、「個人の、思い思いの考えや価値観を "Webサービス" という形で表現すること」が失われたインターネットなんて、イヤですよ。

GDPR、まぁ罰則はとんでもないけど、それが意図していることは基本的に間違ったことは言ってないと思うんですよね。インターネットがここまで広く、いろんな人に普及した以上、GDPRのような事柄を考慮してサービスを作り、提供することは、これからの時代避けては通れないということなんだなー、と。

そうしたとき、インターネットという開かれた世界を分断するような対処をするんじゃなく(そういう方法でやり過ごそうとしてしまったことについては申し訳なく思っている)、その趣旨を理解した上で最大限それに寄り添ったものを作ること、そして、それを周知し理解してもらった上で便利に楽しく使ってもらえるようなものを作っていくこと、というのが、「これからのインターネットを他の誰かと一緒に楽しんでいくために、新たに必要になったこと」なのかな、と思った。

GDPRなどを意識した、管理運営しやすいサービスを作ること、みたいなスキルも、今後評価されたりすることはありそうですね。ないかな。