問題が解消するので、ハッピーです。レール乗っかっておくと非常に楽。言われることもあり、学習コストが低めで良いのではないか、というスタンス。ない技術選定をしても、だいたいそれらをどう保持するかという話になりそう。TODOPWA、キャッシュおまけ:環境変数とかyarnpipenv.envdirenvを使っている。リポジトリーに追加している。得られる環境変数をロードする。vol.105の特集「サーバレス」にJX通信社のメンバーとして寄稿いたしました。紙面の都合上、泣く泣く削った部分もあったりして、伝えきれなかったところがあります。上でもらった質問などもあるので、いくつか補足します。tech.jxpress.net紙面では「サーバレス」という表記で統一したのですが、以降は「サーバーレス」という表記を取ります。サーバーレス特集の意図サーバーレス特集で特に意識したのは、次の2つです。「実務でどうあるべきか」というのは、「サーバーレスで作る」といっても結局は「システム開発」である、ということです。システム開発であれば、当然チーム開発になりますし、ユニットテストだったり、ローカル環境の整備だったり、監視やCI/CDだったりが担保されている必要があります。システムとしては特定の環境に依存するべきではないです。サーバーレス特集は、そのあたりの観点を重要視して構成しています。(特に後半の章が関係してきます!)そして、Firebase特集がかぶってるという事情もありLambdaを題材にしてはいるのですが、「サーバーレスそのものの本質」というところを意識しています。Functions」でもなく、「クラウド」ですらなく、「サーバーレスそのもの」の話です。そのため、第一章では、クラウドではないオープンソースなサーバーレスについて触れています。「実務でどうするか」と「サーバーレス自体の本質」というのは、既存の入門書・入門記事にはないメリットを目指しています。そのため「すべてのユースケースに対応する1冊」ではないかもしれません。サーバーレスの本質とは何か「サーバーレスとは何か」を説明するのは、毎回悩むのですが、理論上は常駐プロセスが存在せず、リクエストに応じたキャパシティを必要なだけ柔軟に確保するものという定義が一番近いと考えています。クラウドである必要はなく、ただ、そういうアーキテクチャーで作ってればクラウドベンダーがPaaSを用意するのが必然的であるというだけです。環境としては「ただの使い捨てのLinux*1」です。実際のところは、サーバーレスには関連する技術領域があります。AppやIaaS->PaaS->BaaSの進化の果てでもあります。このあたりは話題として広くなってしまうため、深掘りできていない部分でした。サーバーレスやLambdaは具体的に何に使えるのかこちらはTwitterで質問をいただいたものです。答えとしては、処理が短時間で完了するものであれば、何でもできるとなります。「ただの使い捨てのLinux」だからです。Lambdaを使って機械学習することもできるし、Lambda上で(対応してない)ScalaやRustを動かすこともできます。APIだけじゃなくHTMLを返したりもできますし、ニュースの解析エンジンだったり、特集に書いたようなログ基盤もできます。現実的には、次の3つの用途が多いでしょう。寄稿した「ウェブサイトやデータベースの監視」というのが参考になると思います。employment.en-japan.comログ基盤の可視化こちらはさらっっっっっとだけ触れたのですが、Redashを使っています。クラスター上にデプロイしています。変動を監視しています。(ちなみに、すでに収まらなかったのでこの章は増ページしています)おわりにサーバーレス特集で伝えきれなかったところを書きました。読んでない方がいたら、お買い上げいただけたら幸いです。サーバーレス特集で伝えきれなかったことの補足Tweet広告を非表示にするもっと読むコメントを書く2018-06-15マスコミの方にも知ってほしい、仮想通貨とCoinhiveの話Coinhiveというスクリプトを設置していただけで逮捕されるという事件が起きていて、マスコミなどでも報道されています。www.sankei.comマスコミには読者の方に伝わるように伝えるというミッションがあるので、報道の表現が正しい・正しくないという話にはいろいろな立場があり、致し方ない部分があると思います。報道ベンチャーのメンバーの端くれとして、仮想通貨やCoinhiveの技術がなぜメディアにとって潰されるべきではないのか、Q&A風に伝えたいと思います。前半は仮想通貨に関する導入から入り、後半でCoinhiveの話をします。個人的なポリシーにより、以降は仮想通貨を”暗号通貨”と呼称します。報道機関の方に伝わることを目的としているため、もしかしたら厳密でない表現があること、ご容赦ください。報道機関やメディアの方で、何か不明点があれば、Twitterか会社のメールアドレスまでご連絡いただければ回答します(gmailはだいたい見逃すのですみません...)。“通貨”とは?暗号通貨の話をする前に、”通貨”の要件について考える必要があります。普及した通貨は、日本円のような現金です。現金は、誰かに手渡すことで購買の手段として使うことができます。1000円札を持っていれば、「小笠原は1000円札を持っている」と、国や周りの人が認めてくれます。銀行口座も、家賃を支払う手段として使えますし、口座に「1000円」と書いてあれば、やっぱり「小笠原は1000円を所持している」と認められます。持ってる1000円を別の誰かに送金することもできます。これもだいたい似たようなもので、楽天ポイントは楽天市場での支払いに使えます。1000pt持ってたら、(実質的に)1000円分持ってることになります。ポイントが失効しない限りは、突然ポイント残高が消失することもありません。ポイントの例を上げましたが、これらはいずれも「通貨のようなもの」でしょう。「通貨のようなもの」は、何かの決済手段として使えたり、誰かに送金できたりしたりできますし、消費しない限りにおいては残高が消滅することもありません。「1000円持ってるんだな」ということが保証されるものです。いった、「正しく送金の帳尻が計算できること」「正しく残高が保証されてること」「決済に使えるなど、日本円と融通できるような価値があること」が”通貨”にとっては大事なのです。逆に言うと、日本円とかドルとかユーロだけが通貨としての役割を果たせるわけではなく、先に挙げたような条件を満たせるものであれば、買い物券だろうと肩たたき券だろうと、通貨のようなものになれます。暗号通貨とは?暗号通貨は、先程あげた”通貨”の特徴を持ったものの1つです。特殊なポイントのようなもの、と言い換えてもいいでしょう。暗号通貨が特殊なのは、「誰が残高があることを保証するのか」という違いです。日本銀行券の場合は、日本銀行が保証してくれます。銀行の口座残高の正しさは、銀行が保証してくれます。Amazonのポイントは、Amazonが保証します。暗号通貨の場合は、「みんな」が保証します。銀行のような単一の信頼できる誰かが保証するのと違い、みんなで保証するのはとても大変です。そのため、技術的には暗号などに使われる要素技術が使われていて、「暗号通貨(Cryptocurrency)」などと呼ばれるのです。「みんな」で保証するのはとても難しいので、「マイニング」というプロセスで解決します*1。マイニングとは?マイニングとは、「みんな」で残高の正しさを保証するために必要な仕組みです。銀行の残高であれば、銀行のログに送金履歴が残ってるので、銀行の人が保証できます。「みんな」で保証する場合、みんなが好き勝手言えてしまうのです。そこで、「マイニング」に成功した人が言ったことが正しい、と「みんな」で認めるルールとします。「マイニング」とは、物凄く難しい計算問題をコンピューターに解かせることです。「マイニング」は答えを見つけるのは難しいのですが、答えが正しいことは簡単にわかるような問題なのです。「鉱山から金塊を見つけるのはとても難しいが、それが金塊であることは誰しもわかる」といった具合でしょうか。「金塊を持ってる人が言ったことを、10分間だけ信じよう」というルールになってます。マイニングをコンピューターにやらせるのは、計算コストがかかります。電気代がかかるということです。マイニングはボランティアでやるものではありません。代わりに「マイニングをすると儲かるよ!」という仕組みが暗号通貨には含まれているのです。「マネタイズ」という視点で見たときにマイニングが革命的なのは、「マイニングという、ただコンピュータープログラムを走らせること」がお金儲けに繋がるというロジックが生まれたことです。マイニングを、Webページの閲覧者に代わりにやらせる仕組みです。「自分が儲けるために、ユーザーのPCで実行する」ための仕組みです。聞くと「人のPCで勝手に金儲けしやがって」と思うかもしれませんが、それがビジネスです。ウェブ広告だって、99%の人に価値のないバナー画像や動画をダウンロードさせ続けることで、メディアは儲けられるのです。メディアが儲けられることで、読者に面白いと思ってもらえる体験を提供できるのです。読者の直接支払いだけでビジネスが成り立てばそんなに嬉しい話はないですが、現実は違います。Coinhiveは、広告に勝るメリットがあります。その一つは、ユーザーの個人情報を収集するインセンティブがないことです。ウェブ広告はユーザーの個人情報を集めるほどPV単価が高くなりますが、マイニングには個人情報は使えません。マイニングが広告に比べて悪質かどうかは、極めて微妙なラインです*2。「どれくらいCPUを使うか」を指定することができます。CPUを100%使うか10%しか使わないかは、各設置者が勝手に決めることなので、ダメージを与えない方法も可能なのです*3。Coinhiveはメディアに関係するのか?メディアにとっての一番の課題は「どうやって儲けるか」です。テレビだろうと新聞だろうとウェブメディアだろうと同じ問題です。Coinhiveは、サブスクリプションやウェブ広告に続く新しいマネタイズ手法になる可能性があります。記事をただ閲覧していることで収益が発生することです。そのような問題はありません。閲覧時間が長ければ長いほど儲かるので、閲覧時間というメディアの本質的なKPIと、収益性がリンクしています。現状そんなに儲かる手段ではない、ということは言っておく必要があるでしょう。設置者の逮捕が、メディアにとって問題なのか?「社会的に受け入れられてない」ことを理由に、既存の法律の拡大解釈の元にターゲットとされ、メディアのマネタイズ手法が刑事案件で潰されたり、民間企業によって「ウィルス」として定義されて潰されることが問題なのです。アウトブレインのようなレコメンドウィジェット広告と呼ばれる比較的新しい広告があります。これは、さすがに現実的ではない話です。「同意を得ていないのだから逮捕は当然だ」というのはそういう暴論なのです。広告のようにユーザーには見えず、“こっそり”やるから問題だ、という意見もあります。広告と違ってマイニングスクリプトが見えないのは、ブラウザーの実装の問題に過ぎません。ユーザーに見えないのは、2018年6月現在のブラウザーの実装の話です*4。ダウンロードされていることはブラウザーは知っていて、開発者ツールなどにはちゃんと表示されているのですが、ただわかりやすいところに可視化していないだけです。限った特殊なものではなく、ウェブサイトに一般的なものです*5。たしかに、ユーザーの理解を可能な限り得ることが理想です。しても広告にしても、ユーザーに説明した方がベターでしょう。いう説明を怠れば、「炎上」して、ユーザーに忌避されるでしょう。これは「動画広告」や「リタゲ広告」のような新しい広告と同様、ウィルスと認定して逮捕する話ではなくて、市場が決める話です。まとめ本稿は「マスコミの方に伝えたい」という思いで書きました。仮想通貨やCoinhiveのような新しい技術がどうやって社会やメディアビジネスに良いインパクトをもたらすか、というところで記事の執筆に役立てていただければ幸いです。*1:ビットコインやモネロに関してはこの通りなのですが、マイニング以外の方法もあります。PoSと呼ばれるような仕組みの暗号通貨です。Socket通信などでパケットを消費するものであり、長時間稼働させれば画像や動画以上にパケットを消費しうるものであるので不正確なため、表記を削除しました*3:もちろん、ユーザーのコンピューターを攻撃して破壊する目的で、100%のCPUを利用するのは問題があります。ブラウザーのタブを閉じることによって、ユーザーはプログラムの実行を終了することができます。読み込まれていることを検知することができます。ユーザーにはブラウザの選択肢があるのです。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。