3
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Organization

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

はじめに

  • 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したいだけなのに面倒だなあ〜 とちょっぴりおもうようになってしまいました。記事をわかりやすくするために「面倒くさい」なんて書いてしまいましたが、言葉の綾です。 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
3
Help us understand the problem. What are the problem?