MENU
  • ホーム
  • プログラミング
  • ワードプレス
    • プラグインプラグイン関連記事
    • 賢威賢威のカスタマイズ
    • CSSCSSの関連記事
  • サイト情報
    • プライバシーポリシー
  • ツール
    • メルエディター
    • フリマスパイダー – 疾風
    • フリマスパイダー
    • -ポイ活くんα-
  • お問い合わせ
あらゆるモノにHackする、探究者の読み物。
Let's Hack Tech
  • ホーム
  • プログラミング
  • ワードプレス
    • プラグインプラグイン関連記事
    • 賢威賢威のカスタマイズ
    • CSSCSSの関連記事
  • サイト情報
    • プライバシーポリシー
  • ツール
    • メルエディター
    • フリマスパイダー – 疾風
    • フリマスパイダー
    • -ポイ活くんα-
  • お問い合わせ
Let's Hack Tech
  • ホーム
  • プログラミング
  • ワードプレス
    • プラグインプラグイン関連記事
    • 賢威賢威のカスタマイズ
    • CSSCSSの関連記事
  • サイト情報
    • プライバシーポリシー
  • ツール
    • メルエディター
    • フリマスパイダー – 疾風
    • フリマスパイダー
    • -ポイ活くんα-
  • お問い合わせ
  1. ホーム
  2. プログラミング
  3. 言語別
  4. JavaScript
  5. Cloudflare Workersが面白すぎる件

Cloudflare Workersが面白すぎる件

2021 2/18
コラム JavaScript
2021-02-18
Cloudflare_logo3
目次

Cloudflareって?

そもそもCloudflareって何?って方はWeb触ってる方なら少ないと思いますが、一応知らない方のために軽く解説しておくと、ネット上のサービスを提供している会社の名前です。

どんなサービスかというと、有名なのであればCDNやWebサイトのリバースプロキシとしてのサービスが有名です。

悪名高い著作権ガン無視サイト「漫画村」なんかの画像もクラウドフレアにホスティングされていたことでスッタモンダありましたね。

というと、ダーティなイメージに聞こえてしまうかもしれませんが、本質的には全くそんなことなくて、むしろどっちかというと僕の印象としては「雑魚からはお金とならないよっ!」ってスタンスの超太っ腹企業です。

無料で各種サービス使わせてくれる枠がデカイ!

じゃWorkersって?

Workersというのはそのクラウドフレアが提供しているサーバーレスアーキテクチャです。

じゃあサーバーレスってって何よって話になってくると大変なんですが、簡単にいうと、要求があったときにだけオンデマンドで対応するサーバーみたいなもんです。

従来のサーバーはいつ要求が来るか分からないので、24時間稼働でつけっぱなしておくってイメージです。

実際にはサーバーレスといいつつホスティングしているわけですからサーバー自体は存在するんですが「誰からみて」サーバーレスかって話なんです。

構築する人がサーバーであることを意識する必要がなく、従来のサーバー型のWebホスティングと比較して拡張性が高くスケーリングしやすいのが特徴として挙げられます。

AmazonのAWSでいうところのLambdaとAPIゲートウェイの組み合わせに相当します。

CloudflareのWorkersとAmazonのLambda

似たような両サービスですがどっちとも使ってみた感想を比較していきます。

言語

利用できる言語ですが、前提としてWorkersはJavaScriptが完全なベース言語となっています。

Workers

  • JavaScript
  • TypeScript
  • C
  • Cobol
  • Rust
  • Python
  • PHP
  • Dart
  • Kotlin
  • Scala
  • Reason/OCaml
  • Perl
  • FSharp

コンパイル言語であるCやCoblはWebAssemblyを、その他のスクリプト言語は各言語で対応しているJavaScriptへの変換モジュールを使って動作を実現させるようです。

ですので、実際に走っているのはあくまでJavaScriptっていうイメージ。

Lambda

  • Java
  • Go
  • PowerShell
  • Node.js
  • C#
  • Python
  • Ruby 

Workersに対してLambdaは何かしらの言語に変換されるわけではなく、ネイティブにこれらの言語が走ります。

比較すると対応言語が少ないように感じますが、Runtime APIを通じてその他の言語も利用することが可能です。

どっちがいいのって話ですが、言語の対応って意味ではLambdaの方がいいです。

なんでかというと、Workersはあくまで各言語が「変換」されたJavaScriptが走るってのがキモで、そもそも上手く変換できないってことも多々あります。

試しにWorkersでPythonでやってみたんですが、IDEで補完効かないわドキュメント少ないわでモジュールのインポートするだけでもクッソ時間かかりました。

それだったら別に生のJavaScriptで書くわ、ってくらいには色々めんどくさかったです。

速度

ここが一番Workersがいいなと思った点だったのですが、とりあえず早いです。

Lambda+APIゲートウェイと比較すると控えめに言ってWorkers爆速です。

これ何でかっていうと、リージョンとかエッジとかそういう話ではなく、言語の項でデメリットとしてあげた「絶対にJavaScriptが走る」っていう点が関係していそうです。

Lambdaは関数実行時にそれぞれネイティブな言語が走るため「実行するための環境」を作るための予備動作的なものが発生します。

これを「コールドスタート」といいます。

一度関数が実行されると、次に実行するときには前回実行した環境が適用されるので多少遅延が緩和されますがこの状態を「ウォームスタート」というようです。

あったまってきたら早いってことです。が、しばらく実行されないと、前に実行した状態を忘れてしまう。というのがLambdaの仕様の様です。

Pythonが一番コールドスタートが軽く、Javaが一番重いっていうベンチマークをどっかでみた気がします。

多分、実行環境の生成自体も重いでしょうし、加えてコンパイルとかも上乗せになってるからでしょうね。

対してWorkersはコールドスタートが存在しない。これがデカイ。

データベース

Workersには専用のKVというシステムがあって、JavaScriptのObject的な保存ができる仕組みがあります。無償利用だと一日1000書き込みという比較的強めの制約がありますので用途によってはネックになってくるかもしれませんが。読み出しは見る限り無制限です。

Lambdaの場合はDynamoDBやRDS、S3なんかと連携してストレージしてく感じですね。

この辺の拡張性、自由度はLambdaの方が高そうです。

作りやすさ

これに関してはあくまでWebに公開する何かを作るっていう前提ですが、Workersが作りやすいです。

ベタ書きのJS一枚で動作するっていうお手軽感と、書いた瞬間に何も考えずデプロイしたらもう走るっていう速さがいい。

LambdaはWebで走らそうとしたらAPIゲートウェイの設定入ってきてちょっとめんどいですが(それでもかなり楽ですが)、そんなことすら考えなくていい仕様。

定期実行的な、バッチ処理的なことをするならあんまり変わらないかもしれませんが、ことWebにデプロイってことを考えるとWorkersが楽です。

あとはJavaScriptってのもいいですね。Webに携わってさえいれば比較的とっつきやすい人の方が大多数かと思います。

いくつかの関数の仕様がブラウザネイティブの仕様とは違うみたいですが、まぁ誤差の範囲的なあれです。

5分で作るWorkers ”Hello World”

ここからアカウント作成。

すでにサイトとか登録しててCloudflareのアカウントがあるなら管理コンソールにWorkersのタブがあると思いますのでそこからでもOK。

Workersを作成ボタンを押したら

こんな感じの簡易編集画面に行きます。

すでにHello World用のスクリプトが入ってますので、そのまま何も考えずエディタ下部にある「保存してデプロイする」ってボタンを押します。

そしたら赤枠で囲ったところにデプロイ先のURLが表示されますので、アクセスするともうデプロイされています。

はやっ!はやすぎる!

脳死でやっても5分あればデプロイできます。

Workersまとめ

Lambdaと比較して一長一短もちろんあるのですが、相当とっつきやすいサービスであることは伝わったと思います。

レストフルなAPIなんかも非常に作りやすい仕様になってるので興味ある方はチャレンジしてみてください。

コラム JavaScript
Cloudflare JavaScript Workers サーバーレス
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする コメントをキャンセル

email confirm*

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

シンプル美と機能性を両立させた、国内最高峰のWordPressテーマ『SWELL』
人気記事
  • IQテストいくつか受けてみました
    ネット上で信憑性がありそうなIQテスト、5種類まとめて受けた結果…
  • hayate
    メルカリの商品を世界最速で購入するためだけのアラートツール
  • 【Python】BeautifulSoupの使い方・基本メソッド一覧|スクレイピング
  • Pythonファイルのexe化
    【悲報】PyInstallerさん、300MBのexeファイルを吐き出すようになる
  • Amazon Echo アレクサのコマンドまとめ
    AmazonEchoの使い方とできる事、アレクサへの指示コマンド一覧
最近の投稿
  • 正規表現処理の濁点でハマった話2024-12-12
  • 保護中: 疾風v2更新履歴2024-05-31
  • 【自営・経営者向け・税金も】クレジットカードガチ勢による最強クレカ解説2023-10-23
  • PyQt5 QListWidget の item削除でtextBoxのフォーカスが奪われる2023-03-05
  • WordPressからのメールが届かない時の調査と解決法2023-02-27
目次
目次