Submit Search
Upload
YAPC::Nagoya::Tiny 2019 | Makefile生活
•
1 like
•
1,004 views
azumakuniyuki 🐈
Follow
令和元年11月3日(祝)のYAPC::Nagoya::Tiny 2019で発表したMakefileの浅くて簡単なタスクランナーとして使う話と実例
Read less
Read more
Software
Report
Share
Report
Share
1 of 37
Download now
Download to read offline
Recommended
130329 perl casual_ruik
130329 perl casual_ruik
Rui Kimura
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
博文 斉藤
姫路の方から来ました 〜 兵庫県姫路市の熱い勉強会を紹介 〜
姫路の方から来ました 〜 兵庫県姫路市の熱い勉強会を紹介 〜
Jun Nogata
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
博文 斉藤
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
博文 斉藤
CloudFormation ことはじめ - JAWS UG 名古屋 2019年7月度
CloudFormation ことはじめ - JAWS UG 名古屋 2019年7月度
Katz Ueno
Nokogiri on Rails
Nokogiri on Rails
Takuya Mukohira
ES6 はじめました
ES6 はじめました
Net Kanayan
Recommended
130329 perl casual_ruik
130329 perl casual_ruik
Rui Kimura
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
博文 斉藤
姫路の方から来ました 〜 兵庫県姫路市の熱い勉強会を紹介 〜
姫路の方から来ました 〜 兵庫県姫路市の熱い勉強会を紹介 〜
Jun Nogata
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
博文 斉藤
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
博文 斉藤
CloudFormation ことはじめ - JAWS UG 名古屋 2019年7月度
CloudFormation ことはじめ - JAWS UG 名古屋 2019年7月度
Katz Ueno
Nokogiri on Rails
Nokogiri on Rails
Takuya Mukohira
ES6 はじめました
ES6 はじめました
Net Kanayan
NSEG勉強会(101)LT: 僕と長野県
NSEG勉強会(101)LT: 僕と長野県
azumakuniyuki 🐈
Email is Slack
Email is Slack
azumakuniyuki 🐈
[スパム報告]ボタンを押すとどうなるのか | Hosting Casual Talks #4
[スパム報告]ボタンを押すとどうなるのか | Hosting Casual Talks #4
azumakuniyuki 🐈
SendGridのない世界 | SendGrid Night in Osaka #2
SendGridのない世界 | SendGrid Night in Osaka #2
azumakuniyuki 🐈
Hokkaido.pm#13参加報告 | YAPC::Kansai 2017 Osaka
Hokkaido.pm#13参加報告 | YAPC::Kansai 2017 Osaka
azumakuniyuki 🐈
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
azumakuniyuki 🐈
僕と北海道とPerl、それとMakefileも。
僕と北海道とPerl、それとMakefileも。
azumakuniyuki 🐈
PerlモジュールをRubyに移植する時に落ちた穴々
PerlモジュールをRubyに移植する時に落ちた穴々
azumakuniyuki 🐈
自動構築と自動テスト〜インフラのコード化とクラウドの優位性
自動構築と自動テスト〜インフラのコード化とクラウドの優位性
azumakuniyuki 🐈
Hachioji.pm #40 次のbounceHammer開発中
Hachioji.pm #40 次のbounceHammer開発中
azumakuniyuki 🐈
2013 11-30-mailqueue-monitoring
2013 11-30-mailqueue-monitoring
azumakuniyuki 🐈
Plackで実装したメールサーバ"Haineko"のその後/Shibuya.pl #1
Plackで実装したメールサーバ"Haineko"のその後/Shibuya.pl #1
azumakuniyuki 🐈
Perlの書籍紹介/KOF2013
Perlの書籍紹介/KOF2013
azumakuniyuki 🐈
実践的bounceHammer / KOF2013
実践的bounceHammer / KOF2013
azumakuniyuki 🐈
JSONでメール送信(Haineko) / KOF2013
JSONでメール送信(Haineko) / KOF2013
azumakuniyuki 🐈
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
azumakuniyuki 🐈
猫とPerl〜応用編1/YAPC Asia Tokyo 2013 LT-THON::Tiny
猫とPerl〜応用編1/YAPC Asia Tokyo 2013 LT-THON::Tiny
azumakuniyuki 🐈
Perl and Email #3 ``Haineko''/Kyoto.pm #5
Perl and Email #3 ``Haineko''/Kyoto.pm #5
azumakuniyuki 🐈
Kansai.pm #15 LT資料「猫とPerl」
Kansai.pm #15 LT資料「猫とPerl」
azumakuniyuki 🐈
Namba.pm #0 LT資料
Namba.pm #0 LT資料
azumakuniyuki 🐈
More Related Content
More from azumakuniyuki 🐈
NSEG勉強会(101)LT: 僕と長野県
NSEG勉強会(101)LT: 僕と長野県
azumakuniyuki 🐈
Email is Slack
Email is Slack
azumakuniyuki 🐈
[スパム報告]ボタンを押すとどうなるのか | Hosting Casual Talks #4
[スパム報告]ボタンを押すとどうなるのか | Hosting Casual Talks #4
azumakuniyuki 🐈
SendGridのない世界 | SendGrid Night in Osaka #2
SendGridのない世界 | SendGrid Night in Osaka #2
azumakuniyuki 🐈
Hokkaido.pm#13参加報告 | YAPC::Kansai 2017 Osaka
Hokkaido.pm#13参加報告 | YAPC::Kansai 2017 Osaka
azumakuniyuki 🐈
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
azumakuniyuki 🐈
僕と北海道とPerl、それとMakefileも。
僕と北海道とPerl、それとMakefileも。
azumakuniyuki 🐈
PerlモジュールをRubyに移植する時に落ちた穴々
PerlモジュールをRubyに移植する時に落ちた穴々
azumakuniyuki 🐈
自動構築と自動テスト〜インフラのコード化とクラウドの優位性
自動構築と自動テスト〜インフラのコード化とクラウドの優位性
azumakuniyuki 🐈
Hachioji.pm #40 次のbounceHammer開発中
Hachioji.pm #40 次のbounceHammer開発中
azumakuniyuki 🐈
2013 11-30-mailqueue-monitoring
2013 11-30-mailqueue-monitoring
azumakuniyuki 🐈
Plackで実装したメールサーバ"Haineko"のその後/Shibuya.pl #1
Plackで実装したメールサーバ"Haineko"のその後/Shibuya.pl #1
azumakuniyuki 🐈
Perlの書籍紹介/KOF2013
Perlの書籍紹介/KOF2013
azumakuniyuki 🐈
実践的bounceHammer / KOF2013
実践的bounceHammer / KOF2013
azumakuniyuki 🐈
JSONでメール送信(Haineko) / KOF2013
JSONでメール送信(Haineko) / KOF2013
azumakuniyuki 🐈
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
azumakuniyuki 🐈
猫とPerl〜応用編1/YAPC Asia Tokyo 2013 LT-THON::Tiny
猫とPerl〜応用編1/YAPC Asia Tokyo 2013 LT-THON::Tiny
azumakuniyuki 🐈
Perl and Email #3 ``Haineko''/Kyoto.pm #5
Perl and Email #3 ``Haineko''/Kyoto.pm #5
azumakuniyuki 🐈
Kansai.pm #15 LT資料「猫とPerl」
Kansai.pm #15 LT資料「猫とPerl」
azumakuniyuki 🐈
Namba.pm #0 LT資料
Namba.pm #0 LT資料
azumakuniyuki 🐈
More from azumakuniyuki 🐈
(20)
NSEG勉強会(101)LT: 僕と長野県
NSEG勉強会(101)LT: 僕と長野県
Email is Slack
Email is Slack
[スパム報告]ボタンを押すとどうなるのか | Hosting Casual Talks #4
[スパム報告]ボタンを押すとどうなるのか | Hosting Casual Talks #4
SendGridのない世界 | SendGrid Night in Osaka #2
SendGridのない世界 | SendGrid Night in Osaka #2
Hokkaido.pm#13参加報告 | YAPC::Kansai 2017 Osaka
Hokkaido.pm#13参加報告 | YAPC::Kansai 2017 Osaka
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
僕と北海道とPerl、それとMakefileも。
僕と北海道とPerl、それとMakefileも。
PerlモジュールをRubyに移植する時に落ちた穴々
PerlモジュールをRubyに移植する時に落ちた穴々
自動構築と自動テスト〜インフラのコード化とクラウドの優位性
自動構築と自動テスト〜インフラのコード化とクラウドの優位性
Hachioji.pm #40 次のbounceHammer開発中
Hachioji.pm #40 次のbounceHammer開発中
2013 11-30-mailqueue-monitoring
2013 11-30-mailqueue-monitoring
Plackで実装したメールサーバ"Haineko"のその後/Shibuya.pl #1
Plackで実装したメールサーバ"Haineko"のその後/Shibuya.pl #1
Perlの書籍紹介/KOF2013
Perlの書籍紹介/KOF2013
実践的bounceHammer / KOF2013
実践的bounceHammer / KOF2013
JSONでメール送信(Haineko) / KOF2013
JSONでメール送信(Haineko) / KOF2013
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
猫とPerl〜応用編1/YAPC Asia Tokyo 2013 LT-THON::Tiny
猫とPerl〜応用編1/YAPC Asia Tokyo 2013 LT-THON::Tiny
Perl and Email #3 ``Haineko''/Kyoto.pm #5
Perl and Email #3 ``Haineko''/Kyoto.pm #5
Kansai.pm #15 LT資料「猫とPerl」
Kansai.pm #15 LT資料「猫とPerl」
Namba.pm #0 LT資料
Namba.pm #0 LT資料
YAPC::Nagoya::Tiny 2019 | Makefile生活
1.
@azumakuniyuki YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生 活
2.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki YAPC::Nagoya::Tiny 2019 | 11/03(祝) 名古屋国際センターさん Email is Slack @azumakuniyuki 自己紹介 @azumakuniyuki (東邦之) 株式会社Cubicroot 2 - サーバーエンジニア(データセンターに行かなくなった) - WebUIでポチポチしてAnsibleでザザッと - 監視とか障害対応とか - プログラムも書く - 主にPerl, RubyでSMTP関連の開発・たまーにWebもある - /bin/shでもそれなりに書くしGo言語の本は積んである - Cは久しく書いてない(もう書けないかも) https://nyaan.jp/
3.
ニャーン 3YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki
4.
Makefile生 活 YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki
5.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 5 目次 1. Makefileって何? 2. Makefileの形式(浅くて簡単な部分) 3. タスクランナーとしてのMakefile 4. いろいろサンプル
6.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 6 触れないこと - C言語の話 - 何かをコンパイルする話 - Makefileの再帰的なアレ - Makefileの条件文(ifeq, ifneq, …) - automakeとか自動生成の話 - GNUではないMakefileの話 - サフィックスルール - C言語の話とC++の話
7.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 7 Makefile ?
8.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 8 Makefile ? - make(1)コマンド実行時に読まれるファイル - 正確にはGNU make - *BSDではgmake(1) - GNUmakefile, makefile, Makefile - 実行したいコマンド(群)をターゲットでグループ化 - $ make ターゲット名 - 行志向なシェルスクリプト - 古来からある自動化の仕組み - 信頼と実績・歴史と伝統のMakefile
9.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 9 $ make *** - 馴染みの深いmake(1)のターゲット - $ make ↩︎ - $ make all ↩︎ - $ make install ↩︎ - $ make clean ↩︎ - $ make test ↩︎ - $ make world ↩︎ (FreeBSDの人)
10.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 10 $ grep make .zhistory - コマンド履歴で”make”を実行した回数を数えた - $ wc -l ~/.zhistory => 69402 - $ grep make ~/.zhistory => 13800 - $ echo ‘scale=4; 13800 / 69402’ | bc - .1988
11.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 11 $ grep make .zhistory - コマンド履歴で”make”を実行した回数を数えた - $ wc -l ~/.zhistory => 69402 - $ grep make ~/.zhistory => 13800 - $ echo ‘scale=4; 13800 / 69402’ | bc - .1988 20%!
12.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 12 perl-5.30.0/ $ make ↩︎
13.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 13 perl-5.30.0/ $ make ↩︎ ↑↑↑↑ 画面いっぱい 大量の何かが すごい速さで 流れていく!
14.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 14 perl-5.30.0/GNUmakefile
15.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 15 perl-5.30.0/GNUmakefile 14153行!!!
16.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 16 深入りすると危ない
17.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 17 浅瀬の簡単なとこだけ
18.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 18 手書きのMakefile
19.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 19 Makefile Format
20.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 20 $ cat Makefile # Perlモジュールを入れるコマンドの準備 CPANM = http://cpanmin.us/ cpanm: wget -cO ./cpanm $(CPANM) test -f ./cpanm chmod a+x ./cpanm install: cpanm install -m 0755 cpanm /usr/local/bin/
21.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 21 $ cat Makefile # Perlモジュールを入れるコマンドの準備 CPANM = http://cpanmin.us/ cpanm: wget -cO ./cpanm $(CPANM) test -f ./cpanm chmod a+x ./cpanm install: cpanm install -m 0755 cpanm /usr/local/bin/ マクロ ターゲット(ファイル名) コマンド1 (ダウンロード) コマンド2 (ファイル検査) コマンド3 (実行権限) 擬似ターゲット: コンポーネント TAB TAB TAB TAB
22.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 22 $ cat Makefile # Perlモジュールを入れるコマンドの準備 CPANM = http://cpanmin.us/ cpanm: wget -cO ./cpanm $(CPANM) test -f ./cpanm chmod a+x ./cpanm install: cpanm install -m 0755 cpanm /usr/local/bin/ 変数宣言 タスク名 コマンド1 (ダウンロード) コマンド2 (ファイル検査) コマンド3 (実行権限) タスク名: 依存ファイル(依存タスク) TAB TAB TAB TAB
23.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 23 Makefile As a Task runner
24.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 24 Makefile As a task runner 1. 特定の場所 2. 簡潔な処理 3. 共通の名前
25.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 25 Makefile As a task runner 2. 簡潔な処理 3. 共通の名前 ディレクトリ内容に依存した処理 - リポジトリ - git - cvs - サーバ上の設定ファイル置き場 - /etc/postfix - /etc/httpd - 手元のAnsible Playbook置き場 - コマンドも引数も長めやし - インベントリも置いてるし 1. 特定の場所
26.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 26 Makefile As a task runner 3. 共通の名前 簡潔なタスクの内容 - 単一のコマンド - 引数が多い - オプションが多い - 複数のコマンド - 実行順序が決まっている - 前のコマンドが失敗したら 次は実行しない 1. 特定の場所 2. 簡潔な処理
27.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 27 git-repo $ make $ make fix-commit-message さっきコミットしたメッセージを直す $ make push 現在のブランチをすべてのリモートリポジトリにPUSHする $ make cancel-the-latest-commit さっきのコミットを取り消す $ make remove-added-file git addで追加したファイルの取り消し
28.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 28 /etc/postfix # make # make systemctl status postfix ↑status postfix と postfix status とかよく間違う # make test-conn-with-starttls openssl s_client -quiet -connect 127.0.0.1:587 -starttls smtp ↑長いので覚えられない # make restart /usr/sbin/postfix check ← main.cfの文法検査 /usr/bin/systemctl restart postfix ← 文法検査を通れば再起動
29.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 29 ~ $ make ~/.ssh $ make deploy-public-key SSHREMOTEHOST=新サーバ ↑新しいサーバに自分の公開鍵束を設置する ~/ansible $ make build T=apache ansible-playbook -i server/for-product —tags apache host.yml ↑そこそこ長い perl-hackers-hub $ make check-wordy grep —color -rnE "しま[いうっ]|よう[なに]|とい[うっ]|てみ[たて る]|こと[^。]*こと" docs/* || true ↑長いので覚えられない
30.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 30 Makefile As a task runner 共通のターゲット名 - make test - リポジトリのテスト - make check - 設定ファイルの文法検査 - make clean - 古いファイルの削除 - バックアップファイルを纏める - インターフェイスの統一 1. 特定の場所 2. 簡潔な処理 3. 共通の名前
31.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 31 # make check /etc/postfix # make check /usr/sbin/postfix check ← main.cfの文法検査 /etc/httpd # make check /usr/sbin/apachectl configtest ← httpd.confの文法検査
32.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 32 % make clean /etc/postfix # make clean ↑Ansibleのtemplateモジュールが作ったバックアップファイルを移動 ~ $ make clean find ./Desktop -type f -name ‘Screen*.png’ -ctime +7 -depth 1 -delete ↑⌘+CTL+3,4で作ったスクリーンショットの古いのを削除 Perl-Module $ make clean find . Type f -name ‘nytprof*’ -ctime +1 -delete ↑作ってから1日以上経過したDevel::NYTProf関連ファイルを削除
33.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 33 Omake
34.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 34 Omake おまけ
35.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 35 おまけ $ make -n clean rm -f ./*.tmp ↑”-n”を付けるとコマンドが表示される(実行されない) $ make -f ./Nekochan.mk clean ↑Makefile, makefile, GNUmakefile以外は”-f”で指定できる $ make test PERL=/opt/bin/perl NEKO=nyaan ↑Makefile内で参照するマクロはコマンドラインから渡せる ↑make DIST=/usr CPPFLAGS=-I… LDFLAGS=-L… みたいな
36.
YAPC::Nagoya::Tiny 2019 |
11/03(祝) 名古屋国際センターさん Makefile生活 @azumakuniyuki 36 おまけ DATE = $(shell date ‘+%F’) ←コマンドの実行結果がマクロに入る test: @ test -f /etc/mail/sendmail.cf - test -f /etc/postfix/main.cf “@“ を先頭につけるとコマンド自体を表示しない “-“ を先頭につけるとエラー(exit 0以外)でも続行する
37.
終
Download now