USP MAGAZINE

ビックなデータで、どどん・どどん・どどんどん！

特集

愛され
データサイエンティスト

ǋ¯ǴǚÁǡǑȜǡǴ
ƉǂƝŸƠƕƸȏ

ユニケージ開発手法教育講座「ユニケージ開発手法教育講座」は、ユニケージ開発手法におけるデータ管理の方法や、オリジナルコマンドの使用方法などをハンズオン形式で具体的に学べる講座です。UNIX の基礎からユニケージ開発手法による

http://www.usp-lab.com/LECTURE/CGI/LECTURE.CGI
ǡ
ȏǴǚÁ
ࢬܹ‫ރ‬
սਖ֦

も充実中！
続々と新講座K1

コマンド学習編

K2

シェルスクリプト学習編（帳票・バッチ処理）

K3

シェルスクリプト学習編（ウェブアプリケーション処理）

K4

ユニケージアーキテクチャ編

K5

ユニケージ開発環境セットアップ編

K6

システム運用・管理編

K7

プロジェクトマネジメント・人材育成編

KSQL

SQL エンジニアのためのユニケージ活用編

KSTAT

ユニケージにおける統計コマンド編

UNIX 初心者のための講座などもご用意しています。
技術の草原で百獣の王を目指す
エンジニアたちの新感覚トークライブ！

2014 July vol.15

開発プロジェクトの進め方まで、ユニケージエンジニアとしてのトータルスキルを習得できます。

新連載

Linux女子部誌上講座
リナ女のたしなみ〜写真管理編〜

金融システムにおけるUNIX の歩み

http://techlion.jp/

上記のサービス内容は 2014 年 6 月現在のものです。
最新の情報は弊社ホームページにてご確認ください。

ISBN 978-4-9048-0709-5
C3455 ￥500

USP 研究所
定価（本体 500 円＋税）

Artwork created by Koji Ishizuka. © 2012 Zie's Bank .Co,. LTD All rights reserved.

2014Vol.
15
7
y
l
Ju
¥500

2014 July vol.15

C o n t e n t s
04

特集

愛されデータサイエンティスト

14 「シェル芸」に効く

AWK 処方箋 第4 回

50

スズラボ通信 第7 回

52

漢のUNIX 第12 回

54

後藤大地

26

ユニケージ開発手法
コードレビュー 第 4 回
Haskell でやってはいかんのか？第 4 回
上田隆一

36

人間とコンピュータの可能性 第 15 回

58

法林浩之の FIGHTING TALKS

第2回

40 組織文化を変える汗と涙の物語

アジャイル改善塾 第 3 回

42 新連載 Linux 女子部誌上講座

リナ女のたしなみ
平愛美

45

りゅうちの工作員日記 第 4 回
りゅうちてつやおためし on AWS

今月のeXtreme Engineer

第4弾

太田智美

60

金融システムにおけるUNIXの歩み 第 2 回
千貫素成

62

シェルスクリプト大喜利
第13 回

大岩元

38

新連載 Open usp Tukubai

坪和樹

大内智明

31 シェル芸勉強会後追い企画

縁の木、育てよう 第 3 回
白羽玲子

すずきひろのぶ23

データモデリング 第 5 回
熊野憲辰

斉藤博文

18

未来に活きる！ 現場で使える！

66

Tech 数独 第 10 回

67 きちんとはきものをそろえる シェル魔人／編集後記ユニケージ開発手法

コードレビュー Vol.4
CODE Review
Review
CODE

USP 研究所技術研究員

written by 大内智明

前号に続き、本部・店舗間の発注・伝票処理に伴う連絡・通知をシンプルに実現する常駐型シェルスクリプトをご紹介します。この処理フローの一部を担う集積処理に今回はフォーカスします。

ンファイルを定期的に集め、1 ファイルにして保存する

定期的にファイルを集積することです。

本部や店舗で行われる業務には、決まった締め日時があります。その時期になると本部や各店舗で多くのト

技術的な概要ランザクションが集中的に発生します。結果として、シ

このシェルスクリプトは、発注処理・伝票処理とステム負荷が大きくなり、他システムへの連携に影響いった各業務から発生するトランザクションデータ、する場合があります。こうしたシステム負荷が大きくな

すなわちユニケージ開発手法における LV1（システ

らないように、ユニケージ開発手法でよく使用するのが、ムに入力された生データ）
を一定間隔ごとに集積して、前回登場した常駐型シェルスクリプトです。

LV2 ファイル（LV1 を変換・整形したテキストデータ）

前回は、常駐型シェルスクリプトの全体像を説明しとして保存する役目を果たします（図 2）。

ましたが、今回はその中の重要な一機能である集積処

発生するトランザクションには、実データファイル

理部分のコードを見ていきます（図 1）。集積処理の役とセマフォファイル（→補足１）の 2 種類がありま

割は、各業務サーバーで発生した複数のトランザクショ

す。トランザクションを集積する（発生したトランザ

図 1 常駐型シェルスクリプトの処理フロー

ポータルサーバー（処理結果の表示）

集積・配信サーバー
常駐型シェルスクリプトは継続判定と未処理トランザクション処理（集積、加工、配信）
の繰り返し
待ち
配信

業務サーバー

継続判定
業務サーバー

LV3：
配信用
データ

LV2：
集積した
データ

加工

26 USP MAGAZINE 2014 July

LV1：
トラン
ザクション
データ

集積

業務サーバー
業務サーバー

業務サーバーCODE Review
Review
CODE
クションを集める）際の注意点は、同一の実データファ
イルを重複して集積しない、ということです。

コードの見どころ

もし、重複してデータを集積すると不正確な処理結掲載したソースコードは、繰り返し実行される処理

果が出力されることになります。そうならないように（集積・加工・配信・継続判定）の中に含まれている一工集積処理が終了すると、元のファイル名（未処理ファ程（集積）です（図2）。各トランザクションファイル

イル）
をリネームしています。処理済みのセマフォファを集積してファイルをまとめる処理ですが、これはイルには、ファイル名に ZUMI（済み）という文字を

LV1からLV2を作成する処理に該当します。その部分付けて未処理のファイルと区別するのです。リネーム

を大きく3つのポイントに分けて説明します。

はセマフォファイルのみに対して実施します。セマ
フォファイルのみをリネームする理由は 2 つあります。

[1]前回集積した後に発生した新規の未処理ファイル●セマフォファイルを、未処理（処理済み）の判定に（セマフォファイル）を抽出します。補足1で述べたよ
うに、セマフォファイル名は実データファイル名と同使用しているため●実データファイルは LV1（生データ）なのでその一にしているため、セマフォファイル名だけを抜き出ままの状態で残す必要があるため（→補足 2）。

して、実データファイルのフルパスを作成します（75【補足１】ここで使用するセマフォファイルとは、実データファイルが作成途中に取り込まれることを防ぐために、トリガファイルとして実データファイルが完成した直後に生成されるファイルのことです。実データファイルとセマフォファイルは 1 対 1 で存在します。
それは、データ取り込みに過不足がないようにセマフォファイルの件数だけ取り込み処理を実施していることが理由です。実データファ
イルとセマフォファイルのファイル名は同一にします（画面 3）。
【補足 2】ユニケージ開発手法では、LV1 データ（生データ）は消
去せず保存します。サーバーのディスク容量が不足する場合には、
バックアップサーバー等で保持します。プログラムは消去されても後から再生することができますが、データは一度失われると二度と再生できないからです。

〜87行目）（→補足３）。
[2]重複してデータを取り込まないようにセマフォフ
ァイルを処理済みのファイル名にリネームします（98行目）。
[3] 集積したファイルをLV2として保存します（102〜105行目）（→補足4）。

図 2 集積・配信サーバーと業務サーバーの動作
業務サーバー

集積・配信サーバー
実データファイル
4 取込

LV2：
集積した
データ

セマフォファイル

1 送信
2 送信

実データファイル生成
セマフォファイル生成（0 バイト）

3 発見
常駐
シェルスクリプト

必ず実データファイルの送信完了後にセマフォファイルを送信する。

5 リネーム

処理済み
セマフォファイル

1 実データファイルの送信

4 実データファイルの取り込み

2 セマフォファイルの送信

5 セマフォファイルをリネーム

3 常駐型シェルスクリプトが未処理のセマフォファイルを発見

27

リスト 1 集積処理を行うプログラム
ȁ2!$"0cjo0vti!.ywf!!3!$!ΏΑΞθྴ!!!!;!˱˯ˬΏΑΞθ!!4!$!΍ήΏΑΞθྴ;!Ⴒ၁ͺρȜΠ͈෻૞)඾ষ*!!5!$!ުྩྴ!!!!!!!!;!Ⴒ၁ͺρȜΠ
!!6!$!ίυΈρθྴ!!;!Ⴒ၁ͺρȜΠ˨˲ˎ͈ਬୟȆ೒౶
!!7!$!๵ࣉ)Vtbhf*!!!;!MW3NBLF/UJNFT/BMFSU`UTVDIJ!\ZZZZNNEE^!!8!$!ΏͿσྴ!!!!!!;!MW3NBLF/UJNFT/BMFSU`UTVDIJ!!9!$!ै଼඾!!!!!!!!;!3124018042!!:!$!ٛ২ྴ!!!!!!!!;!VTQ!21!$!ै଼৪!!!!!!!!;!B/Btbcb!22!23!$0000000000000000000000000000000000000000000000000000000000000000000000000000000!24!$!੝‫ܢ‬୭೰
!25!$0000000000000000000000000000000000000000000000000000000000000000000000000000000!26!27!$!௢࣐υΈ͈ܱ჏!28!mphe>#%|IPNF~0MPH#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$!υΈΟͻτ·Πς!29!mphg>#%|mphe~0MPH/%)cbtfobnf!%1*/%)ebuf!,&Z&n&e*`%)ebuf!,&I&N&T*`%%#!!$!υΈέ͹ͼσྴ!2:!fdip!!#%|mphg~#!'?!0efw0ovmm!31!mph!3?!%|mphg~!32!33!$!ΩΑ͈೰݅
!34!QBUI>0ipnf0VUM;0ipnf0UPPM;0tcjo;0cjo;0vts0tcjo;0vts0cjo;0vts0mpdbm0tcjo;0vts0mpdbm0cjo;%|QBUI~!35!MBOH>kb`KQ/VUG.9!36!37!38!$...............................................................................
!39!$!་ତ͈೰݅
!3:!$...............................................................................
!41!unq>0unq0%%.%)cbtfobnf!%1*`%)ebuf!,&Z&n&e&I&N&T*!!!!!!!!!!!!$!֚শέ͹ͼσ!42!iptuobnf>#%)IPTUOBNF*#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$!΍ȜΨȜྴ
!43!tfne>#%|IPNF~0TFNBQIPSF#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$!Γζέ΁Οͻτ·Πς
!44!tvce>#BMFSU!#!45!sdwe>0ipnf0SDW0EBUB0BMFSU!46!sdwtfne>0ipnf0SDW0TFNBQIPSF0BMFSU!47!48!mw3e>0ipnf0EBUB0MW3!49!pvue>#%|mw3e~0%|tvce~#!4:!51!$!΀ρȜশ͈ਞၭੜၑ೰݅!Ȫvti΀ρȜΧϋΡρȫ!52!fss!FSSPS`FYJU)*|!53!!!fdip!#%|iptuobnf~!%)cbtfobnf!%1*`%|tebz~!FSSPS!%)ebuf!,&Z&n&e&I&N&T*!%|mphg~#!??!%|mphe~0VQDOU!54!!!upvdi!%|tfne~0%)cbtfobnf!%1*/%|iptuobnf~/FSSPS/%|tebz~!55!!!fyju!2
画面 1 echo でファイルリストを出力!56!~fdiṕέ͹ͼσ͈ςΑΠͬ੄ႁ̳ͥ͂2࣐ͅ஠̦̀੄ႁ̯ͦ
!57
ͥȃ̷̭́‫߿؍‬ΟȜΗͬਸ߿ͅ໼͍ఢ̢ͥ΋ζϋΡubssͬঀ
ဥ̳ͥ͂Ȃmt൳အͅΟȜΗ͉ਸͅ໼̺ͭેఠ́੄ႁ̯ͦͥȃ!58!$!ੜၑ඾ັ͈‫෇ږ‬%!fdip!0vts0cjo0+!59!tebz>%)ebuf!,&Z&n&e*
0vts0cjo0522upqqn!0vts0cjo0CNQupSHC!0vts0cjo0EmmQm!5:!$!̧֨ତ͈‫෇ږ‬
vhJoUftufs!61!\!%$!.fr!2!^!''!tebz>%2%!fdip!0vts0cjo0+!}!ubss!62
0vts0cjo0522upqqn!63!$!࡛हশ࣫
0vts0cjo0CNQupSHC!64!tujnf>#%)ebuf!#,&I&N&T#*#
0vts0cjo0EmmQmvhJoUftufs!
!65
mt͉‫ٸ‬໐΋ζϋΡ͈̈́́஠࠯ಒ੄̧̞́̈́ાࣣ̦̜ͥȃ!66!$!۰օZZZZNNEE඾ັΙͿΛ·%!mt!0vts0cjo0+!}!ifbe!67!jg!"!jtebuf!%|tebz~!<!uifo0vts0cjo0522upqqn!68!!!fdip!#Qbsbnfufs!EBUF!fssps;\%|tebz~^#
0vts0cjo0CNQupSHC!69!!!FSSPS`FYJU
0vts0cjo0EmmQmvhJoUftufs!6:!gj28 USP MAGAZINE 2014 July

CODE Review
Review
CODE!71!72!$!ஜٝΓζέ΁͈ક‫ݲ‬!73!sn!.g!%|tfne~0%)cbtfobnf!%1*/%|iptuobnf~/+/%|tebz~!!?0efw0ovmm!3?'2!74!75!$!ܳ൲শ͈ܱ࣫჏
!76!fdip!#%|iptuobnf~!%)cbtfobnf!%1*`%|tebz~!TUBSU!%)ebuf!,&Z&n&e&I&N&T*#!??!%|mphe~0VQDOU!77!upvdi!%|tfne~0%)cbtfobnf!%1*/%|iptuobnf~/TUBSU/%|tebz~!78!79!$0000000000000000000000000000000000000000000000000000000000000000000000000000000「コードの見どころ」
および画面 2 を参照!7:!$!ΟȜΗੜၑ໐
!81!$0000000000000000000000000000000000000000000000000000000000000000000000000000000!82!83!$!੝‫اܢ‬echo でファイルリス
トを出力（画面 1 を参照）

!84!;!?!%|unq~.mw3`ebub!85!86!fdip!%|sdwtfne~0%|tebz~0+/+/%|tebz~@@@@@@!}!87!ubss!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!88!vhsfq!.w!(]@(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!89!vhsfq!.w!(]+(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!8:!ybsht!.K!&!gjoe!&!.uzqf!g!!!!!!!!!!!!!!!!!}

セマフォファイル（画面 3 を参照）
ugrep は grep のラッパー。指定パターンが見つからなくてもエラーステータスは「1」でなく「0」となる。

!91!ybsht!cbtfobnf!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!92!$!έ͹ͼσͬ་۟!93!xijmf!sfbe!gobnf<!ep
実ファイル（画面 3 を!94!!!sdwg>#%|sdwe~0%|tebz~0%|gobnf~#
参照）!95!!!\!.f!%|sdwg~!^!}}!FSSPS`FYJU!96!97!!!$!έ͹ͼσ͈ਬୟ!98!!!dbu!%|sdwg~!??!%|unq~.mw3`ebub!99!!!$!2;ͺρȜΠιΛΓȜΐ๔࣢!!!!!!!3;อ૞৪ߊ໦!!!!!!!!!!!!!!!!!!!4;อ૞ٛ২΋ȜΡ!!!
!9:!!!$!5;࿚̵ࣣ୶!!!!!!!!!!!!!!!!!!!!!6;ਹါഽ!!!!!!!!!!!!!!!!!!!!!!!7;ਅ༆!!!!!!!!!!!!!
!:1!!!$!8;࠯ྴΩριȜΗ2!!!!!!!!!!!!!!9;࠯ྴΩριȜΗ3!!!!!!!!!!!!!!:;࠯ྴΩριȜΗ4!!
!:2!!!$!21;อ૞඾শ!!!!!!!!!!!!!!!!!!!!22;ैު‫!!!!!!!!!!!!!!!!!!!!ࡠܢ‬23;ࠇश‫ٳ‬ই඾!!!!!!
!:3!!!$!24;਋૞ٛ২΋ȜΡ!!!!!!!!!!!!!!25;਋૞৪υΈͼϋJE!!!!!!!!!!!!26;ྚඋέρΈ!!!!!!
!:4!!!$!27;ުྩ΅Ȝ2!!!!!!!!!!!!!!!!!!!28;ުྩ΅Ȝ3!!!!!!!!!!!!!!!!!!!29;!ުྩ΅Ȝ4!!!!!!
!:5!!!$!2:;ުྩ΅Ȝ5!!!!!!!!!!!!!!!!!!!31;ުྩ΅Ȝ6!
!:6!!!$!32;ࢵ૧έρΈ!!!!33;ഐဥ඾!!!!!34;ξȜΎJE!!!!!35;වႁ඾শ
!:7!:8!!!$!Γζέ΁ͬफ͙̳͂ͥ
!:9!!!nw!%|sdwtfne~0%|tebz~0%|gobnf~!%|sdwtfne~0%|tebz~0%|gobnf~/[VNJ!::!epof
211
212!$$!MW3͈ਬୟ
213!jg!\!.t!%|unq~.mw3`ebub!^<!uifo214!!!nlejs!.q!%|pvue~0%|tebz~
215!!!dq!.q!%|unq~.mw3`ebub!%|pvue~0%|tebz~0%|tvce~/%|tebz~%|tujnf~/%|%~
216!gj217
218!$0000000000000000000000000000000000000000000000000000000000000000000000000000000
219!$!ਞၭ
21:!$0000000000000000000000000000000000000000000000000000000000000000000000000000000
221!$!ਞၭশ͈࣫༗ం
222!fdip!#%|iptuobnf~!%)cbtfobnf!%1*`%|tebz~!FOE!%)ebuf!,&Z&n&e&I&N&T*#!??!%|mphe~0VQDOU
223!upvdi!%|tfne~0%)cbtfobnf!%1*/%|iptuobnf~/FOE/%|tebz~
224!$χȜ·έ͹ͼσ͈ॉੰ
225!tfu!,y226!sn!.g!%|unq~.+!?!0efw0ovmm!!3?'2
227!tfu!.y
228!fdip!#%)cbtfobnf!%1*!fyju!1#
229!fyju!1[1] 未処理ファイルを抽出して 1 ファイルに集積（75 〜 87 行目）[2] セマフォファイル
（未処理）を処理済みに変更（画面 3 を参照）

[3] 集積したファイル
を LV2として保存（102〜 105 行目）

「コードの見どころ」
および画面 2 を参照

29

CODE Review
Review
CODE
画面 2 開始・終了を記録する UPCNT ファイル%!hsfq!MW3NBLF/UJNFT/BMFSU`UTVDIJ!%|mphe~0VQDOU
Ȇ
Ȇ
Ȇ
Ȇ
Ȇ
Ȇ
Ȇ
VTQTW12!MW3NBLF/UJNFT/BMFSU`UTVDIJ`31242321!TUBSU!31242321196611ȁȁ‫ٳ‬ই
VTQTW12!MW3NBLF/UJNFT/BMFSU`UTVDIJ`31242321!FOE!31242321196631ȁȁȁਞၭȁȁ
VTQTW12!MW3NBLF/UJNFT/BMFSU`UTVDIJ`31242321!TUBSU!312423211:1131ȁȁ‫ٳ‬ই
VTQTW12!MW3NBLF/UJNFT/BMFSU`UTVDIJ`31242321!FOE!312423211:1141ȁȁȁਞၭȁȁ
VTQTW12!MW3NBLF/UJNFT/BMFSU`UTVDIJ`31242321!TUBSU!312423211:1646ȁȁ‫ٳ‬ই
VTQTW12!MW3NBLF/UJNFT/BMFSU`UTVDIJ`31242321!FOE!312423211:1663ȁȁȁਞၭȁȁ
Ȇ
Ȇ
Ȇ
Ȇ
Ȇ
Ȇ
Ȇ

ੜၑশ‫ۼ‬31ຟੜၑশ‫ۼ‬21ຟੜၑশ‫ۼ‬28ຟ

画面 3 セマフォファイルの生成%!mt!.m!0ipnf0SDW0EBUB0BMFSU0312423210BMBSU`NTH/FOE/312423211:1111ȁȁ
.sx.sx.s..!2!vtq!vtq!2231!!23࠮!21඾!0ipnf0SDW0EBUB0BMFSU0312423210BMBSU`NTH/FOE/312423211:1111

実ファイル%!mt!.m!0ipnf0SDW0TFNBQIPSF0BMFSU0312423210BMBSU`NTH/FOE/312423211:1111!
.sx.sx.s..!2!vtq!vtq!1!!23࠮!21඾!0ipnf0SDW0TFNBQIPSF0BMFSU0312423210BMBSU`NTH/FOE/312423211:1111

セマフォファイル

ࣺ͙৾ͤੜၑ̦ਞၭ̳ͥ͂Γζέ΁έ͹ͼσͬ[VNJັ̧ͅ་ࢵ
%!mt!.m!0ipnf0SDW0TFNBQIPSF0BMFSU0312423210BMBSU`NTH/FOE/312423211:1111/[VNJ.sx.sx.s..!2!vtq!vtq!1!!23࠮!21඾!0ipnf0SDW0TFNBQIPSF0BMFSU0312423210BMBSU`NTH/FOE/312423211:1111/[VNJ
各業務サーバーからのトランザクション（実ファイル）が生成された後に、0 バイトのセマフォファイルが生成されるユニケージ開発手法においては、開始・終了を記録す
るUPCNTフ ァ イ ル を 用 意 し ま す（65 、111行 目）。
UPCNTファイルには、サーバー名・シェルスクリプト
名・処理日・ステータス（開始／終了／エラー）
・日時な
どの有用なデータを記録します。これらの情報から、シェルスクリプトの処理時間やCGIの場合には時間帯別
アクセス回数などを算出することができます（画面2）。

【補足 4】ユニケージ開発手法では、入力業務の種類や時系列 ( 日時など ) ごとにディレクトリを分けてデータ配置します。以下は、システムのディレクトリ構成の例です。

リスト 2 ディレクトリ構成

データ受信
（LV1）

0ipnf0SDW0EBUB0BMFSU0)ੜၑ඾*0)৘ΟȜΗέ͹ͼσ*!!!!!!!!
!!!!!!!!!0TFNBQIPSF0BMFSU0)ੜၑ඾*0)Γζέ΁έ͹ͼσ*0ipnf0EBUB0MW30BMFSU0)ੜၑ඾*0)MW3৘ΟȜΗέ͹ͼσ*ȁ

さらにディレクトリ内にあるファイルを抽出して、フ

LV1の集積データ（LV2）ァイルリストを作成します（75行目）。ファイルを抽出する代表的なコマンドにecho、find、lsがあります。抽出する条件に「*」や「?」などを付けて実行した場合、echo
はシェル（bash、ushなど）の内部コマンドであることから、件数が多くてもデータを抽出することができます。
一方、findとlsは外部コマンドであるため件数が多すぎると「引数のリストが長すぎます」といったメッセージが出てすべて抽出できない場合があります。こうした違いを考慮して使い分ける必要があります。echoコマン
ドの使用例は画面1（P.28）をご覧ください。
【補足 3】今回のケースでは複数のトランザクションファイルを 1
ファイルにまとめましたが、1 ファイルに集積できない場合、1 ト
ランザクションを１ファイル（LV2）
として保存する場合もあります。

30 USP MAGAZINE 2014 July

まとめ
セマフォファイルを上手に扱うことで、正しく実データを集積することができます。今回のようにセマフォファイル（トリガファイル）を使用しないで、実デー
タファイルを作成途中で集積すると、中途半端な状態で取り込んでしまい、後々トラブルの種になる場合があります。
さて、次回は、配信用LV3データを他サーバーへ配信する処理について説明します。

組織文化を変える汗と涙の物語

アジャイル
改 善 塾

ÛઙߏӄǖǬǘǓǾÜ

written by 山海一剛

経営層の問題意識をとりまとめ、
その対策として、すでに多くの会社で改善塾の指導をしていたIT業界出身の高木徹氏の指導を仰ぐ、ということで、社内の合意を取り付けた筆者。時はすでに３月。次年度の施策として前例のない取り組みをスタートさせるには、解決しなければならない課題が山積みでした。それは単に、「時間」の問題だけではありませんでした。

★ࢩভǈ࢓Ʒǁ★

繰り返すことが最大の特徴です。そして私もこの点に、現場を変える可能性を見出していたのですから、
「週

さて前回、
豊田マネージメント研究所の高木徹氏（現に 1 回」はどうしても譲れません。ただ丸一日拘束す

在、同社エグゼクティブ・コンサルタント）を招いて、ることにしてしまうと塾生が集まらないだろう……板社内にリーダーを育成する、というところまでお話し挟みです。結局、塾の開催は毎週木曜日午後、つまりしました。ご存知の方もいらっしゃるかもしれません

毎週だけど半日ということにしました。これは私自身

が、高木徹さんのプロフィールを少しだけ Web からにとっても、中途半端な妥協という印象をぬぐえず、拝借すると̶。2004 年より IT 系企業の赤字転落を防今でもこの判断が良かったのかどうか悩んでいます。

ぎ、ES（従業員満足度）の向上に貢献。このホワイト

もうひとつの課題は塾生をどのように募集するかでカラーの職場カイゼン活動実績が評価され、トヨタ自した。悩んだ末に「肩書、部署、仕事の内容は問わな動車に出向。3 カ月でトヨタのグループ会社のソフト

いが、10 人程度のメンバーを率いている立場の人を」ウェア開発の生産性を 20％以上改善。多くの企業のという表現で、本部長・部長・マネージャを通じて「塾「カイゼン塾」で 1,000 人以上の塾生を輩出し 5,000生を選抜してもらう」という方針を掲げました。塾の人以上のカイゼン経験者を育成……、という方です。

主旨である自律性という意味では立候補制が理想なの

高木氏の指導スタイルは、週に 1 日、リーダー層をですが、「塾の活動は仕事の一環である」ことを、本集めて「塾」を開催するというものです。リーダーとは、人にも上司にもしっかりと認識してもらうために、人管理をしているだけではなく、自分自身が現場で業務

事部から各所属長への人選指示という形にしたのでに携わり、手取り足取り若手を直接指導している中堅

す。各本部に向けて正式な人選依頼を行ったのは 3 月

社員をイメージしています。しかし、2 つの課題が横の下旬。さて何人ぐらい集まるだろうか。とても気にたわっていました。

なりました。

まず、現場の「働き頭」を週に丸 1 日拘束すること待っているだけでは心配なので、考えに共感してくになります。とても部長やマネージャが許可するとはれそうな人には「来年度からこんな制度を立ち上げよ

思えません。しかし高木氏の実績をみると『幹部候補うしているのだけど、もし上長から相談されたら、参生を毎週 1 日塾に出席させ、成果を上げている』との加を希望してね」と説明して回りました。ある人には、こと。1 週間という短い期間内に「塾で学び、現場で出張帰りの新幹線の席で熱く語って勧誘。疲れている

実践し、結果を次の塾に持ち寄る」というサイクルをところにさぞかし迷惑だったことでしょう。でも、こ40 USP MAGAZINE 2014 July

の人はⅠ期の塾生として参加、しかも非常に熱心に活動してくれたのでした。

★݅ืࠀƤǢǚǡȎÁȔƂ‫ؾ‬źƜƠź★
塾を毎週実施するためには、上記 2 つの課題のほかに別の壁がありました。正式決定した 3 月初めには、
すでに高木氏のスケジュールが埋まっており、なんと2 週間に一度しか時間が取れないとのこと！ これも、
前回記事の最後に述べた、塾開講に至るまでに多々あったハードルのひとつです。それでも週 1 回の開催
は譲りたくありません。結局、高木氏が来られない日は、私が講師として塾をファシリテートすることにしてしまいました。周囲に協力してもらいながらここまで来記念すべき第 1 回目のアジャイル改善塾で行われたワークショップの様子

たのに、今さら私が逃げ出すわけにはいきません。私自身が高木氏から直接指導してもらえる機会を得たわ

学ぶ塾だと思っている人が今でもいるぐらい、紛らわしけですから、無謀は承知の上で引き受けました。1 週

いネーミングなのですが、塾で学ぶことで両者に共通

間おきに高木氏が訪れるので、来られた日に高木氏のする普遍的な価値観に気づいてほしいと考えたのです。

そばで指導の仕方を学びながら次週にすべきことを指導してもらいました。それをもとに翌週、私が場をファ
シリテートする、という見習い講師としてのサイクルも回すことになったのです。

★ผป¯ÛǋǡȌǍȔӏ਄ࢩÜ★

★ǖǬǘǓǾ★
会議室の予約やら、社長にスピーチをお願いするやら、慌ただしくしているうちにどんどん時間が流れ、
とうとうキックオフの日がやってきました。2013 年
4 月 16 日です。集まった塾生は 15 人。ソフトウェ

最後に残ったのが名前です。他社の例では、
単に「改ア開発部門だけではなく、データセンターの管理部門、

善塾」とか、あるいは「自律改善塾」とか、それぞれ営業事務、総務、人事、経営企画など、実に様々な部の思いを込めた名前が付けられているようです。数年門から塾生が集まりました。これから毎週木曜日、何前からうちの会社は「アジャイル開発」というものにが起こるのでしょうか？ 私自身も期待と不安が入り力を入れてきました。
「アジャイル」とは、
「機敏な」
「身

混じった思いでした。 [ 続く ]が軽い」を意味する形容詞で、機動力を重視したソフ
トウェアの開発手法のことなのですが、これについては今後詳しくお話ししましょう。
実はこのソフトウェア開発スタイルは米国発祥でありながら、車というハードウェアを作るトヨタ生産方
式から大きく影響を受けています。短い期間で計画・実践・振り返りを繰り返すこと、開発メンバーの自律性や持続的改善活動を重視することなど、改善塾と共通の部分がたくさんあります。改善塾もトヨタの人づくりがルーツであることを考えれば、むしろ当然のことです。そこでやっと「アジャイル改善塾」という名前を付けるに至りました。
「アジャイル改善塾」は、ソフトウェアの開発手法を

41

機
自動販売

第4弾＠

今月の 太田智美がスゴい人と盃をかわしつつインタビューする企画
interviewed by

太田智美⥄േ⽼ᄁᯏ‫ࡦࡑࡠߩߊ߷ߪࠇߘޔ‬……と、あるエンジニアは言っ

ズラーっと並んだ自動販売機。その自販機を見つめなた。そう、今回のゲストはアイ

がら、和田氏は語る。
「自販機には、その時代の先端技

ティメディア 技術開発本部 和術が最大限に詰め込まれている。限られた空間や材料

田良太氏。彼は自動販売機を愛で美味しい一品をいかにして作り上げるか。可能性をし、自販機巡りのしすぎで車をぎりぎりまで追い求める。そこに自動販売機エンジニア

1 台壊してしまった男だ。

の魂があると思う」。

http://shuma2.net/

和田氏は、仕事では Ruby や Perl を、趣味では Ruby
on Rails や Node.js、WebSocket を使ってサービス
やアプリケーションを開発しているエンジニア。そしてさりげない自動販売機だが、それを作るにはかなりの自動販売機を語らせれば彼の右に出る者はない。

チャレンジ精神が必要らしい。

彼のお気に入りの場所は、成田にある「オートパーラーシオヤ」。そこには東京近郊では珍しいハンバーガーの自販機があり、屋根もテーブルも椅子もあるので、プログラミングには最適な空間だという。
そんな和田氏に連れられて、今回のインタビュー会場へと向かう……。ここは……！！！

58 USP MAGAZINE 2014 July

今月のᦨᒝߩ⥄⽼ᯏߣߪ㧩‫ޓ‬

和田氏によると、冷凍されたおにぎりと唐揚げを、自販機の真ん中

太田：なぜ、自動販売機に惹かれていったのでしょうか？

にある電子レンジで温めてから出

和田氏：もともと古い機械が好きで、からくり時計のす構造になっているそうだ。

ように自動で動くものが好きでした。ディズニーラン
ドにもジェットコースター（アトラクション）のレー
ルを見るのが楽しみで行っていました。そういうとこ
ろから徐々に自動販売機の魅力に取り憑かれていったんです。
太田： これまでに見てきた自動販売機の中で、印象に残っているものはありますか？
和田氏：いろいろあります。技術者として唸ったのは、

いただきまーす！

うどんの自販機です。あの狭い中で、ちゃんと湯切りするところがすごい。豪快だったのが、かき氷専用自販機。この自販機には「いちご」と「レモン」のボタ
ンくらいしかなくて、ボタンを押すと固まったかき氷がドーンと出てきて、その上にシロップがかかるのですが、シロップが全部あふれてしまうんです。カップが小さいのか、氷の量が多いのか……食べにくかったですね。お味噌汁の自動販売機も忘れられません。具材がボンって落ちてきて、とろとろぬる〜いお湯が入

こうして取材は無事終了。和田氏は自動販売機に囲まる……。最強の自販機は、カレーの自販機です。そのれながら、幸せそうに杯を乾かしていた。

自販機コーナーにはインターホンが付いていて、押すとおばあちゃんがカレーを持って出てくるっていう伝

自販 機 型の貯金箱

説が……！
日本中どこにでもあると思っていた自動販売機。奥が深い……。そろそろ、お腹も空いてきたので「チャーシューおにぎり＆からあげ」を購入。

……今日も 1 人のエンジニアが、どこかで戦っている。
国立音楽大学を卒業後、慶應義塾大学大学院メディアデザ
イン研究科に入学。大学院在学中に、 情報処理学会 第12回
「Internet and Operation Technology（IOT）」研究会において「おところりん ： ソーシャルネットワークにおける偶然性を用いた音楽生成」
を発表し、学生奨励賞を受賞。同大学院を修了後、アイティメディア株式会社に入社。
営業配
属を経て、
＠IT統括部に異動。＠ITでは記事執筆を担当する
ほか、年間100以上のコミュニティ・イベントに参加し、ドラインタビュアー 娘、マスコットキャラクター、コメンテーター、凸撃娘とし太田智美てさんざん暴れまわり、
愉快な生活を楽しんでいた。
ところが！ 2014年4月よりねとらぼ編集部に異動という軽い大事
件が発生。
これから何をやらかすかは未知数である。
Facebook：http://www.facebook.com/tb.bot
Twitter：@tb̲bot

59

ల
਱
२
ٝ
さぁ今日も、始まりますよ、このコーナー。こんにちは、シェルスクリプト、大喜利よ。きもちいね、ちょめなのです。
（JM にあるので、C シェル系での解答も OK ！

̜͂ ŬŴũȂ ŻŴũ ͜ ŐŌ ̱̱̹͘ͅ）うど今頃、いい陽気。みなさんは、いかがおすごし、অȂġsh 大喜利はシェルスクリプトを披露する場なのですかぁぁ？（なんじゃそれ、最後の「ぁぁ」が、意で、őŦųŭ ͞ œŶţźȂ őźŵũŰů ͉̈́̓ঀ̻̽͝Θι

味不明）です。そもそも JM にも載っていません。逆にシェ……あまりやるとしつこいのでこのくらいにしとき

ルスクリプトにとって不可欠な awk や sed 等はます。えー、三か月のご無沙汰、シェルスクリプト大OK です。JM にもありますし。でも、よっぽど

喜利（略して sh 大喜利）のコーナーです。

面白ければ、Perl とかなきにしもあらず ??

冒頭がなぜ五、七、五だったのかと言いますと、今ࡼȂġOpen usp Tukubai(iuuq;00vfd/vtq.mbc/dpn0)

日のお題で恐らくシェルスクリプト界初の試みであろも使用 OK ！

う「シェル俳句（川柳）」をやるからなんですよ。コ

られないと採用はキビシいですよ〜。

マンドを五、七、五個並べて思いの丈を述べてもらう

ルールもおさらいしたところで、さあ始めましょう !

ルールにしたんですが、果たしてどんな句が寄せられུ๔‫ٳ‬ই

たのか。乞う御期待、あぁ乞う御期待、乞う御期待。
ではまず本コーナー、シェルスクリプト大喜利のルールのご説明から。

ΏͿσΑ·ςίΠఱ‫ܔ‬၌͉͂ΏͿσΑ·ςίΠఱ‫ܔ‬၌අခ͈σȜσ

但し、使う意義がそれなりに感じɃ֚࿚࿒ɄĲ ȡ ů Ȫů ͉֨ତ́ঐ೰ȫ ͈ুடତ͈ಎͅంह̳ͥ ȸσȜΑɁͺȜυϋ Ȇ βͺȹ ͬ஠̀‫ͥ͛ݥ‬ΏͿσΑ·ςίΠͬ੥̞̩̺̯̞̀ȃ

いつまで続くか一問目の整数問題。今日は、ルース＝アーロン・ペアというやつですよ。隣り合う 2 数֚Ȃġsh 大喜利はクイズやテストではありませぬ。なののうち、各々の素因数の和が等しいものだそうです。

で決まった答えというものはないのです。あえて

例えば 8 と 9 などが該当しますので factor コマンド言うなら面白いスクリプトが正解！

あたりで素因数調べて確かめてみてください。

ඵȂġ面白いスクリプトとは、例えばこんなもの。

というわけで factor コマンドを使うのが定石なんͼȂġ人が考えつかない意外性があるですが、果たしてどんな解答が来たでしょうか。

υȂġ美しい、芸術的、記述がシンプル、高速、などɝŌ ঍ํ͈ٜ൞

ΧȂġアイデア・こだわりが光るΣȂġネタになるバカバカしさ、くだらなさがあるなど。でも最後のは段位強制返還の恐れありよ。:-)
२Ȃġス ク リ プ ト 動 作 環 境 は Linux と し、 基 本 的 にLinux JM(iuuq;00mjovykn/tpvsdfgpshf/kq0) に記載されているコマンド及び機能のみ使用可能とします。これは多くの人が楽しめるようにするた
62 USP MAGAZINE 2014 July

2!$"0cjo0ti
3!tfr!%2!}
4!gbdups!}
5!xijmf!sfbe!i!s<!ep
6!!!fdip!%|i&;~!%))!%)fdip!%s!}!us!(!(!,*!**
7!epof!}8!bxl!(
9!|:!!!jg!)c>>%3*!|qsjou!#)#!b!#-#!%2!#*#~
21!!!b>%2

C U I 徹底仕事術！
ΏͿσΑ·ςίΠఱ‫ܔ‬၌
22!!!c>%323!~(

ワンライナーがあるね。細かいこと言うとこの解答の場合、素因数の和が等しいものが 3 つ連続している

毎度投稿ありがとうございます。わかりやすいコー

場合は、ペアじゃなくて 3 つ並ぶけどね。でも全投ドを心掛けているということで、下手にヒネらないの

稿中最速だったし、お疲れ様〜。労をねぎらい֚౲਎は師範らしい解答ですね。

ဓ。これで五段ね。·΀ϋॸ༞‫̱̀ݯ‬๢Ⴚٝ໘̱͇̀ȃ

下手なヒネりはないけど、factor の出力から元の値の抽出と、素因数の和を求める 5 行目のやり方はオモシロイね。֚౲਎ဓ、これで二段だ。

ɝ͚̽̾Ȝ̯͈ٜͭ൞
2!$"0cjo0ti
3!
4!JGT>%(;!]u]o(5!
6!tfr!3!%2!}7!gbdups!}
8!xijmf!sfbe!Ovn!Gbdupst
9!ep:!fdip!#%Ovn!%))!%)fdip!%Gbdupst!}!us!#!#!#,#*!**!#
21!epof!}22!vojr!.E!.g2!}
23!dvu!.e#!#!.g2!}
24!ybsht!.o3ɝŕŔŃŠŌśŌ ̯͈ٜͭ൞
2!$"0cjo0ti
3!fdip!#gps)y>2<y=%2<y,>2*|!z>y,2<!tvn>1<!oy>y<!oz>!
z<!gps)j>3<j=>trsu)z*<j,>2*|!jg)oy&j>>1*|tvn,>j<x!
ijmf)oy&j>>1*oy0>j<~<!jg)oz&j>>1*|tvn.>j<xijmf)oz!
&j>>1*oz0>j<~~<!jg)tvn!>>!1*|qsjou!]#y>]#<qsjou!y!
<qsjou!]#-!z>]#<z<~~#!}!cd

これは factor コマンドに頼らない、bc コマンドによる華麗なる解答ですね。前回もこの手法で安全素数のお題を解いてくれました。
ほとんど bc のコード。引数 “$1” さえどうにかなれば、シェルスクリプトじゃなく “#!/usr/bin/bc” とかやって純粋な bc にもできちゃうんじゃなかろう
か ??? これからも bc 派の回答をヨロシクね！一段授
与、これで折り返しの五段だ。
◇

そして、これは偶然か必然か ? 似ている解答が来ましたよ。もちろんどちらがどちらに似ているということはありませんが、こちらは IFS 変数や uniq -D
オプションといったやや希少な技を使ってますね。

◇◇

今回の整数問題の難易度はどうでしたかねぇ。
さて、それじゃ次のお題に行きますよ。
Ƀඵ࿚࿒Ʉ

添付コメントによれば、uniq の cut のオプション

ດ੔වႁ̥ͣြͥ ŉŕŎō Ξ΅ΑΠඤ̜ͥͅ Ŗœō ໲লႥ

で韻を踏んでいるらしい。なるほどね。俳句とは関係ͬ஠̀ಒ੄̳ͥΏͿσΑ·ςίΠͬ੥̞̩̺̯̞̀ȃ ΗΈ͈௺ないお題で韻を踏むとはアタクシの予想の先を行って଻౵̱ܱ͂̀श̯̞͈ͦ̀ͥ͜͜Ȃ ΗΈ͈‫̞ͥ̀ͦ͘ޖͅۼ‬いてて感心したよ。よし、ඵ౲਎ဓ。只今五段。

͈͜͜஠̳̀́ȃɝńķŉĹŐĸ Ȫ·΀ϋȫ ̯͈ٜͭ൞

次はフィルタリングの問題ですね。HTML から URL

2!$"0cjo0ti
3!tfr!3!%2}ybsht!gbdups}ztvn!ovn>2}tfmg!2!OG}us!.e;}vojr!.2!.d}tfmg!2!3}hsfq!.w!_2}tfe!(t0])/+]*!])/!
+]*0tfr!]3!%))]3,]2.2**}us!]]]]o!-0f(}tfe!(t0-%00!
(

こっちは実質ワンライナーですな。Tukubai コマを抜き出すフィルタということで、これはそこそこ実用的なお題じゃないですかねぇ。
「大喜利が実用的なお題出してどーする！」と思
われてしまった、かどうかは定かではありませんが、ちょっと投稿が少なめ……。お題としてのヒネリが足ンドも使ってくれてますね。ありがとうございます。

りなかったかな？

実はこの解答は二度修正投稿されたもので、最初は途ɝŕŔŃŠŌśŌ ̯͈ٜͭ൞

中の sed の部分以降が AWK になってて「AWK が消

2!tfe!#t0]#0]o0h#!}!fhsfq!#_)iuuq}iuuqt*;00#

せなくて悔しい」とのことでした。しかし次の投稿でいやぁ、これは短い！たったこれだけでいいのか ! ？

「一応 AWK 消せました」ということで while; do 〜と思って curl が吐き出す HTML を食わせたみたけど、done に差し替わっていました。しかし「while もな

確かに URL が出てきて動いてます。

んかイヤだった」ということで来たのがこの解答です。

うーん、やるなぁ……と思ったけど、このお題の文

うーん、AWK や while を排除したかったその気持

章をよく見てもらうと「タグの間に挟まれているもの

ちはちょっとわかる。しかし途中の sed はスゴいことになってるねぇ。置換コマンド “s///e” の中に更にも」というのがあるんだな。つまり、<a href="URL1 ">URL2 </a>63というのがあったら URL1 の部分だじゃなくて URL2

す。どんな作品が来るか楽しみにしてたんですよ。まの部分も取ってきてねということなのだ。これは残あ初めての試みなのでとにかくやってみましょう。

念！というわけで、段位は授与できず。他に何かヒネɝŌ ঍ํ͈ٜ൞

リがあれば、授与してたかもしれないけどね。

2!$"0cjo0ti
3!tmffq!4!}!tmffq!4!}!tmffq!4!}!tmffq!4!}!tmffq!4!}
4!tmffq!5!}!tmffq!5!}!tmffq!5!}!tmffq!5!}!tmffq!5!}!
tmffq!6!}!tmffq!6!}
5!tmffq!4!}!tmffq!4!}!tmffq!4!}!tmffq!4!}!tmffq!4
6!$֚໦‫ۼ‬
7!$ૢ̠̱̹̦͂͢
8!$̧̳̪̹ܳ
9!$!!!!!!!!!!!!!Lɝչऎाࠠ໤̯͈ٜͭ൞
2!tfe!(t0])iuuq]}iuuqt]}guq]*0]o]20h(!}!tfe!(t}\_^B!
.[b.{1.:/`;0@$A"%&'(#(#()*+,-<>\.^/+%}}(!}!fhsfq!
.j!(_)iuuq}iuuqt}guq*;00\b.{^\b.{1.:/.^,\b.{^]?)0\_^B.[b.{1.:/`;0@$A"%&'(#(#()*+,-<>\.^+*@(!}!tps!
u!}!vojr

こちらはえぇと、タブの間の URL も取り出していなるほど。登場する sleep の秒数を合計すると 60

るようですな。そうそう、こういうことです。添付コ

秒であるものの、実際に実行すると 5 秒で終了してメントによると、RFC3986 で定義された URL としてしまうというオチですな。

正しい文字が続く範囲を取り出してるとのことです。

全てが同時に開始されるという、パイプで繋がれたなるほど、途中に出てくるたくさんの記号はそのた

コマンドの性質だよね。はい、֚౲਎ဓ。これで三段。

めか。ftp も対象としてたり、sort&uniq で整理してɝ̹̯͈ٜͭ͘൞

たり丁寧なのもいいね。よし、֚౲਎ဓ。これで二段。

2!fdip!‫!}!͈ؠ‬fdip!‫!}!͈ؠ‬fdip!‫!}!͈ؠ‬fdip!‫!}!͈ؠ‬f!
dip!‫}!͈ؠ‬ɝͼΗυȜ̯͈ٜͭ൞

3!fdip!‫!}!͈ؠ‬fdip!‫!}!͈ؠ‬fdip!‫!}!͈ؠ‬fdip!‫!}!͈ؠ‬f!
2!$"!0cjo0ti
3!nlejs!iphf
4!de!iphf
5!xhfu!.Ism!2!%2
6!gjoe!/!.uzqf!g!}!tfe!(t"_/"iuuq;0"(

この人はいつもヒネりというかヒネクレた解答を送ってくれますね。添付コメントには「デッドリンク

dip!‫!}!͈ؠ‬fdip!‫!}!͈ؠ‬fdip!‫}!͈ؠ‬4!fdip!‫!}!͈ؠ‬fdip!‫!}!͈ؠ‬fdip!‫!}!͈ؠ‬fdip!‫!}!͈ؠ‬f!
dip!‫͈ؠ‬დͬ໳̡̡̡̡̡̡̫!?0efw0ovmm
5!$!໳̡̞̻̞͇͝

あぁ、
これはアレですね。
唄えばいいんですね。
まぁ、最後が /dev/null なのが侘しいですな。

を除去する点が自慢です。他の細けぇことは気にすん

いやぁ、/dev/null が付いているから動作的には全な」って書いてありました。まあ面白くはあるので紹く意味がないんだけど、/dev/null を付けるだけでと介しますけどねぇ。ツッコミどころ多数につき、こりゃ

たんに侘しくなるね……。/dev/null ごときでこんなダメですよ。

にしんみりさせられるとは！深い、深いよ旦那。苦労https だろうと ftp だろうと全て http と決めつけてして生きてきた貴方の人生が目に浮かぶようだ。このるし、GET メソッドの CGI 変数部分が取り出せてな

先もどうか強く生きていってもらいたい。よし、応援

いし、そもそも標準入力から来る HTML っていう問題の気持ちを込めて二段授与。
（なにやってるんだ、ア

文を無視してるじゃないか！あまり堅いこと言うのはタクシは……）

趣味じゃないけど、なんかツッコミ入れられるところ

ɝ‫׺‬ඵ࣢̯͈ٜͭ൞

は全部ツッコめと言われてるような気がするのでとりあえずしといたよ。でも、wget で取り出すというア
イデアは面白いね。よし、႟౲਎ဓ！三段のままだ。
◇◇◇

さて、お待ちかね。このお題いきましょう。
Ƀ२࿚࿒ɄΏͿσ෰߉ Ȫ୼࿮ȫ ͬࣉ̢̩̺̯̞̀ȃ ‫ུܖ‬σȜσ͉ȤȤȆġ ĶĬĸĬĶ ́ Ĳĸ ࡢ͈΋ζϋΡͬΩͼί́ࠒ̪Ȇġ ຈါͅ؊̷̲͈̀߉͈փྙ͈ٜ୰ͬັ̫ͥ

巷で人気の「アセンブラ短歌」に対抗してのお題で64 USP MAGAZINE 2014 July

2!\!%SBOEPN!.hf!27495!^!''!\!%SBOEPN!.hf!27495!^!''!
\!%SBOEPN!.hf!27495!^!''!\!%SBOEPN!.hf!27495!^!''!
\!%SBOEPN!.hf!27495!^!''
3!\!%SBOEPN!.mf!27494!^!''!\!%SBOEPN!.mf!27494!^!''!
\!%SBOEPN!.mf!27494!^!''!\!%SBOEPN!.mf!27494!^!''!
\!%SBOEPN!.mf!27494!^!''!\!%SBOEPN!.mf!27494!^!''!
\!%SBOEPN!.mf!27494!^!''
4!\!%SBOEPN!.hf!27495!^!''!\!%SBOEPN!.hf!27495!^!''!
\!%SBOEPN!.hf!27495!^!''!\!%SBOEPN!.hf!27495!^!''!
sn!.js!0+

編集部注：̭͈΋ȜΡ͈৘࣐͉̩̪ͦͦ͜ুࡨୣහ́ ĢĢĢ 損害が起きても責任とれませんからねっ！
えぇと、添付のコメントによりますと「気の小さC U I 徹底仕事術！
ΏͿσΑ·ςίΠఱ‫ܔ‬၌
い私のためのৃଲ͈߉」だそうです。うーん確かにとうございました。

……。$RAMDOM 変数は 0~32767 の範囲をとるか

ൎࣂఱ༡ਬら各条件文の確率は 1/2 で、最後のコマンドが実行される確率は最終的に 1/65536。しかも実行されるコマンドはホームディレクトリをまっさらにするコマンドなんだけど、万が一起動しても確認プロンプトがষ͈̤ٝఴ֚Ȃġ1 〜 n（n は引数で指定）の自然数の中に存在す
る「半素数」を列挙するシェルスクリプトを書い出るという用心っぷりです。
これは rm という危険なコマンドを付けたことに対てください。

して叱るべきか、それとも 1/65536 という低い確率ඵȂġ0~9 のいずれかの数 4 つが引数で与えられる。こで rm を起動して、しかも -i オプションを付けるといれらの数字に任意の四則演算を施して 10 にできうあまりのいくじのなさに対して叱るべきか悩むね。

る場合のみ、戻り値 0 を返すシェルスクリプトを

いやぁ、シェル俳句って作者の性格がよく現れるね。

作成してください。

なんかモヤモヤするけど、֚౲਎ဓ。これで六段だ。

ͼȂġ4 つの数の順番は、入れ替えアリとするのでもナシとするのでも、どちらの方針でも OK。

ɝŵŠŬŢŸŢŪ ̯͈ٜͭ൞
2!fdip!.f!(]y2C\3]y2C\7D͏(!''!fdip!.f!(]y2C\7Dͥ(!
''!fdip!.f!(]y2C\7D̞(!''!fdip!.f!(]y2C\7D̫(!''!
fdip!.f!(]y2C\7D͞(!''3!fdip!.f!(]y2C\6B]y2C\4D̥(!''!fdip!.f!(]y2C\4Dͩ(!!
''!fdip!.f!(]y2C\4D̴(!''!fdip!.f!(]y2C\4D͂(!''!
fdip!.f!(]y2C\4D͍(!''!fdip!.f!(]y2C\4Ḓ(!''!fdi!
p!.f!(]y2C\4D͚(!''4!fdip!.f!(]y2C\8B͙(!''!fdip!.f!(̴(!''!fdip!.f!(͈(!''!fdip!.f!(̤(!''!fdip!.f!(͂]o]o(

コードを見ると「ふるいけや…」って書いてあるんです。でも何やらエスケープシーケンスのようなものがくっついていまして、色でも付けるのかと思って実行してみると……、あらま。せっかくなので実行結果

υȂġカッコを付けるのをアリとするのでもナシとするのでも、どちらの方針でも OK。
要は面白いコードになるならどっちも OK よ。
२Ȃġ名 前付きパイプを作るコマンド mkﬁfo がありますね。でもアタクシ、なかなかうまい使い道を思いつきません。そこで、あなたの知ってる mkﬁfo（名前付きパイプ）のウマい使い方を披露してください。

ൎࣂ͈̱̥̹
お題への解答は、お名前（ペンネーム）、解答したを載せてみました。

いお題番号、解答スクリプト、簡単な補足の四点セッ%!fdip!.f!(]y2C\3]y2C\7D͏(!''!fdip!.f!(]y2C\7DȤȤ
͙!̥!͏
̴!ͩ!ͥ
͈!̴!̞
̤!͂!̫
͂!͍!͞
!!!̭
!!!͚
%!!

トで下記の宛先へ。一人何問でも何個でも解答可！

エスケープシーケンスでカーソルを移動して、縦書きにしたのか。これは、俳句を詠むというよりは俳句を詠む環境を作る作品だなぁ。詠んでる句も芭蕉だし。

尚、次回締め切りは Ĺ ࠮ ĲĲ ඾ Ȫ࠮ȫ ࡿஜ ı শとします。雑誌は月刊化しましたけど、本コーナーは今までのペースでゆる〜く続けていきます。約二か月後の締め切りまでじっくり考えてください。それまで何度でも解答の投稿と修正を受け付けます。

̤ఴ̱̱̓̓͜௣̩̺̯̽̀Ȝ̞
お 題 の 投 稿 も 大 募 集。 こ っ ち は 締 め 切 り な し で

うーん、まあいいか。֚౲਎ဓ。これで二段だ。

ずーっと募集中。そして、考えてくれた方にも段位を◇授与します。自分で出題して解答するのも、OK ！

◇◇シェル俳句は、作者の心情や性格が顕れて面白いね。でも、全体的に同じコマンドの繰り返しが多かったなぁ。もっとたくさんのコマンドを駆使した句が見たいね。またそのうち開催しようかな。
といったろころで本日の大喜利はこれにてお開き！

ൎࣂ୶
どちらも投稿先は、白ければ（ワリと）何でもあり！

です。面じゃんじゃん投稿

待ってます !

読者の皆さん、投稿してくれた皆さん、今回もありが65

USP MAGAZINE

ビックなデータで、どどん・どどん・どどんどん！

特集

愛され
データサイエンティスト

ǋ¯ǴǚÁǡǑȜǡǴ
ƉǂƝŸƠƕƸȏ

ユニケージ開発手法教育講座「ユニケージ開発手法教育講座」は、ユニケージ開発手法におけるデータ管理の方法や、オリジナルコマンドの使用方法などをハンズオン形式で具体的に学べる講座です。UNIX の基礎からユニケージ開発手法による

http://www.usp-lab.com/LECTURE/CGI/LECTURE.CGI
ǡ
ȏǴǚÁ
ࢬܹ‫ރ‬
սਖ֦

も充実中！
続々と新講座K1

コマンド学習編

K2

シェルスクリプト学習編（帳票・バッチ処理）

K3

シェルスクリプト学習編（ウェブアプリケーション処理）

K4

ユニケージアーキテクチャ編

K5

ユニケージ開発環境セットアップ編

K6

システム運用・管理編

K7

プロジェクトマネジメント・人材育成編

KSQL

SQL エンジニアのためのユニケージ活用編

KSTAT

ユニケージにおける統計コマンド編

UNIX 初心者のための講座などもご用意しています。
技術の草原で百獣の王を目指す
エンジニアたちの新感覚トークライブ！

2014 July vol.15

開発プロジェクトの進め方まで、ユニケージエンジニアとしてのトータルスキルを習得できます。

新連載

Linux女子部誌上講座
リナ女のたしなみ〜写真管理編〜

金融システムにおけるUNIX の歩み

http://techlion.jp/

上記のサービス内容は 2014 年 6 月現在のものです。
最新の情報は弊社ホームページにてご確認ください。

ISBN 978-4-9048-0709-5
C3455 ￥500

USP 研究所
定価（本体 500 円＋税）

Artwork created by Koji Ishizuka. © 2012 Zie's Bank .Co,. LTD All rights reserved.

2014Vol.
15
7
y
l
Ju
¥500