14
5

More than 3 years have passed since last update.

Mix.install/2 で お手軽に依存ライブラリ(Hex) をインストールしてElixirプログラムをイゴかす

Last updated at Posted at 2021-04-15

はじめに

  • Elixir 楽しんでいますか:bangbang::bangbang::bangbang:
  • HTTPクライアントライブラリHTTPoison、すんごい速いJSONライブラリJason等、Elixirには便利なものがHexと呼ばれる形で提供されています
  • Hexを使う際にはこれまでは、mix new hello_worldって感じでプロジェクトを作って、mix.exsに依存関係を書いて、mix deps.getでインストールするという手順が必要です
  • これって面倒くさくないですか1
  • 朗報です
  • Mix.install/2というものが、Elixir 1.12から追加されます
  • これを使うことにより、ちょっとしたお試し用.exsファイルでお手軽にElixirプログラムをイゴかすことができます
  • 本記事は、2021/04/15(木)19:00 〜 21:00に開催されたOkazaKirin.beam #49での成果です
    • @pojiro さん、ありがとうございます!

Elixirをインストールする

ソースコードを書く!

awesome.exs
Mix.install([{:jason, "~> 1.2"}, {:httpoison, "~> 1.8"}])

"https://qiita.com/api/v2/items?query=elixir"
|> HTTPoison.get!()
|> Map.get(:body)
|> Jason.decode!()
|> Enum.map(& Map.take(&1, ["title", "url"]))
|> IO.inspect()

実行する

$ elixir awesome.exs 
[
  %{
    "title" => "Livebookを動かす (Elixir)",
    "url" => "https://qiita.com/torifukukaiou/items/3847c68293ed9b94ba2d"
  },
  %{
    "title" => "②Elixirユーザ認証ライブラリ「phx_gen_auth」の本番向け改造点:バリデーションのカスタマイズ",
    "url" => "https://qiita.com/piacerex/items/5f11e33db748830c7636"
  },
  %{
    "title" => "Nx,Axonで始めるゼロから作るディープラーニング  7章畳み込みニューラルネットワーク",
    "url" => "https://qiita.com/the_haigo/items/a4be7812b97bdddd6c1c"
  },
  %{
    "title" => "Elixirのコレクションとマップについて",
    "url" => "https://qiita.com/Gsann/items/82c1b41939d9319a0219"
  },
  %{
    "title" => "[javascript] ダブルタップでブラウザが拡大するのを防ぐ",
    "url" => "https://qiita.com/ELIXIR/items/1d007313c09489738e26"
  },
  %{
    "title" => "初心者(2年ぶり3度目)がブラウザ上からFirebaseにHello Worldをホストする",
    "url" => "https://qiita.com/ELIXIR/items/37d8a4139ec5d346e1ac"
  },
  %{
    "title" => "【毎日自動更新】Java開発者のためのAzure入門(2021/4/6–2021/5/9) LGTMランキング!",
    "url" => "https://qiita.com/torifukukaiou/items/9cfefb20ec347514576b"
  },
  %{
    "title" => "①Elixirユーザ認証ライブラリ「phx_gen_auth」の本番向け改造点:ユーザ登録時等のメール通知追加",
    "url" => "https://qiita.com/piacerex/items/35dc7ee8129b9a1deb9d"
  },
  %{
    "title" => "Elixir, Phoenix, LiveView & PubSubでリアルタイムにページ更新",
    "url" => "https://qiita.com/mnishiguchi/items/b528dccde6c531206eb9"
  },
  %{
    "title" => "PhoenixのAPIサーバー向け簡易トークン認証",
    "url" => "https://qiita.com/mnishiguchi/items/2a447f9138c5b61e1147"
  },
  %{
    "title" => "Elixir/PhoenixアプリをGitHub ActionsでGigalixirに継続的デプロイする",
    "url" => "https://qiita.com/mokichi/items/efe4e87763bfdf589d28"
  },
  %{
    "title" => "clubhouseを用いた画像の送受信",
    "url" => "https://qiita.com/ELIXIR/items/01e4a4336243c8195a6e"
  },
  %{
    "title" => "Microsoft Ignite Keynoteとtogetherしようぜ with Elixir",
    "url" => "https://qiita.com/torifukukaiou/items/64616a2999f8628a10ed"
  },
  %{
    "title" => "Nx,Exla GPUをdockerでビルドしbenchを回してみた",
    "url" => "https://qiita.com/the_haigo/items/d1d1b62bfb9fd2013c17"
  },
  %{
    "title" => "[Arduino]短間隔におけるdeep sleepの有効性",
    "url" => "https://qiita.com/ELIXIR/items/a38337ea83ddc318e8ad"
  },
  %{
    "title" => "Nxで始めるゼロから作るディープラーニング  Nx.Defn.Kernel.gradを読む",
    "url" => "https://qiita.com/the_haigo/items/593926922a1d72591c3d"
  },
  %{
    "title" => "PlatformIOでRaspberry Pi Pico を動かす(Windows,Arduinoフレームワーク)",
    "url" => "https://qiita.com/ELIXIR/items/8a7a24f6aa64972ec819"
  },
  %{
    "title" => "Phoenixで Error: Node Sass does not yet support your current environmentになった話",
    "url" => "https://qiita.com/daiki04752/items/208dc5e44ee6a0349368"
  },
  %{
    "title" => "Nxで始めるゼロから作るディープラーニング 5章誤差逆伝播法",
    "url" => "https://qiita.com/the_haigo/items/f273a9c687302507d79d"
  },
  %{
    "title" => "paiza.IO の API を優しく触ってみる",
    "url" => "https://qiita.com/Gart/items/9ed028ffecdbf9ecaf2a"
  }
]

Hexたちはどこにインストールされたの?

    installs_root =
      System.get_env("MIX_INSTALL_DIR") ||
        Path.join(Mix.Utils.mix_cache(), "installs")

Wrapping up :lgtm::lgtm::lgtm::lgtm:

  • Elixir 1.12の正式リリースが待ち遠しいですね
    • I can't wait.
  • Enjoy Elixir :bangbang::bangbang::bangbang:

  1. まあ、本格的に何かを作る時にはmix newするものなので、気にはしてなかったのですが、Mix.install/2なんてものがでると聞くと、ただちょっとHTTP GETしたいだけなのに面倒だなあ〜 とちょっぴりおもうようになってしまいました。記事をわかりやすくするために「面倒くさい」なんて書いてしまいましたが、言葉の綾です。 

14
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
5