[フレーム]
1 - 38 件 / 38件
タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。
はじめにTIG真野です。育休明けです。 フューチャー社内のタスクランナーはmakeやTaskなど複数の流派があり、チームによって使い分けられています。個人的にはmakeで良いんじゃないかと思っていますが、Taskも良いですよね。 makeは細かい記法をいつも忘れる+調べるとC言語向けの情報が出てきて脳内変換に手間を感じたため、makeを用いてWebバックエンドアプリをGoで開発するということをテーマに、役立ちそうな情報をまとめます。 なお、今記事におけるmakeは、GNU Makeを指します。バージョンは以下で動かしています。 MakefileのためのEditorConfigMakefileのインデントはハードタブである必要があります。誤りを防ぐためにもEditorConfigを設定しておくと良いでしょう。 makeは通常、Makefileという名称をデフォルトで認識しますが、同一フォルダ
?「プロジェクトでよく使うコマンド Makefile に書いたろー」 ?「docker compose up -d --wait っと...」 👮♀「 Makefile警察 だ!」 👮♀「 Makefile は、ソフトウェアのビルドプロセスを自動化するためのファイルだ!」 👮♀「多目的なタスクランナーとして使うな!」 ?「せやったんか。誠にごめんなさい。」 Makefile は広く使われていますが、時々目的外に使われてしまうことがあります。しかし、そのような使い方にはより適した代替手段が存在します。この記事では、 Taskfile というツールについて解説します。 Makefile のつらみ Makefile は主にビルドプロセスを自動化する目的で生まれましたが、様々なコマンドをまとめて実行する便利さから多目的なタスクランナーとしてもよく使われます。しかし、次のような問題があります
Go を使ってプロダクトを作る時、Makefile を使ってビルドを指定することが多いです。 理由としては、 バージョン情報などを埋め込むのに都合がいい 複数のバイナリを吐き出す時に都合がいい Go のビルドオプションを指定するのにいろいろあって整理しておきたい 事前にコードジェネレータで書き出す部分があり、それを考えると Makefile などで整理したい などなどです。なので今回はプロジェクトが大きくなっていく中でどういう Makefile の書き方をしているか、というのをご紹介しようと思います。 サンプルとして、今回のプロジェクトでは gRPC を使ったチャットサービスのサーバーとクライアントを作ることにします。リポジトリは https://github.com/rosylilly/gochat に置いておきました。 Step 1. バージョン情報を埋める 今回はサーバーとクライアン
この記事は毎週必ず記事がでるテックブログ Loglass Tech Blog Sprint の99週目の記事です! 2年間連続達成まで残り7週となりました! 始めに ログラスに入社してから時間が経つのも早く、もう3ヵ月経ちました。 そんな私ですが、入社して最初に作成したPRの話をしていきます。 普段からVimやLinuxを使うのが好きではありますが、それと同時に 環境構築オタク を自称している側面もあります。 オタクを自称する分、環境構築には多少のこだわりがあり、プロジェクトディレクトリに入ったら開発のための便利ツールがすぐ手元にある状態であってほしいのです。 プロジェクトに触って最初にやることというと環境構築ですが、必ずしも運用しやすい状態になっている訳ではありません。 その中でもログラスのプロダクトは環境構築がしやすい方ですが、より効率的にするためMakefileのブラッシュアップをし
そこそこの規模があるプロジェクトで実行すべきタスクを定義するとき、初手として Makefile を使いがち。 Pros make は事実上どんな環境にもあることを期待してよい シェルで実行されるコマンドをそのまま書ける タスクの依存関係が明示できる Cons make では positional arguments が使えない 少し複雑なことをしようとすると Makefile 専用の文法を覚える必要がある 現代では、ファイルベースのタスクの依存関係は make が発明されたころほどは必要ではない Docker とか Go とか Webpack がよしなにしてくれることが多い 例: docker compose のラッパー ちょっとしたコマンドのラッパーを書きたいことがある。Makefile を書きはじめたらすべてのエントリポイントを make にしたい。ということで、以下のような Make
追記この記事に対するyasunoriの補足記事はこちら。 https://blog.yasunori0418.dev/p/appendix-makefile/ IntroductionyasunoriがZennに書いた「職場のプロジェクトに必ず配置しちゃうMakefileの話」というのがバズっています。 「コマンドが覚え辛い」という、どのプロジェクトにもあるような問題を「Makefileをコマンドメモとして整える」ことによって解決するという記事でした。 SNSやvim-jp slackを見ていると賛同の声が多い印象を受けています。 https://b.hatena.ne.jp/entry/s/zenn.dev/loglass/articles/0016-make-makefile 私個人も過去に同様のMakefileを作ったことがあるし、現職でもMakefileが入っているプロジェクトがあ
最近よく味玉を作っているのだけど、ジップロックに日付を記入し忘れたり、ボウルに水を入れてから氷を入れようとしたりしていて、手順の依存関係を意識しないとめちゃくちゃになる。 Makefileは依存関係と成果物を記述できるので、レシピをMakefileの形で書いたらおもしろいのでは、と思ったけど記述量が多い気がする。 .PHONY: お湯を湧かす 卵を茹でる 8分待つ ボウルに氷を入れる ボウルに水を入れる ボウルに卵を入れる 卵の殻を剥く ジップロックに日付を書く ジップロックにめんつゆを入れる ジップロックに卵を入れる 一晩寝かせる 味玉 お湯を湧かす: @echo お湯を湧かします 卵を茹でる: お湯を湧かす @echo 卵を茹でます 8分待つ: 卵を茹でる @echo 8分待ちます ボウルに氷を入れる: 8分待つ @echo ボウルに氷を入れます ボウルに水を入れる: ボウルに氷を入れ
概要 7月18日に July Tech Festa 2021 が開催されて『よみがえるMakefile』 というタイトルで15:20 から登壇した。今さら聞けないIT技術 というお題だったので今さら聞けないけど... みたいなものが議論の種になればとお題をMakefileに決めました。 docs.google.com connpass はこちら techfesta.connpass.com 文章として大きく離散してるので雑多なまとめになります。 タイムアポン 完全に終わっていて一連のスライドからGo言語のMakefileを育てていくエピソードを登壇資料から抹消した。 正直、資料の中にあったものをシュッとMakefileに落とし込むだけなので特定の言語やツールに依存するかな?と思って排除してしまいました。 何故か、40分だと思ってたので20分資料に再編集した。— nwiizo (@nwiizo)
先日機械学習界隈の方とDockerの話をした際、Makefileを使って機械学習環境の整備をしている人は実は少数派なんじゃないかと感じました。 機械学習で使うコマンドは引数が長く、とても覚えられるものじゃありません。暗記できていてもミスタイプしたり、tmux内とかだと折り返されて何書いてるかよくわからなくなりがち 。Ctrl+Rとかで検索かけようとしても大体はdocker...から始まるのでタイプ数多くなりがち。 Makefile は、Docker のコマンドをいい感じにまとめやすく、jupyter notebook に使う長ったらしいコマンド jupyter notebook --port 8888 --ip="0.0.0.0" --allow-root なども簡略化できます。そういうわけで、全体的な生産性の向上に繋がると信じています。 今回紹介する Makefile は Docker
PHP8.4が出ましたね 🎉 tl;dr 今日のお話は、 「jdkfxさんが用意してくれた環境がメッチャ便利で最高だったよ」という内容です。 https://github.com/jdkfx/phpdoc イントロ 最近coreへの貢献をしている人が身近(?)でも増えているし、日本人でコアなデベロッパーはすごすぎる・・なんてものを眺めていて。 うぉ〜〜俺もなんかしてぇ〜〜〜!!ってなるじゃないですか。 もともと「お世話になっているコミュニティやOSSには沢山恩返ししたいな」と思っていて、カンファレンスやOSS作者や団体に向かって個人スポンサーをやったりはしています。 ただ、自分の中では、受けている恩ってそれだけで返しきれるものでもなく。 最大の恩返しは「もっと盛り上げる!」だとも考えていて、それって「賑やかす」「開発や利用しやすさの改善に貢献する」が効きそうだな〜とも思っている訳です。
あらすじ Makefile as task runner に対しての意見 顧客が本当に欲しいものは、ディレクトリレベルのエイリアスなんじゃないですか? Allyas: ディレクトリごとにエイリアスを張るツール $PATHを乗っ取る 0ドル hack シンボリックリンクの自動化 設定ファイル あらすじ こういう記事を見た。 zenn.dev 僭越ながら要約すると、Makefileにタスクを書いてタスクランナーとして用いているとのこと。また、Makefileのコメントを拾ってドキュメンテーションを生成できるようにしたとのこと。 Makefileをタスクランナー代わりに用いるのはよくあることだが、ドキュメンテーションを生成するようにしたところがおもしろポイントである。 そして、この記事への批判文脈として以下の記事を見た(正確には、この記事を見てから上掲の記事を読んだ)。 www.takeokunn
はじめに ラブグラフ 開発チーム インターン の こるく です。 私がラブグラフに Join してまず感動したのが、コマンド一発で完了する超お手軽な環境構築でした。 普通プロジェクトに Join するときは面倒な環境構築をする必要がありますが、ラブグラフではそれが全くありませんでした。 ということで今回は、それを実現している Make と Docker を使って、開発、テスト、CI、本番のすべての環境で、ランタイムの環境と環境変数の設定をすべてコードベース ( IaC というやつ? ) でラクに共有して開発体験を爆アゲしようと思います。 この構成が目指すところ ✅ 環境で悩むことをなくして開発体験を爆アゲする ✅ 環境構築をコマンド一発でできるようにする ✅ ついでにテストもコマンド一発でできるようにする ✅ 環境変数をホストマシンのシェルから排除し、コードの一部としてリポジトリ内で管理す
tl;dr 俺の Makefile こだわりの help タスクに依存関係を 以上 tl;dr terraform に限らずですが, コマンドのオプションとかちゃんと覚えていられないので, Makefile にまとめておいて, make xxxx で叩くのが個人的なトレンドです. Linux や macOS では特に何もしなくても make コマンドを叩けるので, Makefile に定型処理を書いておくことで, コマンドオプションのうろ覚えによるオペミスなども防げるのではないかと考えています. 俺の Makefile こだわりの help terraform コマンドはパスが通っている前提です. 環境に応じて terraform のパスは書き換えてください. help: ## ヘルプを表示する @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_L
こんにちは、kubotakです。 弊社では、開発環境の構築にMakefileをタスクランナーとして利用していました。 しかし、予てよりMakefileは「コンパイル、依存関係の管理、インストールなどのルールを記述しておくためのファイル」であるため、タスクランナーとして利用している現状には違和感を感じでいました。 引数の取り回しやhelp(list表示)などひと手間必要で、本来の存在とは異なる利用のためハックな使い方をしていました。 Qiitaの以下の記事を参考にMakefileやめました。 qiita.com Task Taskはタスクランナー・ビルドツールでGNU Makeより使いやすいものを目指したプロダクトだそうです。 Go言語により作られているので利用者側としては1バイナリで済むのでほかの依存はありません。 MacOSであればBrewでインストール可能なので手軽に使うことができそう
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
はじめに Makefileについてわかりやすい解説が少なかったのでまとめて見ました。 Makefile初心者が初心者向けに書いたものになります。 主にGNU makeの記述を訳しています。不自然な点、間違いがあったらご指摘いただければ幸いです。 Makeを理解するには、コンパイルへの理解が重要です。 コンパイルについては別記事でまとめています。よければどうぞ。 【gccの概要】コンパイルについてまとめ。 基本 主にMakefileはmakeにプログラムのコンパイルおよびリンク方法を指示します。(応用することで他の使い方もできます) Makefileに依存関係(プログラムの前提条件となるファイルとの親子関係)を記述しておくと、各ファイルの更新を取得して必要なものだけをコンパイルしてくれるようになります。 Makefileに含まれる情報は主に3つです。 変数の定義(変数、自動変数、暗黙の変数、
We are excited to announce a brand-new extension for building and debugging Makefile projects in Visual Studio Code: Makefile Tools (preview)! The extension is in pilot stages, but we’ve curated a list of over 70 popular opensource Makefile projects that work with Makefile Tools. Give it a try and let us know what you think! Installing the extension First, install the Makefile Tools extension from
Makefile で任意の第2引数を扱えるようにする小技を紹介します。 簡単な表記で2つの引数を扱える上に複数個の対象をデフォルト指定したり変更することもできます。 この方法を使えば --jobs オプションで make タスクの並列化もできます。 本記事で紹介するスクリプトは gist で公開しています。 https://gist.github.com/algas/377ca9d3f11916af39951ccd599a3b88 解決した課題 make で2つの引数(1つ固定+1つ任意)を扱えるようにした 第2引数を複数個デフォルト設定かつ変更可能にした 上記の2つに加えて jobs オプションでの make タスク並列化が効く形式を保った 対象読者 Makefile を書く必要があるけどイマイチ書き方がよくわからない人 シェルスクリプトの方が自由度が高いと思いつつ Makefile を
makeはMakefileで動作を指定する 前回、複数のCのソースコードファイルをビルドするためにmakeを使う方法を説明した。makeはファイルの依存関係などに基づいて処理を行うためのツールで、複数のファイルをビルドする必要がある場合なんかに便利なツールだ。 makeがどのように振舞えばよいかは、Makefileというファイルに記述することになっている。前回は次のようなMakefileを用意して使用した(今回の説明に合わせたいので、ちょっとだけ変更してある)。 前回用意したMakefile OBJS= csv2tsv.o util.o CMD= csv2tsv.exe CFLAGS+=-g CC= clang build: $(CMD) $(CMD): $(OBJS) $(CC) $(CFLAGS) -o $(CMD) $(OBJS) csv2tsv.o: csv2tsv.c $(CC)
CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。
DEV Community Follow A space to discuss and keep up software development and manage your software career
問題です! 以下のような Makefile があったとして、 それぞれの make test の出力結果は何になるでしょう? Q1. = x = foo y = $(x) bar x = later .PHONY: test test: @echo $(x) @echo $(y) Q2. := x := foo y := $(x) bar x := later .PHONY: test test: @echo $(x) @echo $(y) Q3. ?= x ?= foo y ?= $(x) bar x ?= later .PHONY: test test: @echo $(x) @echo $(y) ヒント! ドキュメントです! GNU make - How to Use Variables 答え というわけで、上のドキュメントがわかりにくかったので 自分なりにまとめたかったための、この
前回、 Go の学習を始めた際のまとめを記事として書きましたが、Makefileの作成は後回しにしていました。 Go のプロジェクトでは殆どの場合、 Makefile によりビルドを記述しています。Makefileは GNU Make 用のルールを記述したファイルで、 マルチプラットフォーム で利用することができます。 Makefile 完成版 今回、 Go 用のマルチプラットフォーム (Windows-cmd.exe, Windows-PowerShell, Windows-Git-Bash, Linux(ChromeOS-Crostini(Debian), WSL(Ubuntu), 他)) で動作する Makefile を作ってみました (GNU Make は Chocolatey の非 MinGW 版 4.3 を使用しました)。 Docker の scratch イメージで動作するよ
Make is the grilling of the hacker world. You just want to light up some quality lumpwood charcoal and get a nice smokey crust on some steaks, cook up some hamburgers, and crisp up some chicken for your guests over the course of an afternoon......but oh no there is a constant stream of inquisitive folk coming over, beer in hand, suggesting cool adjustments / hacks / "improvements" to your setup. With
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
タスクランナー的な用途で make を使っていて、パスが通ってるんだけど通ってない...?みたいな現象に出会ったときのメモです。 PATH := $(HOME)/.pub-cache/bin:$(PATH) .PHONY: path path: which fvm fvm --version ↑ のような Makefile があったとき、このタスクを実行すると $ make path which fvm /Users/takasfz/.pub-cache/bin/fvm fvm --version make: fvm: No such file or directory make: *** [path] Error 1 ↑ のように「 which だと見つかるが、コマンドを実行しようとすると見つからない」状態でした。 何が起きていたか make の仕様には、「通常はレシピの各行に対して新しいサ
はじめに make とは? UNIX シェルコマンドのジェネレータ。ビルドツールとして C/C++の開発でよく使う。makefile にはターゲット(主にビルドターゲットファイル)を依存関係付きで定義でき、コマンド実行時に make がファイルシステムのタイムスタンプから、再コンパイルが必要なターゲットを認識、必要なコマンドだけ生成して実行してくれる。ビルドターゲットには最終的な実行形式のファイル名や.o などの中間ファイル名を指定する。 Python で使う場合、タスクランナーとして使う場合がほとんどと思う。ターゲットはファイル名でなく、適当な名前をつけてダミーターゲットとし、依存関係のあるダミーターゲットを実行するコマンドを生成してくれる。 makefile のマクロ変数 makefile 内で使われる変数にはいくつか種類があり、以下のような優先順位がある。 マクロ変数参照の優先順位(
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
Update 2024年01月12日: Ken Shirriff has an an excellent blog post on why "cargo cult" is a poor term of art. I’m not aware of a perfect1 term for this, so I’m making one up: the Makefile effect2. The Makefile effect boils down to this: Tools of a certain complexity or routine unfamiliarity are not run de novo, but are instead copy-pasted and tweaked from previous known-good examples. You see this effe
「VS Code」の「Makefile Tools」拡張機能プレビュー版が公開:70以上の主要なMakefileプロジェクトをサポート Microsoftは「Visual Studio Code」の新しい拡張機能「Makefile Tools」のプレビュー版を公開した。Makefileプロジェクトのビルドとデバッグを実行する際に役立つ。70以上の主要なMakefileプロジェクトをサポートしていることが特徴だ。
忘れてしまった環境構築手順を思い出す事 設定ファイルの修正(数が多いと特に面倒) パッケージマネージャが使えない場合、アプリの手動ビルド&インストール 依存関係が自動解決できない場合、依存関係を調査 構築を複数回繰り返す事(自宅/会社PCへの対応あるいは環境を壊した時) 環境構築は、プログラミングをする前段階の作業ですので、ここで消耗したくありません。 そこで、本記事ではMakefileとシェルスクリプトを併用する形で、環境構築を自動化する方法を説明します(何故、Makefileを使うのかという理由も含めて説明します)。 # 余談ですが、世の中には「何でもかんでもMakefileで解決する方法」を嫌いな人も居るので、本記事の内容をチームに展開する際は気をつけてください。 シェルスクリプトのみのキツイ点 環境構築を自動化しようと考えた場合、多くの人がBash等でシェルスクリプトを作成すると思
この記事は,「カーネルビルドでも進捗が見たい!」に入り切らなかった蛇足です. kbuild-progressの実装を初めた当初は,kernelのMakefileを改造することで,プログレスバーを表示しようとしていました.Linux kernelのビルドシステムであるKbuildはmakeで書かれています.実際にビルドを行っているmakeなら,ビルド全体のタスク数や,残りのタスク数などを知っているはずだと考えたのです. Makefileを読んでみた Linux kernelには 63,135行のMakefile が含まれ(linux-5.6.7で計測), なまら複雑です. 私はmakeについて全く詳しくないので(予防線),雰囲気で読んでいくしかありません.がんばります. vmlinux ルール プログレスバーを表示するにあたって,まず,ビルド対象ファイルの一覧的なものがほしいです.もっとも典
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
はじめに タスクランナーを Makefile から Taskfile へと移行したいと考え、社内の他の開発者へ説明する機会がありました。 そのときの資料の転記になります。 すでに以下の記事があり、内容を加筆したものになります。 gsy0911 さんの記事がなければここまでまとめようと思いませんでした。ありがとうございます。 本記事ではタスクランナーとしての Makefile と Taskfile を比較し、そのメリット・デメリットを洗い出すことを目的としています。 Taskfile の機能の説明を網羅したものでない点にご注意ください。 先にまとめ モチベーションをまとめるとこの2つ。 Makefile の潜在的なリスクを回避したい Taskfile による豊富な機能を享受したい Makefile にはタブインデントや OS の環境差異のリスクがあると考えています。 Makefile はビル
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter. Introduction Makefile Tools provides the native developer a full-featured, convenient, and powerful workflow for Makefile-based projects in Visual Studio Code. It enhances the development experience with pre and post-configuration script automation, allows for easy switching between multiple configurations, and suppo
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く