ぬうぱんの備忘録

技術系のメモとかいろいろ

作った曲一覧はこちら

2020年のナウいビルドツール

この記事は

  • Linux 環境で使えるナウいビルドツールをまとめた記事です
  • 比較のためにナウくないのも列挙してます

ビルドツール

GNU make

  • 最もベーシックで人間にも優しい
  • プロジェクト規模がデカくなるととにかく重たい
  • ちょっと変なことをしようと思うととたんにうまくいかなくなって悲しい

ninja

  • make の置き換えと言うポジション
  • 何でもかんでも明示的に書くと言う考え方
  • メタビルドツールから触ることを前提にしていて人間に対する当たりが強い

bazel

  • GNU make の代替というポジション
  • 言語ごとに最適化されたプリセットを選んで必要な項目だけを埋める感じのビルドツール
  • 中で何が起きているかわからないのでトラブった時にしんどい?

メタビルドツール

autotools

  • configure, Makefile を生成するヤツ
  • C/C++ のビルドする時のおまじない ./configure --prefix=/path/to/install/dir, make, make install はコイツが由来
  • 設定ファイルを書くのが超辛いらしい

cmake

  • autotools の代替と言うポジション
  • ぱっと見で理解出来るようなものではない
  • 覚えるのめっちゃ大変そう

Meson

  • cmake の代替というポジション
  • Meson で ninja の設定ファイルを書き出して ninja でビルドする感じ
  • Meson 呼んで build ディレクトリに入って ninja 呼ぶっていう3ステップはちょっとイヤ

java

ant

  • javaGNU make といった趣
  • java のサポートが手厚いがそれ以外の言語に使えないこともないっぽい
  • XML でルールを記述すると言う時点でもう無理

Maven

  • ant の代替
  • ビルドツールっていうかプロジェクト管理ツール
  • やっぱり XML での記述

Gradle

  • Maven の後継
  • OSS のビルド自動化のためのツールらしいがやっぱり java のサポートが手厚い印象
  • 本体 + プラグイン + groovy による記述の3段構え

感想

  • こうして列挙してみると進化の歴史を俯瞰した感じありますね
  • 超絶ナウい GNU make を探してたので bazel がすんごい魅力的に感じる

参考

どうしても anaconda から逃げ出したかった

あらまし

今まで anaconda でパッケージ管理してたけど、トラブルまみれでもう耐えられないので pipenv に乗り換えまーす。

環境

vscode 入れる

インストーラー実行するだけのハズなので省略。

python 入れる

Python Releases for Windows | Python.org から最新の x86-64インストーラーを入手。 ほぼ全てデフォルトの設定で OK だが 'Add Python to environment variables' だけ忘れずにチェックを入れる。

pipenv 入れる

適当な場所で cmd を開いて以下のコマンド

pip install pipenv

pipenv を入れる対象はベース python 環境。なので python インストール後1回だけの実行で OK 。 これ以降は pip を使わずに pipenv で管理する。

vscode 拡張

python 拡張だけ入れておく。

vscode workspace をセットアップ

空のプロジェクトを作成する。

  • vsocde をなんにも開いてない状態にする
    • メニューの File から Close Folder とか Close Workspace とか選ぶ
  • フォルダを開く
    • File --> Open Folder
    • プロジェクトのルートにしたいフォルダを選択
  • workspace として保存
    • File --> Save Workspace
    • プロジェクトルートディレクトリと同じ名前にしておく
    • ファイルの保存先はプロジェクトルートディレクトリ直下で

hoge.code-workspace みたいな名前のファイルがプロジェクトルート直下に作成されているはず。 Visual Studio でいう .sln みたいなもので、この .core-workspace ファイルをダブルクリックすると新しい vscode ウィンドウとともに workspace が開かれる。

以降、この workspace を開いた状態の vscode 上で作業を行う。

ワークスペース設定を書く

作成した .code-workspace ファイルをこんな感じにする。

{
    "folders": [
        {
            "path": "."
        }
    ],
    "settings": {
        "files.eol": "\n",
        "terminal.integrated.env.windows": {
            "PATH": "${workspaceRoot}\\.venv\\Scripts;${env:PATH}",
            "PIPENV_VENV_IN_PROJECT": "true"
        },
        "python.pythonPath": "${workspaceRoot}\\.venv\\Scripts\\python.exe"
    }
}
  • 仮想環境をプロジェクトルート以下に作りたいので PIPENV_VENV_IN_PROJECT を書いている
  • 仮想環境の方の pythonvscode拡張機能から参照してほしいので PATH と python.pythonPath を書いている

作業用のターミナルを開く

  • vscode 組み込みのターミナルを開く
    • Ctrl + Shift + `
    • それか Ctrl + Shift + P --> Terminal: Create New Integrated Terminal
  • 以下の点を確認
    • カレントがプロジェクトルートなっている
    • pip にパスが通っている

以下、このターミナル上で作業する。

仮想環境を作成

以下のコマンド

cd
pipenv --python 3

実行後プロジェクトルート以下に .venv と Pipfile が生成されているはず。

試しになんかパッケージを入れてみる

pipenv install numpy

一旦動作確認

Ctrl + Shift + ` でターミナルを開いた時に .venv/Scripts/activate.bat が実行されていれば OK 。 これ以降、ワークスペース内のターミナル下で pip install すると仮想環境にパッケージがインストールされる。

git 管理設定

  • 管理するべきもの
    • hoge.code-workspace
    • Pipfile
    • Pipfile.lock
  • 管理してはいけないもの

注意点など

  • 環境変数 PATH に
    • PATH に仮想環境上の python へのパスを記述している
    • そのため pipenv shell すると同一のパスが二重に展開されてしまう
    • 問題にならないはずなので気にしない
  • インタプリタを明示指定しない
    • Ctrl + Shift + P --> Python Select Interpreter で指定できる(多分 python 拡張)
    • これを使って明示指定すると .vscode\settings.json環境変数展開後のフルパスが書き込まれる
    • ワークスペース設定よりもフォルダ設定のほうが強いので折角書いた設定が上書きされてしまう
    • やらかさないように注意

参考

conda 環境下で mkl のロードに失敗するときの対処法あれこれ

この記事は

conda 環境下で numpy とかの mkl に依存しているライブラリを使いたいときに遭遇する mkl ロードエラーの解決法やら原因やらのメモです。 conda で python 環境を構築するたびに様々なバリエーションをもってハマるのでいい加減メモりました。

続きを読む

TechnoTUT | Fictional RPG Soundtrack

1曲参加しました

7曲目のエースコンバットみたいなヤツです。 みんな良い感じの王道 RPG って感じなのに一人だけめっちゃ戦争してて本当に申し訳ない。

続きを読む

合作用にバイナリファイル同期環境を構築する

この記事は

DTM の合作でプロジェクトデータをやり取りするのにイチイチ SNS やらなにやらでやり取りするのが嫌だったのでサーバー借りて subversion 入れて…て感じで環境を作った時のメモです。

続きを読む