Momento Elixir SDKがリリースされました
Introduction
現時点でもJavaScript、PHP、Rustなどいろいろな言語で使用できるMomemtoですが、
10個目のSDKとしてMomento Elixir SDKがリリースされました。
現在のところまだベータ版という扱いですが、
基本的な機能はひととおり使えるようになっています。
Elixir?
Elixirは、並行性・分散処理機能を持つ関数型プログラミング言語です。
Erlangで実装されているので、Erlang VM上で動作します。
その高い並行性と分散処理能力により、リアルタイム性が要求されるシステムや
複数のサーバーで処理を分散するようなネットワークアプリの開発に適しているといわれます。
また、スケーラビリティにも優れ、大規模なシステムで採用されている例もあります。
Environment
今回試した環境は以下のとおりです。
- MacBook Pro (13-inch, M1, 2020)
- OS : MacOS 13.0.1
ElixirのインストールはHomebrewを使います。
Setup
Momentoのセットアップ
まずはサンプル用のMomentoを準備します。
Momento Consoleをつかって
Momentoの認証トークンを取得し、MOMENTO_AUTH_TOKEN環境変数に設定しておきます。
あとで使用するキャッシュも適当な名前で作成しておきましょう。
% export MOMENTO_AUTH_TOKEN=<Momento 認証トークン>
Elixirのセットアップ
% brew install erlang % brew install elixir elixir --version Erlang/OTP 25 [erts-13.2.2.1] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [jit] [dtrace] Elixir 1.15.0 (compiled with Erlang/OTP 25)
Elixirがインストールできたので、次はHex(パッケージマネージャ)をインストールします。
Hexは、Elixirのプロジェクトで使用するライブラリやパッケージを管理するためのツールで、
nodeでいうnpmみたいなやつです。
↓のようにしてHexをインストール。
% mix local.hex Are you sure you want to install "https://builds.hex.pm/installs/1.14.0/hex-2.0.6.ez"? [Yn] Y * creating /・・・/.mix/archives/hex-2.0.6
次にプロジェクト作成。
mix new elixir_momento
生成されたmix.exsにMomento用ライブラリを追記しましょう。
ここをみるとtls_certificate_checkも
必要みたいなので書いておきます。
defp deps do [ {:gomomento, "~> 0.4.0"}, {:tls_certificate_check, "~> 1.19"} ] end
そしてlib/elixir_momnento.exにプログラムを記述します。
cache_nameにはさきほど作成したMomentoのキャッシュ名を設定しましょう。
alias Momento.CacheClient defmodule ElixirMomento do def run do cache_name = "<キャッシュ名>" config = %Momento.Config.Configuration{ transport_strategy: %Momento.Config.Transport.TransportStrategy{ grpc_config: %Momento.Config.Transport.GrpcConfiguration{ deadline_millis: 5000 } } } credential_provider = Momento.Auth.CredentialProvider.from_env_var!("MOMENTO_AUTH_TOKEN") default_ttl_seconds = 60.0 client = CacheClient.create!(config, credential_provider, default_ttl_seconds) case CacheClient.create_cache(client, cache_name) do {:ok, _} -> :ok :already_exists -> :ok {:error, error} -> raise error end {:ok, _} = CacheClient.set(client, cache_name, "foo", "bar") case CacheClient.get(client, cache_name, "foo") do {:hit, hit} -> IO.puts("Got value: #{hit.value}") :miss -> :ok {:error, error} -> raise error end end end
プログラムではキャッシュの作成(すでにあれば無視)と
キャッシュデータのset/getをしています。
プログラムの記述ができたら依存ライブラリのインストール、コンパイル、
プログラム実行をします。
% mix deps.get % mix compile % mix run -e ElixirMomento.run 16:47:03.203 [info] Loading 166 CA(s) from :otp store Got value: bar
他の言語と同じく、簡単にMomentoへのアクセスができました。
Summary
今回はElixir SDKをつかってMomentoへアクセスしてみました。
まだβ版ですが、今後他の機能も順次実装していく予定です。
Momentoは毎月50GBまでなら無料で使用可能なので、
ぜひこの機会に試してみてください。
なお、Momentoについてのお問い合わせはこちらです。
こちらもお気軽にお問い合わせください。