開発者の仕事の多くは、一貫性と可用性、正しさとスピードなど、トレードオフの関係にあります。技術的には様々なトレードオフがあるでしょうが、開発者としては絶対にしてはいけないことがあると考えています。

その1つが、使いやすい開発環境です。新しい開発者をチームに迎え入れる場合でも、単に開発期間を短縮したい場合でも、どんなに小さなことでもスピードとシンプルさのために最適化されていることが重要です。

そのため、私たちはCloudflare Workers向けの第2世代の開発者ツールを発表することになりました。このツールは、すぐに使えて非常に高速で、ローカルマシン上でWorkersを実行することもできる、新しい開発者エクスペリエンスです。(やりました!)

すでに既存のツールに慣れ親しんでいる方には、wrangler CLIだけでなく、次のメジャーリリースであるwrangler 2.0の話です。この新しい体験を少しご覧いただきますので、お付き合いください。

コンフィグ無し?問題なし

Cloudflare Workerは、より簡単に使い始めることができます。ワーカーを実行するために必要なのは、1つのJavaScriptファイルだけで、設定は必要ありません。また、名前を決める必要もありません。

wrangler dev <filename>を実行すれば、コードは自動的にバンドルされ、開発環境にデプロイされます。すると、ローカルホストプロキシを使ってその環境へHTTPリクエストを送ることができます。これが実際の様子です。

ライブデバッグもこんなに簡単

さて、Workerのデバッグ機能が一新されました。簡単なコマンドでリモートデバッグ機能にアクセスします。これは、Chromeで「Inspect」をクリックしたときに使われるものと同じで、ログ、例外、リクエストをインタラクティブに表示します。Workerがローカルで動作しているように感じられますが、実際にはCloudflareのネットワーク上で動作しています。

「ただ動く」デバッガー、そして変更を自動検出するデバッガーは、ただコードを書こうとしているときに、大きな違いをもたらします。さらに、デバッグ作業をより簡単にするために、さまざまな改良が加えられています。

  • キーバインドによるショートカットで、機能の切り替えやウィンドウの表示を素早く行うことができます。
  • 静的資産を自動的に提供するための「--public <path>」をサポート。
  • より高速で信頼性の高いファイルウォッチング。

デバッグセッションを開始するには、`wrangler dev <filename>` を実行し、次に「D」キーバインドを押します。

ローカルモード?スイッチを切り換えるだけ

新しいデバッグ環境のもう一つの特徴は、ローカルマシン上でWorkerを実行する「ローカルモード」に切り替えられることです。実際、キーバインドショートカット1つで「ネットワーク」と「ローカル」のモード切り換えが簡単にできます。

どういった仕組みなのでしょうか。Cloudflareは最近、Node.jsでWorkerをローカルにエミュレートするプロジェクトMiniflareBrendan Collが作成)がCloudflare公式になったことを発表しました。Miniflareは、WorkersをNode.jsでローカルにエミュレートするプロジェクトで、単体テストやインターネット接続せずにWorkersをデバッグしたい場合に最適です。これをローカルの開発エクスペリエンスに直接統合したことにより、ネットワークとローカルホストの両方の利点を楽しむことができるようになりました。

ご感想をお聞かせください

サーバーレスはシンプルであるべきです。Cloudflareでは、Workersの開発環境の改善ができたことを本当に嬉しく思います。これからもさらに多くのことを計画しています。

wrangler 2.0はまだ開発中ですが、“npm install [email protected]”を実行するかリポジトリにアクセスしてベータ版をお試しいただけます。すでにwranglerを使って既存のアプリケーションをデプロイしている場合は、2.0のリリースが正式に発表されるまで、wrangler 1.0を使い続けることをお勧めします。wrangler 1.0 の開発とメンテナンスは、2.0 の後方互換性が完了するまで継続します。

これからプロジェクトを始める方や、新しいエクスペリエンスを試してみたい方は、ぜひご意見をお聞かせください。wrangler 2.0で足りないもの、見たいものを教えてください。機能リクエストを作成したり、リポジトリでディスカッションを始めることができます。(2.0のベータテストが終了後は、既存のwranglerリポジトリと合体させます。)

開発者の皆様に感謝します。皆様が今後開発されるものを楽しみにしています。