5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

NimAdvent Calendar 2019

Day 8

【Nim】とりあえずにむにむするための環境構築

Last updated at Posted at 2019-12-09

(ノ)・ω・(ヾ)ニムニム

🎉🎉遅刻しました🎉🎉
慌てて急いで書いた

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

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

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言語を触って見るぶんにはコスト低く初めれるんじゃないかと思います。

(ノ)・ω・(ヾ)ニムニム

5
3
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
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?