(ノ)・ω・(ヾ)ニムニム
🎉🎉遅刻しました🎉🎉
慌てて急いで書いた
Nim Advent Calendar 2019の8日目の記事です。
Nimが正式リリースされ、正直なところそれまで聞いたことなかったのですがせっかくなので触ってみたいと思いました。
しかし、環境構築めんどくさいなーと思ってたらDocker Hubに普通にあったのでそれを使ってとにかくNimを書いてみる為の環境を作っていきます。
Docker Hub
https://hub.docker.com/r/nimlang/nim
用意するもの
- パソコン(大事)
- git
- Docker
- Docker Compose
手順
$ git clone https://github.com/SUGURUHASEGAWA/nimnim.git
$ cd nimnim
$ docker-compose up -d --build
$ docker-compose exec app nimble init
はい終わりです。
これでNimプロジェクトと初期コードが生成されるので思う存分にむにむしてください。
解説
流石にこれだけではアレなので少しだけ解説していきます。
docker-compose.yml
version: "3.7"
services:
app:
build:
context: ./docker/nim
dockerfile: Dockerfile
tty: true //常時起動させたい
privileged: true
volumes:
- ./workspace:/opt/${PROJECT_NAME}
working_dir: /opt/${PROJECT_NAME}
ほぼおまじないレベルの記述ですPROJECT_NAME
は.env
ファイルに定義されているので好きな名前に書き換えてください。
Dockerfile
FROM nimlang/nim:latest
RUN apt-get update && apt-get install -y \
vim \
curl \
mingw-w64
これもほぼおまじないですね、
Docker Hubにあるコンテナのlatestバージョンを指定していますが、このVerはお好みで変えてください。
また、mingw-w64
はWindows向けにクロスコンパイルするためにインストールしていますが、今回はとりあえず言語にふれるまでなので割愛します。
まだクロスコンパイルをちゃんとやってない
クロスコンパイルについては下記ページを参照するといいかも?
https://nim-lang.org/docs/nimc.html
nimble init
コンテナを起動したら、コンテナ上でnimble init
を実行してnimのプロジェクトを作成します。
実行すると対話形式でいくつか質問されるのでお好みで設定してください。(基本的に後からでも編集できます)
質問内容
Your name? [Anonymous]
自分の名前を入力。
※未入力の場合はAnonymous
になります。
Package type?
Library・・・別アプリケーションに機能を提供するライブラリを作成する場合
Binary・・・エンドユーザ向けのアプリケーションを作成する場合
Hybrid・・・未確認
Initial version of package? [0.1.0]
初期Verを設定します
※未入力の場合は0.1.0
Package description? [A new awesome nimble package]
パッケージの説明を入力。
Prompt: Package License?
パッケージのライセンスを選択。
MIT等いくつか選択肢が出てくるのでお好みのものを
Hello, World!
※Package typeでBinaryを選択したものとします
workspace配下のsrcディレクトリ内にあるnimファイルを見てみると以下の様に記述されています
# This is just an example to get you started. A typical binary package
# uses this file as the main entry point of the application.
when isMainModule:
echo("Hello, World!")
既にこんにちはしてくれているので、ありがたくこれを使わせてもらいましょう。
※編集する際はこのファイルを基準に記述してください
プロジェクトにビルドは下記コマンドを実行してください
docker-compose exec app nimble build
コマンドを実行すると、workspace配下にバイナリファイルができているので、実行すると無事こんにちはできます
$ ./nimnim
Hello, World!
あとがき
Nimの環境構築は正直Dockerを使わなくてもそこまで難しい手順はありませんが、
最近個人的に使用するPCがコロコロ変わるので、いちいちNimをインストールするのが手間だったので、Dockerでの環境構築をしてみました。
(コンテナ持ってきて起動してるだけなので構築と言っていいものか)
クロスコンパイルはよく分からなくて手つかずですが、とりあえずNim言語を触って見るぶんにはコスト低く初めれるんじゃないかと思います。
(ノ)・ω・(ヾ)ニムニム