Download サンプルPDF - UEC

Transcript
今 使 ってる 道 具 も 、今 やってる 仕 事 も 、み ん な 誰 か の も の づ くりによって 生 ま れ た 発 明 品 。
ISSN 2187-9664
USP
MAGAZINE
2u0tu1m2n
a
400Yen
for the sophisticated shell scripters
シェルスクリプトに何でもおまかせ
Open usp Tukubai
シンプルレシピ Web編
デール・ダハティー氏
に訊く、技術者哲学
TechLION再録
砂原秀樹
次の世代とともに進む未来
好評連載
原色Linux美女図鑑
菅雄一 中小企業手作りIT化奮戦記
新連載・長谷川猛 うにっくすなやつら
開催10年目 LL Decadeイベントレポート
Artwork created by Koji Ishizuka. © 2012 Zie's Bank .Co,. LTD All rights reserved.
USPMAG201209_yorinuki_cs55.indb 1
2012/10/12 17:32:57
From Editor
今年も秋がやってきました。読書の秋、スポーツの秋。多くの作物も収穫され、クリエイティブな季節
ですね。
そんな秋にふさわしく、今回の USP MAGAZINE の裏テーマはものづくりです。
技術者哲学の記事でインタビューに伺ったのは、ものづくりコミュニティー雑誌「Make」発起人のデー
ル・ダハティー氏。オライリー・メディアの創業から UNIX 書の執筆、そして雑誌 Make の発行に至るま
で、バラエティー豊かなものづくりの精神が氏から伝わってきました。
一方で、今回の TechLION 再録記事に登場している砂原秀樹先生がまた、ものづくり精神あふれる方だっ
たのです。日本のインターネットを作り、新しい学科を作り、そして今、次世代を担う人材を育てていらっ
しゃいます。
TechLION のトーク中、自らを「立ち上げ屋」と称していらっしゃいました。あのようにしてプロジェク
トを次々と成功させてきた秘訣はなんだろう……、その一つはトークにも滲み出ていました。それは見
識と冗談を絶妙なバランス感覚で繰り出し、各界の人々と渡り合う能力なのでしょう。
だから今回の TechLION 記事。当時の先生の雰囲気や人柄がありのまま伝わるよう、普通の雑誌なら割
愛されてしまうであろう冗談や口調を、普段にも増して残しました。
ものづくりに長ける人は仲間づくりも長けている。二つの記事を編集するなかで、そんな共通点が見え
てきました。
秋と言うクリエイティブな季節、皆さんもスキルを磨くと共に勉強会などに参加し、仲間を増やしてみ
てはいかがでしょう。
USP MAGAZINE 編集部
Contents
特集 1 シェルスクリプトを本気で使い倒す Open usp Tukubai シンプルレシピ Part2 … 3
ユニケージエンジニアの作法 第 4 回 …………………………………………………………………………… 今私たちは何を学ぶべきか 第 6 回 大岩元 ……………………………………………………………………… TechLION 再録 砂原秀樹 ―― 思えば遠くに来たもんだ。次の世代とともに進む未来 ………………… 新連載 うにっくすなやつら 長谷川猛 ………………………………………………………………………… 原色 Linux 美女図鑑 ―― 第 5 回 西本恭子 ……………………………………………………………………………… 11
LL DECADE イベントレポート ………………………………………………………………………………… 12
漢の UNIX 第 3 回 後藤大地 ………………………………………………………………………………………… やわらかマッドサイエンティスツのプログラミング講座 ∼ ジャクソン構造図編 ………………………… -
特集 2 デール・ダハティ氏に訊く、技術者哲学 …………………………………………… 16
中小企業手作り I T 化奮闘記 第 4 回 菅雄一
…………………………………………………………………… -
シェルスクリプト大喜利 第 6 回 ……………………………………………………………………………… 20
Tech 数独 ……………………………………………………………………………………………………………………………… 24
天地概況 奈須蛍路 / 編集後記 …………………………………………………………………………………………………… 25
※ 薄字で記している記事は、よりぬき版には収録されておりません。また、本誌とは収録順序が若干異なります。
2
USP MAGAZINE 2012 autumn
USPMAG201209_yorinuki_cs55.indb 2
2012/10/12 17:32:58
特集1
シェルスクリプトを本気で使い倒す
Open usp
Tukubai
ἉὅἩἽἾἉἦ
Part2・Web編
USP マガジン編集部
Tukubai、
それはシェルスクリプトをプログラミング開発言語として
本気で使うためのコマンドセット。
「本気で使う」ということは、
決して無理矢理使うことではない。
実用的に使うことができるという意味である。
前回は帳票作成と数理演算への活用例を示した。
今回は Web アプリケーション開発への活用例を示そう。
レシピの中で紹介されているコードのいずれもが、
簡潔な記述で収まっていることに驚くことだろう。
それこそが本気で使えることの証なのだ。
準備
ShellScriptで Web アプリ開発。
それもTukubai の得意技。
レシピ1
HTMLで書かれたデータを取り込む。
レシピ2
HTMLを動的に作成する。
レシピ3
AjaxでWebフォームの使い勝手をよくする。
オマケ
宝くじチェックアプリを使ってみる。
USPMAG201209_yorinuki_cs55.indb 3
2012/10/12 17:32:58
੔๵
ΏͿσΑ·ςίΠ́ŘŦţͺίς‫ٳ‬อȃ̷ͦ͜ŕŶŬŶţŢŪ͈ංփܿȃ
Tukubai は、シェルスクリプトをプログラ
ム開発言語として本気で使うべく作られたコ
マンド集だ。
これは前号の本特集でも述べた。
しかし、Tukubai の説明をしている中でよ
く返される質問がある。
「なるほど、HTML
その粒度がよく考えられ、適切だからなのだ
が、短いコードは開発の迅速化に寄与する。
Open usp Tukubai を
インストールする
を担当する Java や Perl や Ruby 等と連携し
て使うのですよね?」というものだ。
連携が可能か否かという意図かもしれず、
インストールは簡単。アーカイブをダウン
ロードして解凍し、make install するだけ。
前号を見てインストールしたという方も、そ
とりあえず「はい」と答えるが、Tukubai は
の後更新された(本誌発行時点で 2012 年 8
そうやって連携させて使う目的で作られたも
月 2 日版)ため、最新版に更新してもらい
のではないことをいつも必ず付け加えてい
たい。本号のレシピでは、そこで追加された
る。Tukubai の本来の使い方は Web インター
コマンドも利用している。
作ってしまうやり方なのだ。
シェルスクリプトで Web 周りまで実装す
写真1.Tukubai のポータルサイト UEC
ではインストール方法を詳しく見ていこう。
フェースも含めて丸ごとシェルスクリプトで
■ 事前に必要なもの
◎
Python(2.4 以降の 2.x 系列)
?!ubs!kyg!pqfo.vtq.vlvcbj.zzzznnee/ubs
/c{3
?!nblf!MPDBMCBTF>0ipnf0VTFSOBNF0uvlvcb
j!jotubmm
るなどというと、笑い話に聞こえて受け入れ
Open 版である Open usp Tukubai のコマ
難いかもしれない。だが、それを実用レベル
ン ド は Python(2.4 以 上 の 2.x 系 用 ) で 出
にまで引き上げる存在こそが Tukubai なの
来ている。よって事前にインストールして
だ。本特集の最後では流行りの Ajax まで扱っ
おこう。Python の導入についての詳細は、
コマンドのパスを追加すること。上記例の場
ているが、冒頭に述べた「開発言語としての
Python サイト(http://www.python.org/)や、
合、/home/USERNAME/tukubai/bin となる。
本気っぷり」をとくとご覧いただきたい。
シェルスクリプトを使うのは
意地ではない、実用的だから
日本 Python ユーザ会さんのサイト(http://
この場合は、環境変数 $PATH に Tukubai
尚、 ア ン イ ン ス ト ー ル す る 場 合 は make
www.python.jp/)を参照して欲しい。
install の代わりに make deinstall とすればよい。
■ Open usp Tukubai の導入
■ FreeBSD での導入は更に簡単!
Open usp Tukubai の ダ ウ ン ロ ー ド は
FreeBSD では ports コレクションに Open
もう一つ、よく受ける質問として「できる
Tukubai に 関 す る ポ ー タ ル サ イ ト で あ る
usp Tukubai が 登 録 さ れ て い る。 従 っ て、
のはわかりますけど、実用的じゃないですよ
「UEC」
(usp engineers' community、https://
Open usp Tukubai アーカイブファイルのダ
ね?」というのがある。そんなことはない。
→写真1)にて可能である。
uec.usp-lab.com/、
理由として、次の二つを挙げたい。
このサイトの上部メニューから、
■ MVC の全てをシェルで発想できる
→ Tukubai
Web アプリ開発でよく用いられる概念で
→ Open usp Tukubai ダウンロード
MVC(Model: デ ー タ ア ク セ ス、View : 表 示、
と進むと、そこで最新版が公開されている。
Controller:UI からの入力 ) というものがある。
wget や fetch コマンド等を使って取得した
Tukubai を用いた開発ならば、これら全てを
後、次のようにして解凍、およびインストー
馴染み深いシェルスクリプト一つで発想する
ルする。
ことができる。これは、開発環境をコンパク
?!ubs!kyg!pqfo.vtq.vlvcbj.zzzznnee/ubs
/c{3
?!tvep!nblf!jotubmm
トにし、かつ見通しをよくすることにもなる。
■ コードの短さが、開発を迅速化
MVC という発想が生まれた理由の一つは、
ウンロード作業も、事前の Python インストー
ル作業も不要だ ( 自動的に行われる )。
具体的には root になって下記のコマンド
を打ち込むだけである。
$!de!0vts0qpsut0efwfm0pqfo.vtq.uvlvcbj
$!nblf!jotubmm!dmfbo
記事中のプログラムは
UECサイトにてダウンロード可
これで準備完了。シェルスクリプトによる
レンタルサーバー等、root 権限が与えら
Web アプリの作られ方をとくと見て欲しい。
アプリの構造をこの 3 つに分離して部品化
れておらず、ホームディレクトリー等にイン
前回同様、掲載レシピのプログラム、及び
し、開発を迅速化することにあったはずだ。
ストール先を変更したい場合、次のように
サンプルデータを、先程紹介したポータルサ
本特集で出てくるコード見て欲しい。短い
make に与える LOCALBASE 変数でそのディ
イト UEC にてダウンロードできるようにし
レクトリー指定できる。
てある。是非併せて活用してもらいたい。
のだ。Unix・Tukubai のコマンドが持つ機能や
4
USP MAGAZINE 2012 autumn
USPMAG201209_yorinuki_cs55.indb 4
2012/10/12 17:33:00
特集1― Open usp Tukubai シンプルレシピ Part2・Web 編
τΏάˍ
ʼnŕŎō ́੥̥̹ͦΟȜΗࣺ͚ͬ৾ͤȃ
問題
みずほ銀行の宝くじ公式ページに載ってい
る当せん番号一覧を表にして保存したい。
ただ元データは HTML になっていてタグ
がいっぱいついている。これを外し、プレー
ンテキストの表にできないだろうか。
解答
まず cURL(curl コマンド ) の力を借りる。
これで目的の URL から生の HTML テキスト
を得られる。あとはこれを、sed や AWK 等
を使って地道に整形していけば完成だ。
整形のコツは、一旦 HTML テキストの中
にある改行を全部取り去って、必要なタグの
■ サンプルプログラム
宝くじの公式ページ(写真1)内の「ジャ
ンボ宝くじ」の当せん番号を収集するプログ
ラムを作成した(リスト1)
。ただし当せん
番号案内のトップは各抽せん回へのリンクに
なっており、実際の番号はそのリンク先に
あったため、トップページでリンクを収集し
た後、さらに各々のページへアクセスし、当
せん番号を収集している。
宝くじには「前後賞」や「組違い賞」といっ
た変則的なデータがあるので、それらについ
てもきちんと展開するようにしてある。最終
的に第一フィールドから、抽せん日、宝くじ
名、等、賞金、組、番号というテキスト表デー
画面1.宝くじ公式ページ@みずほ銀行
(2012 年 9 月現在)
当せん番号一覧の記載されいるページについても
同様の方法で、タグをパースしている
タ(LOTTERY_DAT)にした。
2! $"0cjo0ti
3! $
4! $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
5! $!MPUUFSZ/EC!൚̹̹̞ͤ̈́ͣฃ̠̱̥̞̈́ȃ༯̩̲ΟȜΗαȜΑȊȊ
6! $!ȪTIFMM̞̠͂Οͻτ·Πςͬै଼̱Ȃ̷͈‫ͅئ‬෻౾̱̩̺̯̞̀ȫ
7! $
8! $!Xsjuufo!cz!O/Upvoblb)upvoblbAvtq.mbc/dpn*!0!Ebuf!;!24!Bvh/3123
9! $!Bssfohfe!cz!VTQ!NBHB[JOF)nbhAvbq.mbc/dpn*!0!Ebuf!;!19!Tfq/3123
:! $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
21!
sed コマンドで改行への置換を綺
22! $!ΏͿσ་ତ͈ΓΛΠ
麗に書くため、シェル変数に改行
23! ipnfejs>%)qxe*<!ipnfejs>%|ipnfejs&0+~
をセットしている
24! qpne>%ipnfejs0QPNQB
BSD 系 OS に は tac コ マ ン ド
25! upq>#iuuq;00xxx/nj{vipcbol/dp/kq#
が無いが、相当の機能はある
26! MG>%)qsjoug!(]]]123`(*<MG>%|MG&`~
ためエイリアス定義している
27!
curl コマンド
28! $!ubd΋ζϋΡ͈೰݅)+CTE͈͙*
(指定 URL の HTML デー
29! \!.o!#%)vobnf!}!hsfq!CTE*#!^!''!bmjbt!ubd>(ubjm!.s(
タを標準出力に流す)
2:!
31! $!2/‫̜͉ͦ͂͜ة‬Ȃ༯̩̲൚̵ͭΟȜΗαȜΑ)Ξ΅ΑΠນ*̩̳ͬ̾ͤ͘
32! $!༯̩̲࢖৆βȜΐܱ̯̞ͦ̀ͥͅΐλϋδ༯̩̲͈֚။ͬ৾ͤ੄̳
33! dvsm!.t!%|upq~0ublbsblvkj0utvkzp0kvncp0joefy/iunm!!!!!!!!!!!!!}
34! $!ຈါ̈́ߊ‫=)࣐͈ۼ‬ubcmf?ȡ=0ubcmf?ͬಒ੄!!!!!!!!!!!!!!!!!!!!!!$
まず sed を使い、
今回必要な <table> </table> 区間のみを抽出
35! tfe!.o!(0=ubcmf0-0=]0ubcmf?0q(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
36! $!֚౞٨࣐΋ȜΡͬ஠໐৾ͤ‫!!!!!!!!!!!!!!!!!!!!!!!!̠̱̀̽͘ݲ‬$
37! us!.e!(]o(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
HTML 内の改行を一旦全消去
38! $!=b?ΗΈ͈ੜၑ;!ςϋ·VSM͂ςϋ·໲লႥ̺̫า̧੄̳!!!!!!!!!!$
39! tfe!(t"=b!\_?^+isfg>#])\_#^+]*#\_?^+?])\_=^+]*=0b?"]2!]3"h(!!!}
3:! $!=ui?ΗΈͬ=ue?͂൳൝ͅե̠̹͛Ȃ౾۟!!!!!!!!!!!!!!!!!!!!!!!!!$
<td> </td> はタグを外し
41! tfe!(t"=ui"=ue"h<t"=0ui"=0ue"h(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
先頭にプレフィックス "@" を
42! $!=us?ΗΈ̦੄̷̧̹͈̀ͣ਀ஜͅ٨࣐΋ȜΡͬொව!!!!!!!!!!!!!!$
付けている
43! tfe!(t0=us0(#%MG#(=us0h(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
44! $!=ue?ΗΈ̦੄̧̹̀ͣΗΈͬ‫̱ٸ‬-֣#A#ͬັ̫-ஜࢃͅ٨࣐ͬொව!$
45! tfe!(t"=ue\_?^+?])\_=^+]*=0ue?"(#%MG#(A]2(#%MG#("h(!!!!!!!!!!!}
46! $!=ue?ΗΈါள͉ΑβȜΑߊ୨ͤ-=us?ΗΈ͉́٨࣐̱-Ξ΅ΑΠນͅ$
47! bxl!(0_=us0|jg)ujnf?1*|qsjou!##~fmtf|qsjoug)#!#*~ujnf,,~!!!!!!]
48! !!!!!0_A0!!|qsjoug)#&t!#-%1*~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!]
49! !!!!!FOE!!!|qsjou!##~(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
4:! $!=ue?ΗΈါள͈̠̻Ȃߗ̺̹͈̽ͬ͜!#`#!ͅ་̳۟ͥ!!!!!!!!!!!!$
51! tfe!(t0!A!0!`!0h(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
<td> </td> の中が
空だった場合への対処
52! $!=ue?ΗΈါளͅັ̫̞̹֣̀#A#ͬۖ஠ͅੰ‫!!!!!!!!!!!!!!!!!!!ݲ‬$
("_" としている)
53! us!.e!(A(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
54! $!ΞȜήσ͈ࣜ࿒ྴ)ࡓ=ui?ါள*͈࣐ͬ৾ͤੰ̩!!!!!!!!!!!!!!!!!!$
55! ubjm!.o!,3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!} 日付フォーマット
56! $!#zzzzාn࠮e඾#ɨ#zzzznnee#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$ 変換 (YYYYMMDD)
57! tfe!(t0_])\1.:^+]*ා])\1.:^+]*࠮])\1.:^+]*඾0]2-1]3-1]40(!!!!!}
58! tfe!(t0_])\1.:^+]*-1+])\1.:^\1.:^]*-1+])\1.:^\1.:^]*0]2]3]40(!}
59! $!ಒ̵ͭ඾Ȃ˱ˮ˨Ȃ༯̩̲ྴͬਜ਼๔৾ͤͅ੄̱Ȃ!!!!!!!!!!!!!!!!!!!$..
5:! xijmf!sfbe!ebz!vsm!obnf<!ep!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$
61! !!$!൚̵ͭ๔࣢ͬ಺͓ͥ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$
62! !!dvsm!.t!%|upq~%|vsm~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
63! !!$!୶೾͂൳အͅȂIUNMಎ͈ΞȜήσါளͬΞ΅ΑΠນͅ་۟!!!!!!!!!$
64! !!tfe!.o!(0=ubcmf0-0=]0ubcmf?0q(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
65! !!us!.e!(]o(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
66! !!tfe!(t"=ui"=ue"h<t"=0ui"=0ue"h(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
67! !!tfe!(t0=us0(#%MG#(=us0h(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
68! !!tfe!(t"=ue\_?^+?])\_=^+]*=0ue?"(#%MG#(A]2(#%MG#("h(!!!!!!!!!!!}
69! !!bxl!(0_=us0|jg)ujnf?1*|qsjou!##~fmtf|qsjoug)#!#*~ujnf,,~!!!!!!]
6:! !!!!!!!0_A0!!|qsjoug)#&t!#-%1*~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!]
71! !!!!!!!FOE!!!|qsjou!##~(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
72! !!tfe!(t0!A!0!`!0h(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
73! !!us!.e!(A(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
74! !!$!'fntq<!̈́ͥ໲লႥͬ‫͚܄‬ાࣣ̦̜͈ͥ́΋ͼΜͬߗฒͅ་۟!!!!!$
75! !!tfe!(t0'fntq<0!0h(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
76! !!$!ˍ൝ஜࢃર͈̹͈͛τ΋ȜΡ೏‫!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!ح‬$
77! !!ubd!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
一旦改行を全消去後、必要なタグにだけ付け、
コマンドでタグに応じた処理をしている
AWK
前(または前後)にだけ改行を入れることだ。
リスト1.LOTTERY.DB:
「ジャンボ宝くじ」当せん番号案内一覧を収集するプログラム
次ページへ続く→
5
USPMAG201209_yorinuki_cs55.indb 5
2012/10/12 17:33:01
解説
実はこのプログラムには Tukubai コマン
ドが一つも出てこないのだが、Web アプリ
開発で HTML や XML のパースは欠かせぬ話
ということで取り上げた。
大抵の言語では DOM や SAX を使うところ、
シェルスクリプトなら sed や AWK、tr といっ
たテキストフィルターコマンドだけで軽くこ
なすこともできる。
■ 改行を入れ直す
シェルスクリプトで HTML や XML のタグ
をパースするコツは、改行を一旦全部除去し
てから必要なところにだけ再び挿入すること
である。
前後賞や組違い賞 の 行 が あ っ た ら 、
番号と金額を適宜 直 し た 行 を 複 製 す る
このシェルスクリプトによって Text1 のよ
うな当せん番号テーブルデータが生成される。
78! !!bxl!(|jg)%2>>#2൝͈ஜࢃર#*|t>%2<n>%3~!!!!!!!!!!!!!!!!!!!!!!!!]
79! !!!!!!!!fmtf!jg)%2>>#2൝#*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!]
7:! !!!!!!!!!!|qsjou<qsjou!t-n-%4-%5,2#๔#<qsjou!t-n-%4-%5.2#๔#~!!!]
81! !!!!!!!!fmtf!qsjou!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!~(!}
82! !!$!ˍ൝ழ֑̞ર͈̹͈͛τ΋ȜΡ೏‫!!!!!!!!!!!!!!!!!!!!!!!!!!!!ح‬$
83! !!bxl!(|jg)%2>>#2൝͈ழ֑̞ર#*|t>%2<n>%3~!!!!!!!!!!!!!!!!!!!!!!]
84! !!!!!!!!fmtf!jg)%2>>#2൝#*|qsjou<qsjou!t-n-#‫ڎ‬ழ‫ވ‬೒#-%5~!!!!!!!]
85! !!!!!!!!fmtf!qsjou~(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
86! !!bxl!(OG>>5(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
87! !!tpsu!.o!.l2-2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
88! !!bxl!(|qsjou!#(%ebz(!(%obnf(#-%1~(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<
89! $!MPUUFSZ`EBU!2;ಒ̵ͭ඾!3;༯̩̲ྴ!4;൝!5;ર߄!6;ழ!7;๔࣢!!!$..
8:! epof!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!?!%qpne0MPUUFSZ`EBU
91!
92! $!3/ಒ̵ͭ඾஖఼͈ΡυΛίΘ;ϋςΑΠ୆଼ဥͅȂͼϋΟΛ·Αͬैͥ
93! tfmg!3!%qpne0MPUUFSZ`EBU!!!!!!!!!!!!}
これらのデータは、
94! vojr!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
レシピ2で動的 HTML の生成に
利用する
95! $!LJOE`MJTU!!!2;ͼϋΟΛ·Α!3;༯̩̲ྴ
96! bxl!(|qsjoug)#&13e!&t]o#-!OS-!%2*~(!?!%qpne0LJOE`MJTU
97!
98! $!4/ழ๔࣢஖఼͈ΡυΛίΘ;ϋςΑΠ୆଼ဥͅȂͼϋΟΛ·Αͬैͥ
99! tfr!::!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
9:! bxl!(|qsjoug)#&13e]o#-%2*~(!!!!!!!!!}
:1! $!HSPVQ`MJTU!!2;ͼϋΟΛ·Α!3;ழ
:2! tfmg!2!2!!!!!!!!!!!!!!!!!!!!!!!!!!!!?!%qpne0HSPVQ`MJTU
:3!
:4! fyju!1
例えば HTML には <table> というタグが
ある。言うまでも無くこれは HTML 上でテー
<td> に 関 し て も、<td> ∼ </td> と い う
通るのは日常茶飯事。なんと執筆時点 (2012
ブルを表現するためのタグである。この中に
単位で単独行にしておけば、やはり "<td" 始
年 9 月 ) で、みずほ銀行のジャンボ宝くじ当
は <tr> や <td> といった行、列を示すタグ
まりの行を一つの列であると認識して、値を
せん番号案内トップページの HTML データ
がある。このテキストから行、列を正しく認
収集できる。
も少々間違っている。抽せん回一覧ページで、
識してテーブルの中身を取り出すにはどうす
ればよいか。
ま ず sed で <tr> の 前 後 に 改 行 を 入 れ、
この時 <td> から </td> の間に改行がある
抽せん日の <td> が </th> で閉じられている。
と都合が悪いので、最初に予め取り去ってお
DOM や SAX といった外部のパーサーに
くというわけだ。幸い HTML は、<br /> を
頼っていた場合、こういうデータの処理で苦
<tr> を 単 独 行 に し て お け ば よ い。 そ の 後
改行として扱っているから問題にならない。
労するかもしれないが、こちらは自前で作っ
AWK で "<tr" 始まり行を読み込んだ時に、新
■ 不正な HTML でもへっちゃら
ているので、さほど悩むこともなく対応して
しいレコードに移ったと認識できるからだ。
HTML ともなれば、タグの間違いがまかり
しまえるというわけだ。
Text1.LOTTERY.DB が収集した、ジャンボ宝くじの当せん番号一覧テーブルデータ
31231918!ల736ٝ஠࣭ুহ༯̩̲
Ȫ3111ྔ΍ζȜȫ!2൝!3111ྔ‫!׫‬ழ‫ئ‬2ΉΗ1ழ!231413๔
31231918!ల736ٝ஠࣭ুহ༯̩̲
Ȫ3111ྔ΍ζȜȫ!2൝!3111ྔ‫!׫‬ழ‫ئ‬2ΉΗ1ழ!24:413๔
31231918!ల736ٝ஠࣭ুহ༯̩̲
Ȫ3111ྔ΍ζȜȫ!2൝!3111ྔ‫!׫‬ழ‫ئ‬2ΉΗ2ழ!212321๔
31231918!ల736ٝ஠࣭ুহ༯̩̲
Ȫ3111ྔ΍ζȜȫ!2൝!3111ྔ‫!׫‬ழ‫ئ‬2ΉΗ3ழ!247:46๔
31231918!ల736ٝ஠࣭ুহ༯̩̲
Ȫ3111ྔ΍ζȜȫ!2൝!3111ྔ‫!׫‬ழ‫ئ‬2ΉΗ9ழ!257675๔
31231918!ల736ٝ஠࣭ুহ༯̩̲
Ȫ3111ྔ΍ζȜȫ!2൝͈ஜࢃર!21ྔ‫!׫‬ழ‫ئ‬2ΉΗ1ழ!231412๔
31231918!ల736ٝ஠࣭ুহ༯̩̲
Ȫ3111ྔ΍ζȜȫ!2൝͈ஜࢃર!21ྔ‫!׫‬ழ‫ئ‬2ΉΗ1ழ!231414๔
31231918!ల736ٝ஠࣭ুহ༯̩̲
Ȫ3111ྔ΍ζȜȫ!2൝͈ஜࢃર!21ྔ‫!׫‬ழ‫ئ‬2ΉΗ1ழ!24:412๔
31231918!ల736ٝ஠࣭ুহ༯̩̲
Ȫ3111ྔ΍ζȜȫ!2൝͈ஜࢃર!21ྔ‫!׫‬ழ‫ئ‬2ΉΗ1ழ!24:414๔
31231918!ల736ٝ஠࣭ুহ༯̩̲
Ȫ3111ྔ΍ζȜȫ!2൝͈ஜࢃર!21ྔ‫!׫‬ழ‫ئ‬2ΉΗ2ழ!21231:๔
31231918!ల736ٝ஠࣭ুহ༯̩̲
Ȫ3111ྔ΍ζȜȫ!2൝͈ஜࢃર!21ྔ‫!׫‬ழ‫ئ‬2ΉΗ2ழ!212322๔
31231918!ల736ٝ஠࣭ুহ༯̩̲
Ȫ3111ྔ΍ζȜȫ!2൝͈ஜࢃર!21ྔ‫!׫‬ழ‫ئ‬2ΉΗ3ழ!247:45๔
31231918!ల736ٝ஠࣭ুহ༯̩̲
Ȫ3111ྔ΍ζȜȫ!2൝͈ஜࢃર!21ྔ‫!׫‬ழ‫ئ‬2ΉΗ3ழ!247:47๔
31231918!ల736ٝ஠࣭ুহ༯̩̲
Ȫ3111ྔ΍ζȜȫ!2൝͈ஜࢃર!21ྔ‫!׫‬ழ‫ئ‬2ΉΗ9ழ!257674๔
31231918!ల736ٝ஠࣭ুহ༯̩̲
Ȫ3111ྔ΍ζȜȫ!2൝͈ஜࢃર!21ྔ‫!׫‬ழ‫ئ‬2ΉΗ9ழ!257676๔
31231918!ల736ٝ஠࣭ুহ༯̩̲
Ȫ3111ྔ΍ζȜȫ!3൝!2ྔ‫ئ!׫‬4ΉΗ!982๔
31231918!ల736ٝ஠࣭ুহ༯̩̲
Ȫ3111ྔ΍ζȜȫ!4൝!411‫ئ!׫‬2ΉΗ!6๔
31231918!ల735ٝ஠࣭ুহ༯̩̲
Ȫ΍ζȜΐλϋδȫ
!΍ζȜΨΉȜΏοϋર!21ྔ‫ئ!׫‬5ΉΗ!2322๔
31231918!ల735ٝ஠࣭ুহ༯̩̲
Ȫ΍ζȜΐλϋδȫ
!2൝!5‫!׫ؙ‬52ழ!216726๔
31231918!ల735ٝ஠࣭ুহ༯̩̲
Ȫ΍ζȜΐλϋδȫ
!2൝͈ஜࢃર!6111ྔ‫!׫‬52ழ!216725๔
31231918!ల735ٝ஠࣭ুহ༯̩̲
Ȫ΍ζȜΐλϋδȫ
!2൝͈ஜࢃર!6111ྔ‫!׫‬52ழ!216727๔
31231918!ల735ٝ஠࣭ুহ༯̩̲
Ȫ΍ζȜΐλϋδȫ
!2൝͈ழ֑̞ર!21ྔ‫ڎ!׫‬ழ‫ވ‬೒!216726๔
31231918!ల735ٝ஠࣭ুহ༯̩̲
Ȫ΍ζȜΐλϋδȫ
!3൝!611ྔ‫!׫‬79ழ!296679๔
31231918!ల735ٝ஠࣭ুহ༯̩̲
Ȫ΍ζȜΐλϋδȫ
!3൝!611ྔ‫!׫‬88ழ!273779๔
31231918!ల735ٝ஠࣭ুহ༯̩̲
Ȫ΍ζȜΐλϋδȫ
!4൝!211ྔ‫ڎ!׫‬ழ‫ވ‬೒!29::95๔
31231918!ల735ٝ஠࣭ুহ༯̩̲
Ȫ΍ζȜΐλϋδȫ
!5൝!2ྔ‫ئ!׫‬4ΉΗ!657๔
31231918!ల735ٝ஠࣭ুহ༯̩̲
Ȫ΍ζȜΐλϋδȫ
!6൝!4111‫ئ!׫‬3ΉΗ!47๔
31231918!ల735ٝ஠࣭ুহ༯̩̲
Ȫ΍ζȜΐλϋδȫ
!7൝!411‫ئ!׫‬2ΉΗ!6๔
31231723!ల732ٝ஠࣭ুহ༯̩̲
ȪΡςȜθ21)˰ˡ˪*ȫ!2൝!21ྔ‫ئ!׫‬4ΉΗ!595๔
ȁȁȁȁȁȁȁȁȁȁȁȁȁȁȁȁȁȁȁȁȇ
6
USP MAGAZINE 2012 autumn
USPMAG201209_yorinuki_cs55.indb 6
2012/10/12 17:33:02
特集1― Open usp Tukubai シンプルレシピ Part2・Web 編
τΏά ij
ʼnŕŎō ͬ൲എͅै଼̳ͥȃ
問題
先程収集した当せん番号のデータに基
解答
例 え ば Web 掲 示 板 で あ れ ば 送 信 さ れ た
づき、これをブラウザで照会できるよう、
メッセージに応じた HTML を生成する。こ
HTML 入力フォームを作りたい。
のようにして動的に HTML を生成したいこ
ただ、抽せん回はドロップダウンメニュー
文字列を埋め込んでおく。このテンプレート
HTML と表データを mojihame に掛けると、
データがハメ込まれた HTML になるという
わけである。
従って、動的に HTML を作りたい CGI スク
とは多々ある。そこで Tukubai にも、このよ
リプト内にこの mojihame を仕込めばよい。
で選択できるようにしたい(手で打つのは面
うな使い道を想定したコマンド mojihame
■ サンプルプログラム
倒だ)
。そこで、
先程の当せん番号データファ
( 文字ハメ ) が用意されている。
イルから動的に選択肢(<option> タグ)を
生成して欲しい。
まずテンプレートとなる HTML を作って
おく。そこには mojihame が反応するマクロ
宝くじの Web フォームを生成するサンプ
ルは、テンプレート HTML( リスト2) と CGI
スクリプト ( リスト3) の 2 ファイルから成る。
リスト2.LOTTERY.HTML : 宝くじ当せんチェック Web フォーム・テンプレート
2! ="EPDUZQF!IUNM!QVCMJD!#.00X4D00EUE!IUNM!5/12!Usbotjujpo
bm00FO#!#iuuq;00xxx/x4/psh0US0iunm50mpptf/eue#?
3! ="..!IUNM̞̠͂ejsfdupszै଼ࢃȂ̷͈‫ͅئ‬෻౾͈̭͂!..?
4! =iunm?
5!
6! =ifbe?
7!
8! =nfub!iuuq.frvjw>#Dpoufou.Uzqf#!dpoufou>#ufyu0iunm<!dib
stfu>VUG.9#!0?
9! =nfub!iuuq.frvjw>#Dpoufou.Tdsjqu.Uzqf#!dpoufou>#ufyu0kb
wbtdsjqu#!0?
:! =nfub!iuuq.frvjw>#Dpoufou.Tuzmf.Uzqf#!dpoufou>#ufyu0dtt
#!0?
21!
22! =ujumf?Pqfo!vtq!Uvlvcbj!༯̩̲൚̵ͭΙͿΛ·=0ujumf?
23!
24! =tuzmf!uzqf>#ufyu0dtt#?
25! !!+!|qbeejoh;1qy<~!0+!efgbvmu͈qbeejohͬ஠̀1ͅ!+0
26! !!ue/lpnplv!|gpou.tj{f;26qy<!ufyu.bmjho;sjhiu<~
27! =0tuzmf?
28!
Ajax ではお決まりの
XMLHttpRequest ラッパー
29! =tdsjqu!uzqf>#ufyu0kbwbtdsjqu#?
(レシピ3で利用)
2:! !!gvodujpo!hfuYNMIuuqSfrvftu)*|
31! !!!!jg)"xjoepx/BdujwfYPckfdu*!|!00GG-Dspnf-JF9చ؊
32! !!!!!!sfuvso!ofx!YNMIuuqSfrvftu)*<
33! !!!!~
34! !!!!usz|!!!!!!!!!!!!!!!!!!!!!!!!00JF8చ؊
35! !!!!!!sfuvso!ofx!BdujwfYPckfdu)#Ntynm3/YNMIUUQ#*<
36! !!!!~
37! !!!!dbudi)f*|!!!!!!!!!!!!!!!!!!!00JF7చ؊
38! !!!!!!sfuvso!ofx!BdujwfYPckfdu)#Njdsptpgu/YNMIUUQ#*<
39! !!!!~
3:! !!~
41! !!gvodujpo!HfuPvuqvu)*|
42! !!!!wbs!iuuqSfr!>!hfuYNMIuuqSfrvftu)*<
43! !!!!iuuqSfr/pqfo)#QPTU#-#MPUUFSZ/BKBY#-usvf*<
44! !!!!iuuqSfr/tfuSfrvftuIfbefs)
45! !!!!(Dpoufou.Uzqf(-(bqqmjdbujpo0y.xxx.gpsn.vsmfodpefe(
46! !!!!*<
47! !!!!iuuqSfr/posfbeztubufdibohf!>!gvodujpo)*|
48! !!!!!!jg)iuuqSfr/sfbezTubuf!">!5!!!}}
49! !!!!!!!!!iuuqSfr/tubuvt!!!!!">!311!!*!sfuvso<
4:! !!!!!!epdvnfou/hfuFmfnfouCzJe)(pvuqvu(*/joofsIUNM
51! !!!!!!!!>!iuuqSfr/sftqpotfUfyu<
52! !!!!~
Ajax のリクエスト送受信関数
53! !!!!iuuqSfr/tfoe)tfoeBKBY)**< (レシピ3で利用)
54! !!~
55! !!00!BKBY͈௣૞ૂ༭͈ै଼
56! !!gvodujpo!tfoeBKBY)*|
57! !!!!wbs!ebub!>!#OVNCFS>#!,
58! !!!!!!epdvnfou/hfuFmfnfouCzJe)#ovncfs#*/wbmvf!,!#'#<
59! !!!!ebub!!!!!>!ebub!,!#HSPVQ>#!,
5:! !!!!!!epdvnfou/hfuFmfnfouCzJe)#hspvq#*/wbmvf!,!#'#<
61! !!!!ebub!!!!!>!ebub!,!#LJOE>#!,
62! !!!!!!epdvnfou/hfuFmfnfouCzJe)#ljoe#*/wbmvf<
63! !!!!sfuvso!ebub<
64! !!~
65! =0tdsjqu?
66!
67! =0ifbe?
68!
69! =cpez!pompbe>#HfuPvuqvu)*<#?
6:!
71! =gpsn!obnf>#JOQVU`GPSN#!je>#JOQVU`GPSN#!tuzmf>#xjeui;91
1qy<!ifjhiu;711qy<#0?
72!
73! =ejw?
74!
75! =ubcmf!tuzmf>#xjeui;911qy<!ifjhiu;61qy<!ufyu.bmjho;dfou
fs<!cpsefs;4qy!tpmje!$111111<#?
76! !!=us?
77! !!!!=ue!tuzmf>#xjeui;211qy<!cpsefs;tpmje!2qy<#!0?
78! !!!!!!=tuspoh?VTQ=0tuspoh?
79! !!!!=0ue?
7:! !!!!=ue!tuzmf>#gpou.tj{f;33qy#?
81! !!!!!!=tuspoh?Uvlvcbj!༯̩̲൚̵ͭΙͿΛ·=0tuspoh?
82! !!!!=0ue?
83! !!=0us?
84! =0ubcmf?
85!
86! =cs!0?
87!
88! =ubcmf!tuzmf>#xjeui;911qy<!ifjhiu;231qy<#!0?
89! !!=us?
8:! !!!!=ue!dmbtt>#lpnplv#!tuzmf>#xjeui;471qy<#?
91! !!!!!!๔࣢˒ࠥ
92! !!!!=0ue?
93! !!!!=ue!tuzmf>#xjeui;511qy<!ufyu.bmjho;mfgu<#?
94! !!!!!!=joqvu!uzqf>#ufyu#!obnf>#ovncfs#!je>#ovncfs#
95! !!!!!!tuzmf>#xjeui;261qy<#!polfzvq>#HfuPvuqvu)*<#
96! !!!!!!wbmvf>##!0?
97! !!!!=0ue?
98! !!=0us?
99! !!=us?
9:! !!!!=ue!dmbtt>#lpnplv#!tuzmf>#xjeui;471qy<#?ழ=0ue?
:1! !!!!=ue!tuzmf>#xjeui;511qy<!ufyu.bmjho;mfgu<#?
:2! !!!!!!=tfmfdu!obnf>#hspvq#!je>#hspvq#
:3! !!!!!!tuzmf>#xjeui;261qy<#
次ページへ続く→
7
USPMAG201209_yorinuki_cs55.indb 7
2012/10/12 17:33:03
:4! !!!!!!podibohf>#HfuPvuqvu)*<#!0?
:5! !!!!!!!!=pqujpo!wbmvf>#11#!0?஖఼̱̀‫=̞̯ئ‬0pqujpo?
:6! ="..!$$$HSPVQ`MJTU$$$!..?
:7! !!!!!!!!=pqujpo!wbmvf>#&2#!0?&3=0pqujpo?
:8! ="..!$$$HSPVQ`MJTU$$$!..?
:9! !!!!!!=0tfmfdu?
::! !!!!=0ue?
mojihame コマンド用のマクロ文字列
211! !!=0us?
この区間が表データの行数分複製される
212! !!=us?
213! !!!!=ue!dmbtt>#lpnplv#!tuzmf>#xjeui;471qy<#?
214! !!!!!!༯̩̲ਅ႒
215! !!!!=0ue?
216! !!!!=ue!tuzmf>#xjeui;511qy<!ufyu.bmjho;mfgu<#?
217! !!!!!!=tfmfdu!obnf>#ljoe#!je>#ljoe#
218! !!!!!!!tuzmf>#xjeui;461qy<#!podibohf>#HfuPvuqvu)*<#!0?
219! !!!!!!!!=pqujpo!wbmvf>#11#!0?஖఼̱̀‫=̞̯ئ‬0pqujpo?
21:! ="..!$$$LJOE`MJTU$$$!..?
221! !!!!!!!!=pqujpo!wbmvf>#&2#!0?&3=0pqujpo?
222! ="..!$$$LJOE`MJTU$$$!..?
223! !!!!!!=0tfmfdu?
224! !!!!=0ue?
225! !!=0us?
226! =0ubcmf?
227!
228! =0ejw?
229!
22:! =cs!0?
231!
232! =mbcfm!gps>#pvuqvu#?൚̵ͭ‫خ‬ෝ଻ȇ=0mbcfm?=cs!0?
233!
234! =ejw!je>#pvuqvu#?
235! ="..!$$$PVUQVU$$$!..?
236! !!=ufyubsfb!dpmt>#:8#!spxt>#21#?
237! ="..!$$$GJMFIBNF$$$!..? 可能性のある当せん番号一覧文字
列がこの行に挿入される
238! !!=0ufyubsfb?
239! !!=ubcmf!tuzmf>#xjeui;911qy<#? (リスト4、レシピ3)
23:! !!!!=us?
241! !!!!!!=ue!tuzmf>#gpou.tj{f;29qy<!ufyu.bmjho;sjhiu<#?
242! !!!!!!!!ર߄ȁȁ$$$BNPVOU$$$
243! !!!!!!=0ue?
可能性のある賞金額の最高値に
244! !!!!=0us?
置換される(リスト4、レシピ3)
245! !!=0ubcmf?
246! ="..!$$$PVUQVU$$$!..?
247! =0ejw?
248!
249! =0gpsn?
リスト4にて、この区間 ("OUTPUT") が
24:!
抽出され、Ajax のレスポンスとして使われる
251! =0cpez?
(レシピ3)
252!
253! =0iunm?
リスト3.LOTTERY.CGI : 宝くじ当せんチェッカー Web フォーム・CGI スクリプト
2!$"0cjo0ti
3!$
4!$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
5!$!MPUUFSZ/DHJ!൚̵ͭ๔࣢ΙͿΛ·͈IUNMέ΁Ȝθͬু൲୆଼
6!$!)DHJ̞̠͂ejsfdupszै଼ࢃȂ̷͈‫ͅئ‬෻౾̱̩̺̯̞̀*
7!$
8!$!Xsjuufo!cz!O/Upvoblb)upvoblbAvtq.mbc/dpn*
9!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Ebuf!;!8!Tfq/3123
:!$!Bssfohfe!cz!VTQ!NBHB[JOF)nbhAvbq.mbc/dpn*
21!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Ebuf!;!9!Tfq/3123
22!$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
23!
24!$!۪‫ޏ‬་ତ͈ΓΛΠ
25!fyqpsu!QBUI>%QBUI;0ipnf0VTFSOBNF0uvlvcbj0cjo
26!fyqpsu!MBOH>kb`KQ/VUG.9
27!
Tukubai コマンドを /usr/bin や /usr/local/bin 等
28!$!ΏͿσ་ତ͈ΓΛΠ の標準的な場所に置いてない場合はここで設定
解説
HTML テ ン プ レ ー ト は そ こ そ こ あ る が、
CGI スクリプトは短く、実質 14 行である。
Tukubai を使えばシェルスクリプトでもこ
んなに簡単に動的 HTML を生成させられる。
(生成された Web 画面はレシピ3参照)
■ ループ文不要、スッキリ書ける
HTML テ ン プ レ ー ト の 95 ∼ 97 行 と 109
∼ 111 行が mojihame 用のマクロ文字列だ。
29!ipnfejs>%)qxe*<!ipnfejs>%|ipnfejs&0+~
2:!iune>%ipnfejs0IUNM
31!qpne>%ipnfejs0QPNQB
32!
33!$!ΰΛΘȜ͈੄ႁ
34!dbu!==!IUUQ`IFBEFS
35!Dpoufou.uzqf;!ufyu0iunm
組番号ドロップダウンリストを生成
36!
(リスト2の 95 97 行目を置換)
37!IUUQ`IFBEFS
38!
39!$!ΡυΛίΘ;ϋςΑΠ)ழ๔࣢-ಒ̵͈ͭٝ3̥ਫ਼*ͬ
3:!$!͉ࣺ͙̦͛̈́ͣȂIUNMུఘͬ੄ႁ
41!dbu!%iune0MPUUFSZ/IUNM!!!!!!!!!!!!!!!!!!!!!!!}
42! npkjibnf!.e`!.mHSPVQ`MJTU!.!%qpne0HSPVQ`MJTU!}
43! npkjibnf!.e`!.mLJOE`MJTU!!.!%qpne0LJOE`MJTU
44!
抽せん回ドロップダウンリストを生成
45!fyju!1 (リスト2の 109 111 行目を置換)
Tukubai の名コマンドたち mojihame と filehame
Tukubai にはレシピ 2 で出てきた mojihame と、レシピ 3 で出てくる filehame の 2 種類の ハメ
コマンドがある。どちらもテンプレートとなるテキストファイルに、別のテキストデータをハメ込
むものなのだが、両者は一体何が違うのだろうか。
先に filehame から説明すると、こちらは単純に文字列をハメ込む。スペースや改行を含んでいて
もそのままで、文章をハメ込むのに向いている。一方 mojihame は、スペース区切りの表データ
をハメ込む。だから HTML テーブルの <tr> </tr> をレコード数に応じて動的に生成できたりする。
filehame :
mojihame :
=i2?କຯज!ࣽ඾͈‫׋‬ସ=0i2?
=ubcmf?
=q?
=dbqujpo?କຯज!ࣽ඾͈‫׋‬ସ=0dbqujpo?
="..!GJMFIBNF!..?
="..!NPKJIBNF!..?
=0q?
=us?=ue?&2=0ue?=ue?&3=0ue?=0us?
="..!NPKJIBNF!..?
一行に 2 フィールドあるデータをこの HTML
=0ubcmf?
テンプレートと共に mojihame に掛けると
各行の n 番目のフィールドが %n にハメ込
=i2?କຯज!ࣽ඾͈‫׋‬ସ=0i2?
=ubcmf?
まれ、それが行数分だけ繰り返される。
=q?
=dbqujpo?କຯज!ࣽ඾͈‫׋‬ସ=0dbqujpo?
ࣽ඾͈̜̹͉̈́‫ܨ׋‬डࣞ"""=cs!0?
=us?=ue?௙ࣣ‫=׋‬0ue?=ue?ɚɚɚɚɚ=0ue?=0us?
අͅ߄‫̦׋‬ड̳ࣞ́ȃ=cs!0?
=us?=ue?ॽম‫=׋‬0ue?=ue?ɚɚɚɚ=0ue?=0us?
ρΛ΅ȜͺͼΞθ͉୤"
=us?=ue?߄‫=׋‬0ue?=ue?ɚɚɚɚɚ=0ue?=0us?
=0q?
=us?=ue?ρΛ΅Ȝ΃ρȜ=0ue?=ue?୤=0ue?=0us?
結果として、<option> タグ行が自動生成
されることとなる。mojihame のおかげで
CGI スクリプト内にはループ文を書かなくて
=0ubcmf?
済むため、
スッキリしたソースコードになる。
8
USP MAGAZINE 2012 autumn
USPMAG201209_yorinuki_cs55.indb 8
2012/10/12 17:33:03
特集1― Open usp Tukubai シンプルレシピ Part2・Web 編
τΏά Ĵ
ł ū Ţ Ź ́ Ř Ŧ ţέ ΁ Ȝ θ ͈ ঀ ̞ ੳ ਀ ͬ ࢜ ષ ̯ ̵ ͥ ȃ
問題
当せん番号をチェックする時というのは、
一桁照合するごとに「このくじにはまだ当せ
ん可能性が残っているか !?」で盛り上がれる。
だ か ら、 せ っ か く Web フ ォ ー ム を 作 る
な ら Ajax 等 を 使 っ て 一 桁 入 力 す る ご と に
チェックしに行くようにしてもらいたい。
解答
こんなこともあろうかと、先のレシピ2で
に掲載した HTML テンプレート(リスト2)
は Ajax 仕様で作ってある。
さて、Ajax の場合を含め、サーバー側ス
クリプトの最初の仕事はブラウザからの CGI
変数を受け取ることだ。これは定番作業であ
るため、Tukubai にはこれをこなすコマンド
cgi-name が用意されている。
受け取ったら照合処理を済ませ、結果をブ
ラウザに返す。Ajax の場合は HTML を最初
から作り直すのではなく、ブラウザ側で一部
を書き換えてもらうための情報を渡すわけだ
が、Tukubai 流にこなすなら部分的な HTML
テキストを作って返す。
■ サンプルプログラム
レシピ2に掲載したテンプレート
HTML( リスト2) と右記の CGI スクリプト ( リ
スト4) の 2 つセットでこのレシピのサンプ
ルプログラムになっている。
CGI 変数で渡ってきたくじ番号の部分文字列
を元に、その時点で可能性のある「抽せん回+
当せん番号」一覧や、最高金額を返している。
解説
シ ェ ル ス ク リ プ ト や Tukubai に よ る CGI
処理の特徴を 2 つ述べておきたい。
■ シェルスクリプトでの CGI 変数取得
CGI 変 数 は、GET メ ソ ッ ド 時 は 環 境 変 数
QUERY_STRING に、POST メソッド時は標
準入力に詰められて送られてくる。従って
シェルスクリプトで CGI 変数を取得するに
は、これらを見ればよいということになる。
リスト4.LOTTERY.AJAX : 当せん番号チェックプログラム(Ajax 版)
2! $"0cjo0ti
3! $
4! $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
5! $!MPUUFSZ/BKBY!൚̵ͭ๔࣢ΙͿΛ·΀ϋΐϋ,BkbyͼϋΗȜέͿȜΑ
6! $!ȪDHJ̞̠͂Οͻτ·Πςͬै଼̱Ȃ̷͈‫ͅئ‬෻౾̱̩̺̯̞̀ȫ
7! $
8! $!Xsjuufo!cz!O/Upvoblb)upvoblbAvtq.mbc/dpn*!0!Ebuf!;!8!Tfq/3123
9! $!Bssfohfe!cz!VTQ!NBHB[JOF)nbhAvbq.mbc/dpn*!0!Ebuf!;!9!Tfq/3123
:! $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
21!
22! $!۪‫ޏ‬་ତ͈ΓΛΠ
23! fyqpsu!QBUI>%QBUI;0ipnf0VTFSOBNF0uvlvcbj0cjo
24! fyqpsu!MBOH>kb`KQ/VUG.9
Tukubai コマンドを /usr/bin や /usr/local/bin 等
25!
の標準的な場所に置いてない場合はここで設定
26! $!ΏͿσ་ତ͈ΓΛΠ
27! ipnfejs>%)qxe*<!ipnfejs>%|ipnfejs&0+~ しなければならない
理由は、Web サーバーが動作しているユーザー
28! iune>%ipnfejs0IUNM
ID は標準以外のパスが通っていないから
29! qpne>%ipnfejs0QPNQB
2:! ljoe`mjtu>%qpne0LJOE`MJTU
31! mpuufsz`ebu>%qpne0MPUUFSZ`EBU
一次ファイルのプレフィップスに自分のプロセ
32! unq>0unq0%%
ス ID を付けることで、不特定多数が同時に実行
した場合に起こる競合を回避している
33!
34! $!ˬ˫˯˰ιΕΛΡ͈́ΟȜΗ͈਋̫৾ͤ
POST メソッドの場合、CGI 変数は標準入力
35! ee!ct>%DPOUFOU`MFOHUI!!!}
から渡ってくる。そのため dd コマンドで取
36! dhj.obnf!.e`!.j`!!!!!!!!?!%unq.obnf
得する。この時、CONTENT_LENGTH を参照
37!
すると何バイト読み取ればよいかわかる
38! $!๔࣢ȂழȂ༯̩̲ਅ႒Ȃྴઠ͈৾ං
39! ovncfs>%)obnfsfbe!OVNCFS!%unq.obnf*
cgi-name コマンドを通したこのファイル
3:! hspvq>%)obnfsfbe!HSPVQ!%unq.obnf*
には、ブラウザから渡ってきた CGI 変数が
41! ljoe>%)obnfsfbe!LJOE!%unq.obnf*
URL エンコードを解かれ、変数名と値の 2
42!
列から成るテキスト表が格納される
43! $!IUUQΰΛΘȜ͈੄ႁ
44! dbu!==!IUUQ`IFBEFS
nameread コマンドを使うと、
45! Dpoufou.uzqf;!ufyu0iunm
目的の CGI 変数が簡単に取り
46!
出せる
47! IUUQ`IFBEFS
48!
49! $!)b*‫͜ة‬஖̫ͭ́̈́ͦ͊‫੄͜ة‬ႁ̱̞̈́
4:! jg!\!%ovncfs!>!#`#!.b!%hspvq!>!#11#!!.b!%ljoe!>!#11#!^<!uifo
51!
52! !!tfe!.o!(0PVUQVU0-0PVUQVU0q(!%iune0MPUUFSZ/IUNM!}
53! !!tfe!(t0$$$BNPVOU$$$00h(!!!!!!!!!!!!!!!!!!!!!!!!}
54! !!gjmfibnf!.mGJMFIBNF!.!0efw0ovmm
55!
56! $!)c*‫̥ة‬஖̧̞ͭ́ͥ͂
57! fmtf
58!
59! !!\!%ovncfs!>!#`#!^!''!ovncfs>##
5:! !!\!%hspvq!>!#11#!^!''!hspvq>##
61! !!mpuufsz`obnf>%)obnfsfbe!%ljoe!%ljoe`mjtu*
62!
63! !!$>>>>>!๔࣢ΙͿΛ·!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
64! !!$!වႁ୶൮๔࣢͂൚̵ͭ‫ࠥ˴ئ‬๔࣢͈ζΛΙϋΈ࣐̠ͬȃ)๔࣢͉˒ࠥ*
65! !!$.....
66! !!$!2;ಒ̵ͭ඾!3;༯̩̲ྴ!4;൝!5;ર߄!6;ழ!7;๔࣢
67! !!dbu!%mpuufsz`ebu!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
68! !!$!වႁ୶൮๔࣢͂൚̵ͭ๔࣢ͬ˒ࠥͅΩΟͻϋΈ̳ͥ!!!!!!!!!!!!!$
69! !!bxl!(|qsjou!%1-#YYYYYY#jou)%7*-(%ovncfs(#YYYYYY#~(!!!!!!!!!!!}
6:! !!bxl!(|%8>tvctus)%8-mfohui)%8*.6-7*<%9>tvctus)%9-2-7*<qsjou~(!}
71! !!$!୶൮̥ࠥͣତলͬdifdl-༌༷̦˴̜̞͉ͥၰ༷̦൳̲໲ল̺͂PL!$
72! !!bxl!(|gps)j>2<j=>7<j,,*|di2>tvctus)%8-j-2*<di3>tvctus)%9-j-2*<
73! !!!!!!jg)")di2>>#Y#}}di3>>#Y#}}di2>>di3**|ofyu~~<qsjou~(!!!!!!!}
74! !!efmg!8!9!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
75! !!$>>>>>!ழΙͿΛ·!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>$
76! !!$!‫ئ‬YΉΗ!̺͂˫˧!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$
77! !!$.....!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$
次ページへ続く→
9
USPMAG201209_yorinuki_cs55.indb 9
2012/10/12 17:33:04
例えば Tukubai で POST メソッドから受け
取るなら、リスト4の 24 行目のように、dd
コ マ ン ド か ら 環 境 変 数 CONTENT_LENGTH
の分だけデータを受け取り、cgi-name コマ
ンドに流す。これで、
URL デコードと受け取っ
た変数を名前と値から成るテキスト表ができ
るので、これを適宜処理すればよい。
■ Tukubai 流の Ajax データ生成
Ajax と い う と、 そ の 語 源 か ら ブ ラ ウ ザ
に は XML で 結 果 を 返 す こ と が 多 い。 だ が
Tukubai 流にやるならそうではなくて部分的
な HTML テキストを作り、これを返す。これ
ならブラウザは、innerHTML メソッドを使っ
て返された文字列を流し込むだけで済む。な
るべくシェルスクリプトを使い、JavaScript
のコード量は抑えるという方針である。
リスト4の 90 行目∼を見てもらいたい。
元のテンプレート HTML から部分的に抜き
出し、そこに結果をハメ込んでいる。こうし
て、
部分的な HTML テキストを生成している。
78! !!$!2/YYழ!0!3/ழ‫ئ‬2ΉΗYழ!0!4/‫ڎ‬ழ‫ވ‬೒!0!5/‫ئ‬YΉΗ!!!!!!!!!!!$
79! !!MBOH>D!bxl!(|jg)%60_‫\ئ‬1.:^ΉΗ%0*|qsjou<!ofyu~!!!!!!!!!!!!!]
7:! !!$!වႁழ͂൚̵ͭழͬˎࠥͅΩΟͻϋΈ̳ͥ!!!!!!!!!!!!!!!!!!!!!$
81! !!!!!!fmtf!jg)%60‫ڎ‬ழ‫ވ‬೒0*|tus>#YY#~!!!!!!!!!!!!!!!!!!!!!!!!!]
82! !!!!!!fmtf!jg)%60ழ‫ئ‬2ΉΗ0*|tus>#Y#tvctus)%6-25-2*~!!!!!!!!!!]
83! !!!!!!fmtf!jg)%60\1.:^\1.:^ழ0*|tus>tvctus)%6-2-3*~<!!!!!!!!!!]
84! !!!!!!hsq>(%hspvq(#YY#<!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!]
85! !!$!୶൮̥ࠥͣତলͬdifdl-༌༷̦˴̜̞͉ͥၰ༷̦൳̲໲ল̺͂PL!$
86! !!!!!!gps)j>2<j=>3<j,,*|di2>tvctus)tus-j-2*<di3>tvctus)hsq-j-2*<
87! !!!!!!jg)")di2>>#Y#}}di3>>#Y#}}di2>>di3**|ofyu~~<qsjou~(!!!!!!!}
88! !!$>>>>>!༯̩̲ྴΙͿΛ·!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>$
89! !!bxl!(%30(%mpuufsz`obnf(0|qsjou~(!!!!!!!!!!!!!!!!?!%unq.sftvmu
8:!
91! !!$!>>>>>!൚̵ͭडࣞ߄‫ڣ‬τ΋ȜΡͬ‫>>>>>>>>>>>>>>>>>>>>>>>!ͥ͛ݥ‬
92! !!hsfq!.F!#\1.:/^+‫׫ؙ‬#!%unq.sftvmu!}
93! !!tpsu!.os!.l5-5!!!!!!!!!!!!!!!!!!!!?!%unq.xpsl
94! !!hsfq!.F!#\1.:^+ྔ‫׫‬#!!%unq.sftvmu!}
95! !!tpsu!.os!.l5-5!!!!!!!!!!!!!!!!!!!??!%unq.xpsl
96! !!hsfq!.F!#\1.:^+‫׫‬#!!!!%unq.sftvmu!}
97! !!hsfq!.wF!#+ྔ‫׫‬#!!!!!!!!!!!!!!!!!!}
リスト3の "OUTPUT" で
98! !!tpsu!.os!.l5-5!!!!!!!!!!!!!!!!!!!??!%unq.xpsl
囲まれた区間(124 135 行目)
99!
のみを取り出す
9:! !!$>>>>>!έ͹ͼσΧι!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
:1! !!tfe!.o!(0PVUQVU0-0PVUQVU0q(!%iune0MPUUFSZ/IUNM!!!!!!!!!!!!!!!}
:2! !!tfe!(t0$$$BNPVOU$$$0(%)ifbe!.2!%unq.xpsl!}!tfmg!5*(0h(!!!!!!!}
:3! !!gjmfibnf!.mGJMFIBNF!.!%unq.sftvmu
リスト3の 131 行目にある ###AMOUNT### を
:4!
最大賞金額に置換する
:5! gj
:6!
リスト3の 126 行目("FILEHAME" のある行)を
:7! sn!.g!%unq.+
可能性のある当せん番号一覧に置換する
:8! fyju!1
̤̫͘ ༯ ̩ ̲ ൚ ̵ ͭ Ι Ϳ Λ · ͺ ί ς ͬ ঀ ̽ ̀ ͙ ͥȃ Ȫ Ο ί υ ͼ ι ϋ Π ȫ
せっかく作ったのだから実際に動かしてみ
よう。まず設置手順を記す。
設置(デプロイ)手順
■ 1.Tukubai インストール
こ れ 無 し に は 始 ま ら な い。root 権 限 の
■ 3.リスト3, 4にパスを設定
両リストの冒頭に環境変数 PATH を設定し
打ち込みを進めるたび、絞り込まれ、だん
ている箇所がある。Tukubai を root で入れ
だんと賞金額は減っていくことだろう。でも、
ていない場合は、ここに Tukubai コマンド
運よく 2 億円のまま組番号まで入れ終えたと
へのパスを記述しなければならない。
しようじゃないか。そうしたら最後に「とこ
■ 4.cron 設定
ろでそのくじ、いつ抽せんされたくじ?」と
LOTTERY.DB を cron 等で定期的実行させ
与えられていないレンタルサーバーにイ
るようにする。或いは定期的に手動実行する。
ン ス ト ー ル す る 場 合 は、make install 時 に
■ 5.Web サーバーの設定
LOCALBASE 変数の設定が必要になるだろう。
表示されていく。
手順2で置いた CGI と Ajax ファイルが実
手順は 3 ページを参照のこと。
行できるよう、設定ファイル(.htaccess や
■ 2.リスト1∼4の配置
httpd.conf 等)を設定する。
いう質問に答えるべく、抽せん回を選ぼう。
その結果、表示が消えたアナタ!おめでと
う、ハズレだ!でも「ちくしょー!この回に
このくじを買っていれば億万長者だったの
にー!」という悔しさを自慢できるぞ。
これが、このアプリの正しい使い方なのだ。
下記の位置関係でファイルを置く。HTML
ファイル以外は全て実行権限を付けておく。
お待ちかねの「あそびかた」
尚、ファイルは全部大文字にする。これは
ユニケージ開発手法における作法である。
/0!!DHJ0!!!MPUUFSZ/DHJ!!!)৘࣐ࡀࡠັ‫*ح‬
!!!!!!!!!!!MPUUFSBZ/BKBY!)৘࣐ࡀࡠັ‫*ح‬
さあ、ジャンボ宝くじを買ってきて抽せん
日が過ぎたらこのソフトでチェックしよう!
ブラウザで LOTTERY.CGI を開いたらくじ
!!!!IUNM0!!MPUUFSSZ/IUNM
番号→組番号と、まぁあせらず入力していっ
!!!!QPNQB0
て欲しい。すると、可能性のある当せん番号
!!!!TIFMM0!MPUUFSZ/EC!!!!)৘࣐ࡀࡠັ‫*ح‬
と貰える可能性のある最高賞金額が画面下に
̹̽͞Ȃ ij‫̲ͭ͝׫ؙ‬ȊȊġȤȤͭȉ
‫̦ؠ‬ฃ̹͈͉̽΍ζȜΐλϋδ̺̦̈́ͭȤȤȂ
̭ȤȤ̭͉ͦȂ ͜ ̱ ̥ ̱ ̀ Ρδϋ ̈́ ͭ ̲ ͝
10 USP MAGAZINE 2012 autumn
USPMAG201209_yorinuki_cs55.indb 10
2012/10/12 17:33:05
笑顔が素敵な恭子さん。
Linux
ࡔ૗
๼੫଎‫ۻ‬
可愛らしい上、とても勉強熱心な方だと聞いて、取材に伺いました。
それもそのはず、西本さんのお仕事は Linux ∼ AIX のサポート。
生半可な知識量では毎日の業務をこなせません。
話を聞いていると、彼女の瞳に惹きこまれます。
ひとつひとつ丁寧に仕事をしているの
だろうな、と思わせるような真剣な眼
差しです。その反面、ふと彼女の手を
見てみると素敵なネイルアートが。
バリバリ障害対応している傍ら、女の
子らしい色使いのファッションと愛嬌
第5回
西本恭子さ
西本恭子さん
のある笑顔で職場も同時に癒している
のでしょう。
Profile
西本恭子さん
TwitterID:kyoko_0310
Q)Linux との出会いを教えてください。
A)会社に入って配属された部署が、Linux(RedHat)のサポートの部隊でした。
プログラミングですが、高専で C 言語や VB などの基礎を勉強しました。
しかし、学業でプログラミングを学んでいたときは、自分が触っていたパソコンに入っている OS が Linux だとか意識した記
憶がないくらい、初心者だったと思います。
どの OS の環境でやっているかもわかっていなかったんです。今考えると、一方的に学ぶような場所では、技術に興味が沸か
なかったんですよね。「勉強したい」と思い始めたのは仕事で問題を解決しなければならない状況になってからです。
Q)実践でたくさん学ばれたのですね。Linux の好きなところは?
A)オープンソースなところ。(笑)商用 Unix と比べると、ネットにある情報量が圧倒的に多いんです。
インターネットで調査できるのは大きな魅力です。あと、自分でソースコードを見て調べられる。CUI なところも好きです。
トラブルがあったとき、Windows では自分で解決するのが難しくて・・・。Linux は公開されているのでサポートしやすい!
Windows のトラブルシューティングは業務外なので良かったです。ネットで解決情報、なかなか探せないですからね。
Q)マイクロソフト社にはまだお世話になっていない西本さん、これから Linux とどうやって付き合っていきますか?
A)仕事や勉強の基礎となっているので、このまま続けると思います。
入社して7年目の今は、IBM の商用 Unix である「AIX」のサポートのお仕事をしています。AIX で問題が起きた時に Linux で
も起きるか調べますね。根本的なところは一緒なので、Linux が解決の糸口となることがあります。そう思うと、Linux を社会
人になってから学んだ経験が私の基礎になっていますね。
サポート業務のエンジニアは AIX と Linux を出来るように、会社が検定試験受験などを色々と支援してくれます。勉強しやす
い環境で会社に感謝しています。
Q)勉強を応援してくれる会社は心強いですね。先輩と後輩の関係はどうやって保っていますか?
A)悩まずコミュニケーションしています、おしゃべりして問題解決。(笑)
自分もよくしゃべるほうですが、先輩もよくしゃべるので、よく雑談していますよ。 上下関係をあまり気にせず、積極的にご飯食べにいったりしていますね。とくに親会社の
先輩にはサポート対応のエスカレーション先(※)ということもあっていろいろ教えても
らえるので、よく飲みにいったりしています。頻繁にコミュニケーション取ることで、い
ろいろと助けてもらうんです。(満面の笑顔、そんな印象でした)
※ 簡単に解決できない問題を、一次受けから二次受けへというように、エスカレータ形式で問題分析・解決部署をレベルアップさせること。
高専出身の恭子さん。もともと理系で容姿に恵まれ多彩だけれど勉強に対する努力は忘れない。
きらりん☆
そんな彼女のつぶやきは「先輩に助けられた」「○ー○○がやさしい」とか、感謝の言葉が多いような気が
します。ハートが良い上、こんな素敵な笑顔がかわいらしいのだから、周りの人達は自然と彼女に手を差
し伸べるのだろうな、とちょっと年増なおねえさん編集担当は思うわけです。よしよし。
本コーナーでは自薦・他薦を問わず(そして、Linux に限らず?)Tech 好きな女子を大募集しています。スーパーエンジニアだけではなく、これから Linux を勉強しようとしている
向学心のある女性でも大歓迎です。本誌を通してエンジニア友達作り、恭子さんのように交流の幅を広げてみませんか? 詳しくは [email protected] までご連絡ください☆
23
USPMAG201209_yorinuki_cs55.indb 23
2012/10/12 17:33:06
LL DECADE
ͼαϋΠτεȜΠ
2012 ා 8 ࠮ 4 ඾
ɗ߆जήυΛ΍θ
Perl、PHP、Python、Ruby、JavaScript――。
テキスト処理や Web アプリケーション開発などに不可欠な、コンパイル要らず
の軽量言語、Lightweight Language。
近年は、業務システム領域において C や Java に劣らぬ存在感を示すほか、また
モバイル系のゲーム、家電などの組み込みシステムから、かつてスパコンで行
われていたようなシミュレーション、科学技術計算領域まで、その用途に拡が
りを見せています。LL を支持するプログラマもこの 10 年で増えました。
こうした LL の盛り上げに一役買っているのが、今年で開催 10 年目を迎える
Lightweight Language イベント。
ちなみに、LL の源流を遡るとシェルにぶつかる、ということで、本誌もこのイ
ベントを応援しています。2012 年 8 月 4 日、銀座ブロッサムホール(東京)に
おいて開催された第 10 回記念の LL イベントでは、LL 魂を持つ各言語界の雄、
総勢 20 名以上が登壇し、熱のこもったトークを繰り広げました。一日の様子を
振り返ります。
ؕᛦᜒ๫
言語を取り巻くエコシステムに興味がある。互いに刺激し、足りないところを補っている関係が面白い
からインスパイアされたもの。その Plack が
い具合に食べ頃になっている(笑)。早過ぎ
さらに、言語の種類や海を越えて、様々なプ
るよりちょっと遅れて参加するくらいでちょ
ログラマにフォークされています。「例えば、
うどいい。ただし、他の言語のコードをフォー
ケーションフレームワーク
Rails4.0 の
クするときは、 コピペのミス に注意」と
と Web サーバーをつなぐ
開発をして
自らの失敗談を語り、会場の笑いを誘う一幕
インターフェース PSGI の仕様作成、それを
いる人たち
も。
実装した Plack の開発で知られる宮川さん。
を 見 る と、
Perl を中心に多くの言語にアンテナを張り続
かつて僕ら
けていますが、この数年、仕事や趣味で主に
が歩いた道 "You don't need someone's permission
宮川達彦さん
乱 立 す る Web ア プ リ
ところで、いろいろな言語に関わることで
視野が広がったという宮川さん。
to write code" と宮川さん
Python、最近は Ruby を使う機会が多いそう
を同じよう
です。
「Ruby はオブジェクト指向が付け足し
に辿っている既視感を覚えます」。
「カンファレンスに参加すると、肩書きな
どではなく、
『コアのあのコードを書いたミ
ヤガワ』という感じで声をかけてくれる。プ
ではなく、綺麗にまとめられている。手錠を
CPAN のようなリポジトリは誰か一人で完
ログラマにとってコードは、自分自身。リポ
はめられていない感じでプログラミングでき
結することはありえません。
「これ、スゲー
ジトリはその時々に自分が考えていたことや
るのがいい」と宮川さん。
「ただし、僕はプ
な」と思うコードを互いにどんどんフォーク
興味を持っていたことを示すタイムライン
ログラミン
し、
その過程で言語が互いに洗練されていく。
のようなもの。転職した際も、CPAN の URL
グ言語その
それこそがオープンソースの醍醐味、と語る
が履歴書代わりになった」と打ち明けます。
ものが好き
宮川さん。
「その意味で、GitHub はとてもア
来場者に「LL イベントのような、異なる
というより
ナーキー。プログラミングを民主化した」と
言語間のプ
も、各言語
そのインパクトの大きさを指摘します。
ログラマの
「言語のコミュニティはいろんな仲間が参
交流には積
エコシステムのほうに興味があります。相補
加する鍋パーティと似ています。あまり早く
極的に参加
的に発展する関係性が面白い」
。
着いてもすぐ食べられない。手伝わされるこ
されること
ともある。ところが少し遅れていくと、うま
をおすすめ プログラマにとってコードは名刺代わり
が織りなす
名前のつけ方に個性が出る
PSGI や Plack の 着 想 も、Python や Ruby
24 USP MAGAZINE 2012 autumn
USPMAG201209_yorinuki_cs55.indb 24
2012/10/12 17:33:06
LL DECADE ͼαϋΠτεȜΠ
します」と呼びかけた宮川さん。いま注目し
ていることは何か、という講演後の公開質問
に「僕は面白い仕事をしたい。LL はその可
能性を拡げてくれます」と答えました。
Language Update Decade
Perl、PHP、Python、そして Ruby という 4 つの LL における近年の状況を、各言語界を代表する強者が語る
セッション。今回の顔触れと席順は 2003 年に開催された LL Saturday の再現です。司会も当時と同じ法林さ
ん。4 大言語のエキスパートが語る、この 10 年間の変化、そして未来の姿とは。
2GTN
関する Perl のコンセプトは 10 年後もおそら
どれだけ仕様が変わるだろうとむやみに心配
く引き継がれているでしょう。Perl プログラ
せずとも、プログラムの開発に専念すること
小飼弾さん
ができるはずです。
Perl はこの十年で、新機
ところで、LL 全体を見渡せば、
「サーバー
能がいろいろと追加されて
サイドでも動く JavaScript と、その他大勢」
います。しかし、これまで書いたコードを動
という観があります。しかし、JS には CPAN
かせるように気を遣っているのが Perl のよ
に相当するリポジトリがない。お世辞にも
いところ。当たり前に聞こえるかもしれない
ですが、他の LL では必ずしも、過去のコー
ドがそのまま動くとは限りません。互換性に
シェルフレンドリーとは言い難い。Perl はや
機能が拡充する Perl5 を中心に解説
はりよい選択肢ではないかと思います。
マは他の言語を扱うのと違い、これから先、
2*2
誕生から 10 周年を迎え、それを機に、東京
作者自身が、PHP は歯ブラシのようなもの、
だけでなく、関西、北海道でも PHP カンファ
と評しています。毎日、当たり前に動いて、
廣川類さん
レンスが開催され、賑わいを見せました。
身近で役立つ自然な言語、それが PHP です。
PHP が ブ レ ー ク し た の
この 10 年を振り返ると色々ありましたが、
は、バージョン 4 からです。
PHP 作者であるラスマス自身によるバージョ
2006 年頃でも半数以上のユーザーが、PHP4.
ン 6 のキャンセル、という出来事が心に残っ
x を使い続けていました。2004 年 7 月に発
ています。言語の開発というのは一筋縄では
表されたバージョン 5 からは、SOAP、Web
いかないなと思いました。ところで、プログ
サービス、DB の強化など、オブジェクト指
ラミング言語には色々ありますが、大事な
向の深化が図られました。2005 年に PHP が
のは、きちんと使いこなせることです。PHP
2[VJQP
柴田淳さん
今 か ら 10 年 前、 日 本 で
受け継がれる PHP 作者のコンセプト
が実装されています。しかし、利用者の層
外なことに、ノンプログラマにも Python が
は著しく拡大しました。Linux のインストー
利用されています。安価な PC サーバーを使っ
ラー、デスクトップは Python で作られてい
て並列計算をこなす科学技術計算用途もその
ます。DropBox や YouTube もそうです。意
ひとつ。日本の気象庁でも使われています。
は Python を 使 っ て い る 人
Python が他の LL と一線を画す点は、ライブ
が少なく、プログラマの間では珍獣扱いでし
ラリが充実していること、そして言語の仕組
た。ただ欧米では注目度が高く、Google で
みや使い方がシンプルであること。Python
使われていることも話題になりました。とは
プログラマはこの先 10 年も食べていけるの
いえ、この 10 年、Python 自体はあまり変
ではないかと思っています。
わっていません。2003 年にリリースされた
バージョンにはすでに今見ても遜色ない機能
用途が拡がる Python
25
USPMAG201209_yorinuki_cs55.indb 25
2012/10/12 17:33:10
4WD[
わったのは、2004 年に発表された Ruby on
イムで給料をもらえる Ruby プログラマが増
Rails からです。当時、Java と Ruby のどち
えました。なぜ、Rails や Ruby が広まった
まつもとゆきひろ
さん
か。うまく言葉にしがたいのですが、使って
いて気持ちがいいからだと思います。一般
2003 年 の LL Saturday に
に LL は道具もしくは黒子で表には出てきま
出させてもらった時、Ruby のバージョンは
せん。しかし、Ruby ユーザーは他の LL ユー
1.8 でした。2007 年に、コアを大幅に置き換
ザーにはないほど言語に対する愛情を示しま
えた Ruby1.9 を出しましたが、いまだに多
す。色々なコミュニティのシンボルになって
くのプログラマが、1.8 を使っています。当
まもなく誕生から 20 年
時は、Perl や PHP など「P」で始まる言語が
らの生産性が高いか、といった議論もあり
それを機に、Ruby2.0 を出そうかなと思って
優勢で、Ruby は肩身が狭かった。流れが変
ました。それから 10 年近くが経ち、フルタ
います。
いる。まもなく Ruby も誕生から 20 年です。
ȗȭǰȩȟȳǰᚕᛖϼྸኒǛᐯ˺ƠƯЎƔƬƨƜƱ
next Perl5 プログラミング言語 Tora 開発者
の Tokuhiro Matsuno さん、
「Perl6 の実装には
まだコレというものがない。処理も遅い。とは
いえ Perl5 の使い勝手はシンプルではない。自
分なりに理想を追求して、Perl5 から 0.5 くら
いアップした言語を作った。こうした取り組み
を通じて Perl5 や Perl6 の開発に貢献できれば」
と発言。一方、@Constellation さんは、ECMA
Script の次期バージョン(ES.next)について言
及。「ES.next エンジンは仕様に忠実な実装と、
処理の高速化を目指しています。ECMA Script
の未来は明るい!」と語り、JSX を開発した @
kazuho さんは、
「モバイル向けのゲームの開発
にあたって高速化、デバッグ品質の向上、ソー
スコードの見やすさが求められている。JSX で
はより速く安全で簡単な JavaScript を目標に掲
げ、今後はライブラリの拡充を図りたい」と展
望を述べました。
組み込み向けの mRuby を開発中のまつもと
ゆきひろさんは、「cRuby ではできない領域に
拡げていきたい。太陽光発電の管理システム
や、消費電力の見える VPN ルーターなどのア
イデアや実装例も少しずつ現れている。正式に
は 2013 年の発表をご期待ください」と意気込
みを披露しました。
Perl6 の仕様と動向について解説を行った司
会の竹迫良範さんには来場者から「自身で言語
を開発しないの?」という質問が飛ぶワンシー
ンもありました。
̸ƨƪƷዒዓႎ hogehoge Ƹ
‫ڼ‬LJƬƨƹƔǓƩᲛ
টᚃ˟ȬȝȸȈ
アプリケーションの品質改善や納期短縮に向けて各社
が取り組む継続的インテグレーション(CI)の現状とは。
LL イベント本編の勢いそのままに始まっ
た懇親会。ここではスポンサー企業などに
Jenkins をはじめとする各種 CI ツールを活用したさまざ
まなテスト事例が披露されました。
よる Lightning Talks が行われました!
「出版社のシステムでビルドされた原稿をテストす
る際に Jenkins を活用」cactusman さん(BeProud.inc、
日本 Jenkins ユーザ会)
、
「LL はダックタイピングを活用
することで、いろ
いろなモックを作
れる」太田健一郎
さん
(TDD 研究会、
Android テ ス ト
部)
、
「JsTestDriver
を使い、各種実ブ
ラウザにおける
JS テ ス ト を 効 率
化している」@kyo_ago さん(KAYAC)、
「社内を巻き込
む工夫を行ったと
こ ろ、 テ ス ト コ ー
ドを書かないメン
バーが激減した」
高 倉 利 明 @TrinityT
さ ん( 株 式 会 社 ア
ピリッツ)
、
「テス
ト に 限 ら ず、 日 々
のタスクをスクリ
プトで自動化するのが重要」きょんさん、「許可を取ら
ずに始め、成果を出してから上司に見せる、そして楽し
むことが CI 浸透のコツ」山城裕 @yamashiro さん。
皆さん、いろんな工夫を重ねているんですね!
どろくさい言語と LL のイイトコ取りをしたという東
北大学電子通信研究所が、開発中の SML# について講演。
PHP カンファレンスは、9 月 15 日に大田区産業プラ
ザで開催。9 月 14 16 日は、札幌 Ruby 会議。9 月は LL
絡みのイベントが目白押し。
LT のトリを務めたのは、USP 友の会。Tukubai ハン
ズオン、bash 勉強会、IT パパママ部、ペアプロ合コン
などの企画で積極的に来場者を勧誘。
26 USP MAGAZINE 2012 autumn
USPMAG201209_yorinuki_cs55.indb 26
2012/10/12 17:33:13
LL DECADE ͼαϋΠτεȜΠ
Lightning Talks ᳸ Ў᧓ɟஜѨ᝟᳸
ゆーすけべーさん
角谷信太郎さん
川崎有亮さん
人物写真と、宮川達
彦さんの手にする
「紫色の何か」を合
成して表示する Perl プログラム「miyagawanaize」そ
のバージョン 2 が公開。0.5 秒おきに写真を読み込み、
アニメーション化。その奇妙な動きに会場は大爆笑。
日本 Ruby の会で理
事を務める角谷さ
ん。
「 僕 は Geek に
はなれない。でも、そうした人を集めてイベントを 10
年やってきました。チャレンジし続けるには、いつも
一歩上のレベルに噛みつくぐらいがちょうどいいと思
います」と話しました。
シリコンバレーでは
プログラマの人件費
が高騰し、クラウド
ソーシングが流行。この時代を生き抜くために必要な
のは、流暢な英語? 基盤的なソフトを作る技術?。
いや「紫色の何か」ということで、画面の青系色を緩
和する目に優しいプログラムを公開。
庄司嘉織さん
法林浩之さん
LLNOC チーム
ブラウザのリロード
はムダ、ということ
で処理を自動化する
スクリプトを CoffeeScript で自作した庄司さん。最後
は、山城裕 @yamashiro さんの彼女募集。そっちが本
題か?
スピーカーとして
初めて参戦の法林
さ ん。 本 家 米 国 の
LL は 2 年で終了。なぜ、
日本では LL が 10 年続いたのか。
イベント名を工夫し、リングの上でやったり、トーナ
メントをやったり。これからの 10 年にも大いに期待
しています。
空気や水のように使
え る、 無 線 LAN 環
境を会場内に構築し
てくれたネットワー
ク部隊。今回も約 300 人の来場者が利用したそうです。
これまでのイベントで蓄積したノウハウやエピソード
を報告。
yuroyoro さん
ただただしさん
高橋征義さん
株式会社スケール
アウトで広告配信
を手がけている
yuroyoro さんは、音声にフォーカスした話。最後は、
自作の音声認識ツールに「バルス!」と呼びかけ、PC
をシャットダウン。見事時間内に講演を終了。
Ruby で ブ ロ グ ツ ー
ル tDiary を 開 発 し
て き た た だ さ ん。
「Ruby のバージョンを意識することなく使える。初期
のユーザーを置いてけぼりにせず、新機能を追加して
きた。25 年使えるものにしたいから後 14 年は続ける」
と宣言。
LL に は、 初 期 の 頃
からスタッフとして
関わり、その足取り
を見てきた高橋さん。「学校のような場所。イベント
慣れしていなくても足を運びやすい。プログラマなら
ば言語を問わず大歓迎」
。この日は、自身が会長を務
める日本 Ruby の会についてもアピール。
竹迫良範さん
司会を進める郷
田まり子さんと、
ドラ娘のショウ
ジユウコさん
最後の LT を飾った
のは竹迫さん。サー
バーサイド JS が注
目される中で、JIT コンパイラの脆弱性を指摘。JITSpray 攻撃を実演すると、悪意あるコードがおなじみ
の爆弾アプリ(無料)を起動し、会場は大爆笑。
もはや LL の風物詩
となったドラの音が
会場いっぱいに鳴り
響けば拍手喝采!
ロビーで展示した書籍見本やグッズがあたる抽選会
のボール投げ
LL イベントの盛り上がりは、業界におけ
る LL の浸透と軌を一にします。
まつもとゆきひろさんが指摘されていまし
た。「どの言語の技術がいいとか悪いという
話ではなく、言語を使って何かを変えていこ
うと、人々をドライブする熱意こそが、世界
を動かすのではないか」。
大切なのは、言語の壁を越えた、参加者同
士の交流。互いの言語をリスペクトし、刺
激し合うこと。LL の世界はグローバルです。
LL イベント、次の 10 年が始まります。
27
USPMAG201209_yorinuki_cs55.indb 27
2012/10/12 17:33:15
特集2
ΟȜσ Ȇ ΘΧΞͻঙͅଆ̩Ȃ
Ο
ܿ੅৪ഓ‫ڠ‬
私たちは単なる
消費者(Consumer)ではない。
誰もが世界を変える力を持った
創造者(Maker)だ。
「Hacks」や「クックブック」シリーズで知られるオラ
イリー・メディア(O Reilly Media, Inc)創設者の一人、
デール・ダハティ氏が、2012 年 6 月、来日した。
目的は日本の Maker が繰り広げるムーブメントの視察
と、Maker 達との交流だ。
「Maker(メイカー)」とは、デール氏曰く、「文化の創
造者」。道具を駆使し、世界を探索(ハッキング)する
人。単なる消費者ではなく、作る喜びを知っている人。
世の中を楽しませ、社会を変える人。
「皆さん一人ひとりが Maker です」とデール氏は語る。
その言葉に込めたデール氏の思い。そして、ソフトウェ
アエンジニアを含めたこれからの時代を担う Maker に
必要なものとは何か。
(聞き手:松浦智之、まとめ:柏崎吉一)
――プログラミングやシステム運用管理など
で UNIX を学ぶ人は誰しも一度、オライリー・
を教えていただけますか。
もともと、私とティムは、文学少年でした。
した。私たちが UNIX に注目したのは、これ
を使えば出版社を作れると考えたからです。
メディアの本を手にしたことがあると思いま
いつか自分たちの手で出版社を作りたいとい
UNIX 上で、書籍や雑誌における文字組みや
す。その一つ、
「sed&awk プログラミング」
う夢を抱いていたのです。
図版のレイアウトデザインを行い、誌面の入
の著者であるデールさんが、ティム・オライ
テクニカルライターとして仕事をこなす
稿データを作る。後は、レーザープリンター
リー氏とともに発行人を務める、
オライリー・
ようになっていた 80 年代、私たちの業界に
などで印刷し、製本すれば自分たちの手で本
メディアを立ち上げた経緯や書籍執筆の動機
もコンピュータ革命の波が押し寄せていま
や雑誌を作れると考えました。
28 USP MAGAZINE 2012 autumn
USPMAG201209_yorinuki_cs55.indb 28
2012/10/12 17:33:18
特集 2
ΟȜσ Ȇ ΘΧΞͻঙͅଆ̩Ȃ ܿ੅৪ഓ‫ڠ‬
Ο
事)
。「Make」 で 取 り 上 げ て い る の は、 世
が契機となって米国の Maker を動かす。自
そうです。ただし、私たちはエンジニア
の中をハッキングする人々です。Maker と
ら考える個人がネットワークでつながり、作
ではなく、テクニカルライターなのでコン
Hacker は ほ と ん ど 同 じ 意 味 だ と 私 は 思 い
り方などの情報をシェアし、コラボレーショ
ピュータの知識はほとんど持ち合わせていま
ます。Maker のほうがその指し示す範囲が
ンする。新しいものづくりの形態です。ガイ
せんでした。しかし、
勉強すれば何とかなる、
Hacker より、広いだけです。
ガーカウンターはあくまで一例ですが、Web
自分たちもきっと使いこなせると楽観的に考
――「Make」初の日本版(2006 年 8 月発行)
上に発表されたある作品がボーダレスに次々
えていました。そして勉強の過程で身に付け
では、
「ビデオデッキを改造して猫の給
機
と他の Maker を刺激し、Maker の一大ムー
たことを逐一記録しておき、それをもとに
を作る」という記事があり、実際に動く作品
ブメントとして世界各地に波及していくこと
テーマを絞った UNIX ユーザー向けのハンド
のメカニズムなどを紹介していますね。
があります。
――DTP の草分けだったのですね。
ブックを作成しよう。最初はそんなノリだっ
取り上げる作品には実用的なものもありま
そうした Maker 達が年に一度、一堂に会
すが、一見しただけで、何のために使うもの
する場があります。Maker Faire です(P.39
「なければ作る」。これはオライリーの創
かよく分からないものも多々あります。とは
囲み記事)。
業時からの企業精神です。取扱説明書やシェ
いえ世相を見事に反映し、風刺が利いている
――どんなイベントなのでしょうか。
ルのマニュアルと首っ引きになって、プログ
ものが少なくありません。
ラムをいくつも作りました。そんな風にして
ではなく、内から込み上げてくる創造したい
原稿をまとめ、刷り上がった本一冊の値段は
という欲求に突き動かされてできあがった作
たしか 5 ドルでした。ニューヨークで開催
品がほとんどだと思います。
たのです。
けや名誉のため
Maker 達のお祭りです。作品を会場一杯に
展示します。
ち な み に 米 国 に は、Renaissance Faire と
いう、ヨーロッパの中世時代の人々の格好を
された UNIX EXPO でそれを完売し、手にし
最近、私が興味を持った作品は、米国人が
して楽しむコスプレ・イベントがあるのです
たお金で、ティムと私は、ブロードウェイで
自作したガイガーカウンターです。昨年の福
が、Maker Faire もそれと同じで、まったく
観劇した思い出があります。
島第一原子力発電所の事故をきっかけに、自
堅苦しいイベントではありません。子供も大
アマチュアたちの
創造性に強く共感
分の身の回りにあるものを組み合わせて自作
人も楽しめます。ぜひ一度足を運んでみてく
したと聞いています。私がこの作品に興味を
ださい。人生観が変わりますよ。
――「作る」ということに興味を持ったのは
持った理由は、Maker 同士が築いた、海を超
今年 5 月にベイエリアで開催された 7 回
その時からですか。
えたネットワークにあります。日本の出来事
目 の Maker Faire で は、2 日 間 で の べ 11 万
はっきりいつ、とは言えませんが、私は次
第に、本の制作に限らず、
『 何かを作る と
いう行為の楽しさ・充足感は、特別な人達だ
けが独り占めするような感情であってはなら
ない』と思うようになりました。作り手は特
Maker Faire
∼ Maker 達の作品が一堂に会するお祭り∼
今年で 7 年目を迎える Maker Faire は、これまでサンフランシスコ・ベイエリアを中心に、デトロイト、
ニューヨークなどでも開催されてきた。これと並行して日本では 2012 年 11 月に、
第 8 回目となる「Maker
Faire Tokyo」が開催される予定(第 1 ∼ 7 回までは「Maker:Tokyo Meeting」という呼称だった)
。米国
で始まった Maker Faire のムーブメントは、日本を含む世界 60 カ所に飛び火している。
権的な存在ではない。作る喜びは誰しも味わ
える。私たち一人ひとりが Maker であると
思うに至ったのです。
「ある人が Maker かどうか」を見分ける
簡単な方法があります。その人の目の輝きで
す。何かの製作に没頭している時、人はたい
てい生き生きしています。ではなぜ、一心不
乱に作業しているのか。
回りの人に見せたい、
笑わせてみたい。心の中から湧き上がってく
る、抗しがたい衝動のようなものがモチベー
ションだと思います。私たちがオライリー・
メディアを立ち上げた時もそんな感じでし
た。
そういった Maker たちを数多く取材して
いるうちに、オライリー・メディアは「Make」
という雑誌を生み出しました(P.40 囲み記
(写真は Maker Faire BayArea2012 のハイライトから抜粋
http://makerfaire.com/bayarea/2012/index.html)
29
USPMAG201209_yorinuki_cs55.indb 29
2012/10/12 17:33:21
Make
だったと思います。
∼ジャンル不問の DIY 雑誌∼
英語版は 2005 年から通巻 31 号が発売。それを翻訳し
た日本版は 2006 年 8 月の創刊から 2011 年 4 月まで通
算 11 号が発売されている。
活動を行っていました。かつては専門家し
体は木製でした。よく見ると、欠けているキー
か、あるいはお金持ちにしか使えなかった技
があります。完璧ではない。しかし作り手
術が、ほぼ誰でも使える。技術の民主化が起
の情熱がひしひしと伝わる一品です。Maker
きているのです。道具へのアクセス権につい
Faire の会場では、この Apple Ⅰ を彷彿さ
ては、プロとアマの差がほとんどありませ
せる作品をよく目にします。外観はエレガン
ん。学校や家の中が小さな工場になりえます。
トではないけれども、内に秘めた可能性を感
Maker space(P.41 囲み記事)というのは、
じさせる。Maker Faire に出展されている今
そうした道具や材料を一式
日の作品が少しずつ改良され、30 年後には
が遊べるようにした工房です。
Apple Ⅰ から iPad に至るような大変身
を遂げているかもしれません。
専門業者に頼らずとも、個人の力でいつの間にかこ
んなものまで作れる時代になったのか、ということ
を見せつけている雑誌です。本物の宇宙へ送る人工
ツールをごく当たり前に使って研究や製作
彼らが最初につくった Apple Ⅰ。その筐
えて、子供たち
でも、仮に道具が手に入らない場合でも、
悲観する必要はありません。ないものは工夫
そういう作品を見ながら、
「一体どこから
して編み出せばいいのです。それがコストの
こういうアイデアが湧いてくるのか」と、作
削減につながることもあります。こういう発
り手の思いを想像するのはとても楽しいもの
想の仕方こそが、Maker 精神です。大事なの
です。
は、ツールセットではなく、マインドセット。
日本人も参加しています。北村満さんが展
ツールでもなんでも作ろうという情熱と遊び
示された自作のプラネタリウムは感動しまし
心があれば、たいていの困難を乗り越えられ
た。私がドームの中に入ると、映画「スター
ます。
衛星まで作ってやがります。国家が莫大な予算を投
ウォーズ」の何シーンかを影絵で即興表現し
DIY(Do It Yourself)の意味するのは、決
じて作ってるのを尻目にですよ!今や必要なのは金
てくれたのです。Maker Faire は、アートと
して孤独、独りぼっち、ではありません。最
技術の橋渡しをするクロスカルチャーの場だ
初はたとえ一人で作ったとしても、成果を他
と思いました。
の人に見てもらう。するとアイデアを付加し
ツールセットより
大事なのはマインドセット
てくれたり、改良してくれたりする仲間がだ
じゃない。才能を無駄遣いして神と呼ばれる存在に
なってやるという情熱くらいなものですよ。(松浦)
人が集まりました。すごい熱気でした。
「この世界は、僕たちとさほど能力的に変
わらない人たちの手で作られている」
。こう
――7 年前の Maker Fair と比べて、何か大
言ったのは、スティーブ・ジョブズです。コ
きく変化した点はありますか。
んだん増えていきます。
オープンソースソフトウェアは、そのよう
にしてコミュニティの中で日々進化していま
ンピュータは世界を変える、彼はそう確信し
アイデアを形にするための「道具」がいま
すよね。同じように、3D プリンターや卓上
て、スティーブ・ウォズニアックと同様に大
ほど入手しやすい時代は過去になかったで
工作機械といったハードウェアも日々改良が
学を中退し、マニアが集まるカリフォルニア
しょうね。PC にしてもそうです。立体加工
重ねられているのです。
のホームブリュー・コンピュータ・クラブに
を行うためのレーザーカッター、小型の 3D
顔を出すようになります。そこでコンピュー
プリンターしかり。
タ開発に残りの一生を捧げると誓った。そ
先日、ジョージア工科大学の技術系研究室
のクラブはきっと Maker Faire のようなもの
を訪ねましたが、やはり学生たちがこれらの
改良を重ねて世の中が変わる
――デールさんは、2011 年にホワイトハウ
スから「Champion of Change(変革の旗手)」
という表彰を受けましたね。
実のところ私は、官僚や教育関係者などの
おエラい人々から褒められることにあまり関
デール・ダハティ
(Dale Dougherty)
●オライリー・メディア創業者の
一人。
「sed&awk」の執筆者。雑
誌「Make」の編集者・発行人。現在、
オ ラ イ リ ー・ メ デ ィ ア の Maker
Media 部 門 を 率 い る 統 括 マ ネ ー
ジャーである。1993 年に、世界
初となる商用 Web サイトを立ち
上げた人物としても知られる(同
サイトは 1995 年に AOL に売却)
。
心がないのです。そうした多くの大人は、内
的衝動に駆られて世の中を探索する Maker
ではなく、消費者あるいは何かの目的のため
に道具を使う利用者に留まっていることが多
いからです。
時々、大学などに招かれて講義することが
ありますが、そこで私にとって本当に興味あ
るのは、学生達の目の輝きです。学生と話を
30 USP MAGAZINE 2012 autumn
USPMAG201209_yorinuki_cs55.indb 30
2012/10/12 17:33:22
特集 2
ΟȜσ Ȇ ΘΧΞͻঙͅଆ̩Ȃ ܿ੅৪ഓ‫ڠ‬
Ο
ます。
していると、思いもよらない奇抜なアイデア
日本にもすごい技術を持ったエキスパート
が飛び出してきます。失敗を恐れずにチャレ
がたくさんいますね。しかし、そういう方々
―― デ ー ル さ ん の い う Maker 精 神 を USP
ンジする姿勢を見るのが私は大好きなので
の多くはホームページどころかメールアドレ
MAMGZINE も見習って、さらに今後も活動
す。
スさえ持っていない。その人の腕前を必要し
の輪を拡げていきたいと思います。今日は本
当に有難うございました。
そもそもこの社会全体が、発明や改良の連
ているのに、すぐに見つけることができませ
続によって作られています。最初からこの
ん。そこで、こうした能力を持った人がどこ
ように出来上がっているわけではありませ
にいるかすぐに探せる人材マップを作れない
ん。また、誰か一人の手によって作られたわ
かというアイデアを、城一裕さん(情報科学
けでもない。誰かが作ったものを後の世代が
芸術大学院大学講師)らと相談しています。
ちょっとずつ改良していくだけです。完成は
コミュニティやエリアをつなぎ直す取り組み
永遠にありえません。
になりそうです。 物心ついたばかりの子供の目に飛び込んで
くる世界は、あたかも すでに出来上がった
――Maker が社会を大きく変える時が来て
いるのでしょうか。
完成品 のように見えますが、よく見ると改
そうですね。ただ、分野によっては長期的
善・改良の余地がたくさんある。完璧なもの
な視点が必要です。というのも、いろいろな
などないのです。そして、それを改良するの
規制やルールに縛られている大人たちの考え
は私たち自身です。その事実に気が付くと、
方は、
なかなか簡単には変わらないからです。
人生が変わり始めます。Maker になるのです。
既存の社会を相手に真正面から変革を訴えて
――エンジニアなどのプロフェッショナル
も頑なに阻まれてしまいます。でも、そうい
が、アマチュアの精神を持ち続けるにはどう
う時は、横から入るという手があります。
すればよいでしょうか。
Maker space
∼各国に広がる子供のための「出前工房」∼
雑誌「Make」と Otherlab が連携して展開するワーク
ショップ・プロジェクト。衣服の製作や木工などに必
要な道具や材料を置いたスペースを設置し、子供たち
に「作る」という体験を通じて、ものづくりやサイエ
ンスに興味を持ってもらうのが狙いだ。参加費や材料
費などは基本的に無料。米国の DARPA などが資金面で
活動を援助している。
http://makerspace.com/ 例えば、学校の生徒たちにものづくりを経
プロフェッショナルは、自らの腕を磨きつ
験させたい、といっても「レーザーカッター
つ、アマチュアのアイデアを寛大に受け入れ
を購入する予算がない」と一蹴されることが
ること、そしてアマチュアを育てていくこと
よくあります。しかし、学校の脇にある空ス
が大切です。アマチュアが犯す 質の高い勘
ペースなどをちょっと拝借し、野菜を育て始
違い は、時にイノベーションの源泉となり
めてみる。最初は誰も見向きもしない。しか
ます。アマチュアは、秩序をよい方に乱す存
し、そこにニンジンなどが芽吹いてくると、
を引用している。
在なのです。プロは、そのようなアイデアを
学校の生徒たちが興味を持って覗きにくる。
1)Interest in interdisciplinary projects
ビジネスに取り入れるため、プロジェクト
みんな自分が口にするものがどこから来るの
学術的な専門分野や組織の枠組みを超えた人々との出
チームの中に、アマチュアを数名参加させる
か興味があるからです。そのうち先生も覗き
とよいでしょう。
に来る。そうやって気付くとみんなを巻き込
独創的なアイデアを持つ人達には、町工場
んでいる。道具や場所があるに超したことは
などで働くベテランエンジニア、伝統的な技
ないですが、何かも最初から用意する必要な
能を持っているエキスパートが含まれます。
どないのです。
What is a maker?
Maker とは何か。それを分かりやすく示したものが、
下記リストである。Maker に共通する 5 つの行動原則
を示したものだ。Maker ムーブメントに参画する有志
が考案したものだが、デール氏は好んでしばしばこれ
会いを楽しもう。クロスボーダーの交流が新たな刺激
や気付きを生むからだ。
2)Desire to visualize and understand physical world
テクノロジーや情報を消費するだけでなく、自ら作り、
参加せよ。作ることを通じて現実世界を可視化すれば、
世の中をいっそう深く理解できる。
こうした人達にも私は光を当てたいのです。
道具よりはるかに重要なのは、マインドを
3)A mindset of playfulness
シリアスになり過ぎない。遊び心を忘れない。ツール
どれだけ優れた力量を持っているか、本人は
育てることです。そして正面突破をせず、横
セットより大事なのは、マインドセット。ないものは
あまり気付いていない。周囲もこうしたエキ
から入ってしまう。許可を求めず、小さく
作れ。
スパートにあまり敬意を払わない。米国でス
始めてしまう。Maker ムーブメントもそう
4)Share in open source communities.
ターリングエンジンという動力機関を再現し
いう風にして拡がっています。こうしたコ
いつもオープンであれ。どんな研究開発でも、研究所、
ている Maker のグループがあります。そこ
ミュニティの中で育った子供達は、単なる
を成し遂げられない。異なるアングルから眺めた時に
に参加するシニア層のエンジニアは、スーツ
Consumer ではなく、Maker として育ってい
発見がある。
を着て働くお父さん世代が、子供たちから頼
きます。社会を改善できる人に自然となれる
5)Sense that world can be improved, problems can
まれても直せない類の機械の知識や製造技術
のです。子供たちが、消費者ではなく、文化
を持っている。世代を超えた交流が新しい価
の創造者である、と当たり前に思える社会が
値を生み出すことがあります。
来たときに私は、世界が変わると確信してい
企業、大学のなかに留まっていては、ブレークスルー
be solved, and things can be changed.
自分を信じろ。スティーブ・ジョブズのように「世界
は自分達の手でよりよく変えられる」
「問題解決できる」
という楽観的なモノの見方こそ最大の武器だ。
31
USPMAG201209_yorinuki_cs55.indb 31
2012/10/12 17:33:23
ɔȊɐȊɔȊɐȊɔȊɐȊɔȊɐȊɔȊɐȊɔ
シェルスクリプト大喜利 第六回
皆様こんにちは、はじめまして。三か月のご無沙汰、シェ
ルスクリプト大喜利(略して sh 大喜利)のコーナーです。
ちょっと皆さん、聞いてくださいよ!このシェルスクリ
₻₏₷₏₻
ɔȊɐȊɔȊɐȊɔȊɐȊɔȊɐȊɔȊɐȊɔ
ংٛȇȸ̽͂͜଑̩ȹ༎ਬಿȆ͙̥ͭ
ٝ
ల჋
₻₏₷₏₻
ΏͿσΑ·ςίΠఱ‫ܔ‬၌
まった答えというものはないのです。あえて言うなら面
白いスクリプトが正解!
ඵȂġ面白いスクリプトとは例えば、こんなもの。
プト大喜利のコーナーの第四回で募集したちんじゅうちゃん
ͼȂġ人が考えつかない意外性がある
マウスパッド。本当につくっちゃったんですよ。↓
υȂġ美しい or 芸術的 or 記述がシンプル・短い or 高速
ΧȂġアイデア・こだわりが光る
ΣȂġネタになるようなバカバカしさ、くだらなさがある
などなど、ただし最後のは段位強制返還の恐れありよ。:-)
२Ȃġスクリプト動作環境は Linux とします。そして、特に断り
な き 場 合 は、Linux JM(iuuq;00mjovykn/tpvsdfgpshf/kq0)
に記載されているコマンド及び機能のみ使用可能としま
す。これは多くの人が楽しめるようにするためなのです。
(但し JM に載っているので、ń ΏͿσࠏ͈́ٝ൞͜ ŐŌ Ȋ)
অȂġsh 大 喜 利 は シ ェ ル ス ク リ プ ト を 披 露 す る 場 な の で、
őŦųŭ ͞ œŶţźȂ őźŵũŰů ͉̈́̓ঀ̻̽͝Θιです。そも
そも JM にも載っていません。逆にシェルスクリプトに
とって不可欠な awk や sed 等は OK です。JM にもあり
マウスパッドを使う GUI 派な人に向けて、ちんじゅちゃ
ますし。でも、よっぽど面白ければ、なきにしもあらず?
んが CUI 文化の素晴らしさを教育するというお節介極まり
ルールもおさらいしたところで、それじゃイッてみよう。
ないマウスパッド。しかし、‫̹͈ͤ৾͛֗ͅޗ‬ષ̬̞̀ͥ Ŵŭ
ࡼȂġOpen usp Tukubai(iuuq;00vfd/vtq.mbc/dpn0) も使用 OK !
΋ζϋΡΥΗ͉Ȃ ۴૤͈ ňŖŊ ෩͂̽̀ͅȂ ̩͢փྙ̦̥̞ͩͣ̈́
但し、それなりに見応えないと採用はキビシいですよ∼。
̞̠͂΂Ι̦ȤȤȃ ダメじゃん!
ུ๔‫ٳ‬ই
でも逆に、我々 CUI 派には大ウケで、8 月にコ○ケで頒布
したら大半の方がニヤリとしてくれました。良いような悪い
Ƀల֚࿚Ʉ
ような……。でもまたこういう企画やりたいもんですなぁ。
ȶࢨ‫׋‬ତȷ ͂ࡤ͊ͦͥুடତ̦̜̳ͤ͘ȃ IJıı ո‫׋ࢨ͈ئ‬
TechLION や OSC などのイベント入手できますよ。
ତͬ஠̀‫ͥ͛ݥ‬ΏͿσΑ·ςίΠͬ੥̞̩̺̯̞̀ȃ
周囲に CUI 文化の素晴らしさを説きたい人がいたら、こっ
そりマウスパッドをコレにすり替えちゃいましょう。
皆さん知ってました?幸運数って数学的な定義があるっ
てことを。ラッキー 7 ってのも何となく 7 なのではなくて、
えーではそろそろ、本コーナーのシステムをご説明します!
数学的に 7 が幸運数だからみたいですよ。知らなかった方は
ΏͿσΑ·ςίΠఱ‫ܔ‬၌͉͂
詳しくは Wikipedia 等で調べてもらうことにして、そうやっ
ΏͿσΑ·ςίΠఱ‫ܔ‬၌අခ͈σȜσ
֚Ȃġsh 大喜利はクイズやテストではありませぬ。なので決
て数学的に定義されているアルゴリズムをシェルスクリプト
で実装してもらうのがこのお題というわけです。
投稿数で判断すると、このお題が今回の一番人気でした。個
性豊かな解答が来とります。さてさて早速見ていきましょう。
012
2 autumn
aut mn
MAGAZINE 2012
46 USP MAGAZIN
USPMAG201209_yorinuki_cs55.indb 46
2012/10/12 17:33:24
徹底仕
仕事術!
C U I 徹底仕事術!
ΏͿσΑ·ςίΠఱ‫ܔ‬၌
ɝŌ ̯͈ٜͭ൞
2!$"0cjo0ti
3!jg!\!%$!.mf!2!^<!uifo
4!!!!!O>%|2;.211~
5!!!!!tfr!2!%O!}!/0MvdlzOvncfs/ti!%O!2!3!}!us!(]o(!(!(
6!!!!!fdip
7!!!!!sn!MvdlzOvncfs/\1.:^+
8!fmjg!\!%2!.mu!%4!^<!uifo
9!!!!!fyfd!dbu
:!fmtf
21!!!!!O>%))%2.%20%4**<!M>%))%3,2**
22!!!!!j>2<!k>2
23!!!!!xijmf!sfbe!mjof<!ep
24!!!!!!!!!jg!\!%j!.fr!%4!^<!uifo
25!!!!!!!!!!!!!j>2
26!!!!!!!!!fmtf
27!!!!!!!!!!!!!jg!\!%k!.fr!%M!^<!uifo
28!!!!!!!!!!!!!!!!!N>%mjof
29!!!!!!!!!!!!!gj
2:!!!!!!!!!!!!!fdip!%mjof<!j>%))%j,2**<!k>%))%k,2**
31!!!!!!!!!gj
32!!!!!epof!?!MvdlzOvncfs/%%
33!!!!!/0MvdlzOvncfs/ti!%O!%M!%N!=!MvdlzOvncfs/%%
34!gj
自身を再帰的に呼び出しているのでこのスクリプトは
LuckyNumber.sh という名前にしてください。
K さんは 2 つ投稿してくれたのですが、私の独断と偏見で
AWK を使ってないこちらを採用しました。添付コメントに
よれば、データを 2 回走査しなくてよい方法を思いつかず
悩んだそうなのですが、アルゴリズム上多分 2 回走査は必
要なんじゃないかと思いますよ。
さて、このコード。再帰呼び出しで実装してるのが他の
投稿に無くてちょっと面白い。֚౲਎ဓ!これで二段だ。
ɝ൐‫ ނ‬ŢŸŬŦų ̯͈ٜͭ൞
2!$"!0cjo0ti
3!bxl!#CFHJO|gps)j>2<j=>211<j,,*|qsjou!j~~#!?!mo
4!j>3
5!o>%)bxl!#OS>>%j|qsjou<fyju~#!mo*
6!xijmf!\!.o!#%o#!^<!ep
7!!!!!bxl!#OS&%o">1#!mo!?!mo2
8!!!!!o>%)bxl!#OS>>%j|qsjou<fyju~#!mo2*
9!!!!!j>%))j,2**
:!!!!!bxl!#2#!mo2!?!mo
21!epof
22!bxl!#2#!mo
AWK に拘って、呼び出している外部コマンドを AWK だ
けにしたとのことです。なるほど……。
その拘りが素晴らしい。コードもそつなく書けてるし。
6!c>amt!}!tfe!.o!#%|b~q#a
7!xijmf!\!.o!#%c#!^<!ep
8!!!mt!}!tfe!.o!#%|c~%|c~q#!}!ybsht!sn!.g
9!!!c>amt!}!tfe!.o!#%|b~q#a
:!!!b>%))b,2**
21!epof
22!mt!}!tfe!(t0_1+00(
sed に拘って AWK を一切使わず組んだとのことです。ま
た、テキストファイルではなくファイルシステムを使ってい
るところも拘りです、と添付コメントに書いてありました。
うーん、面白い。sed とファイルシステムを使いこなして
るねー、sed は一部 GNU 拡張な使い方してるけど。最初の
1 ∼ 100 の値をブレース展開で作ってるのもいいね。よし、
これはඵ౲਎ဓしちゃおうか。……だけど今紹介したこの二
人、̱͜͞൳֚૽໤͈͉̈́́ȉȉȉコードが似てるしペンネー
ムも。言ってくれればまとめて三段にしてもいいからね。
そして、Tukubai 使った解答は来ないのかーと、思ってい
たら一つ採用しようか悩む解答が来ましたよ。(結局採用)
ɝˏˍˎˑˍ˒̯͈ٜͭ൞
2!$"!0cjo0ti
3!
4!tfr!2!211!?!ovn
5!tufq>3
6!wbm>%)zbss!ovn!}!tfmg!%tufq*
7!xijmf!\!%)hzp!ovn*!.hf!%wbm!^<!ep
8!!!dbu!ovn!!!!!}
9!!!zbss!.%wbm!!}
:!!!bxl!(nbyog=>OG|nbyog>OG<qsjou<ofyu<~|tus>##<efm>
##<gps)j>2<j=>OG<j,,*|tus>tus!tqsjoug)#&t&t#-efm-%
j*<efm>GT<~gps)<j=>nbyog<j,,*|tus>tus!tqsjoug)#&t&
t#-efm-#+#*<~qsjou!tus<~(!}
21!!!efmg!%wbm!!!}
22!!!ubss!!!!!!!!}
23!!!hsfq!.w!(+(!?!unq.ovn
24!!!wbm>%)zbss!unq.ovn!}!tfmg!%tufq*
25!!!tufq>%))tufq,2**
26!!!nw!unq.ovn!ovn
27!epof
28!fyfd!dbu!ovn
Tukubai らしく、綺麗にパイプで繋いでるなーと思ったら
途中にごちゃごちゃした AWK が……。これが残念です。
しかし投稿者コメントによると、「delf コマンドは列数が
揃っていないと正しく動かず、やむを得ず列数を揃えるため
の awk を入れました」とのことで本人も残念がってました。
うーむ、これは仕様ですね。tateyoko コマンドもそうな
のですが、列数が揃ってないものはエラーとして弾きます。
よし੝౲਎ဓだ!
Tukubai では不正なデータは、それも受け入れられるように
ɝŴŦť ඤ ŬŦų ̯͈ٜͭ൞
コマンドがいちいち配慮せず、容赦なく弾きます。そうする
2!$"!0cjo0cbti
3!sn!.sg!mo<!nlejs!mo<!de!mo
4!fdip!1|1//:~|1//:~!}!tfe!(t011102110(!}!ybsht!upv
di
5!b>3
事でコマンドをシンプルに設計するという思想だそうです。
必要なら前段階で整形しなさいと。確かに一理あります。
ということで、これは仕様なんだけどもよくぞ Tukubai
を使ってくれた。ありがとう、੝౲਎ဓ。
47
4
7
USPMAG201209_yorinuki_cs55.indb 47
2012/10/12 17:33:26
長かったですけど、次のお題行きます。
Ƀలඵ࿚Ʉ
ĺ ࣐ ĺ ႥȂ ‫ڎ‬Ⴅ̦ΑβȜΑߊ୨͈߇߇͈Ξ΅ΑΠນέ͹ͼσ
̦̜̳ͤ͘ȃ ̭͈ນͬດ੔੄ႁ̥ͣඋ͙Ȃ Ź ࣐࿒Ȃ ź Ⴅ࿒ͅ
̜ͥΓσͬ‫͛܄‬Ȃ ̷͈‫͈ئ‬Γσ஠̀ͬȂ ષͅ Ż ࣐‫ͥ͛ݑ‬ΏͿσ
Α·ςίΠͬ੥̞̩̺̯̞̀ȃ ̹̺̱ষ͈ॽအ̱̳͂͘ȃ
Ȇġ ‫ߗ̧̹̭̹́́͂͛ݑ‬Γσ͈౵͉ ģŁģ ̞̠͂໲ল̳ͥͅȃ
Ȇġ ŹĭźĭŻ ͈౵͉஠̀΋ζϋΡ֨ତ́ള̩͈̳̽̀ͥ͂ͥ͜ȃ
Ȇġ IJ Ʌ Źĭź Ʌ ĺ ̤͍͢Ȃ ı Ʌ Ż Ƀ Ź ͉ΙͿΛ·ະါ̳͂ͥȃ
4!z>%3
5!{>%4
6!tfmg!20OG!?!%%.lvlv
7!dbu!%%.lvlv!}!tfmg!%z!}!tfe!%))%y!.!%{**-%))%y!.!2*
*e!}!zdbu!%%.lvlv!.!}!ifbe!.o!%)):!.!%{**!}!tfmg!%z!
OG!}!tpsu!}!dkpjo3!.eA!lfz>%z!.!%%.lvlv!}!efmg!%z!}!
lfub
8!sn!%%.lvlv
はい、Tukubai リリース元、USP の中の人からの投稿です。
コメント「tukubai 使用で awk 封印。がんばってパイプ
一本にまとめてみました」、ということです。
Excel なんかでもよくありますよね。指定した場所のセル
さすが中の人、短くまとまってるな。なるほど、加工対
を消して 1 セル分上に詰めたり、あるいは一つ増やしたい
象の行だけ取り出して切り詰め、インデックス付けて、元の
から 1 セル分下にずらすとか……。そうやって行を跨いだ
データと JOIN するのか。お手本ありがとう。֚౲਎ဓ!えー
操作っていうのはテキスト処理としては面倒なはず!と思っ
と……これで五段。順調に段位を重ねてますな。
てお題にしたわけです。
寄せられた解答はどれも Tukubai を使ってます。やはり
◇ ◇ ◇
おまちどうさま。今回のおバカお題、第三問行きましょう。
こういうシーンこそ Tukubai の得意分野というわけですな。
Ƀల२࿚Ʉ
ɝĴijIJĶIJķ ̯͈ٜͭ൞
ŤŢŵ ΋ζϋΡ͈ै৪̦֒࡞ͬॼ̱̱̹͘ȃ
2!$"!0cjo0ti
3!
4!tvc>((
5!j>2
6!xijmf!\!%j!.mu!%))%2.%4**!^<ep
7!!!tvc>#%tvc!]]%j#
8!!!j>%))j,2**
9!epof
:!xijmf!\!%j!.mf!%)):.%4**!^<ep
21!!!tvc>#%tvc!]]%))%j,%4**#
22!!!j>%))j,2**
23!epof
24!xijmf!\!%j!.mf!:!^<ep
25!!!tvc>#%tvc!A#
26!!!j>%))j,2**
27!epof
28!tvc>%|tvc$!~
29!
2:!ubufzplp!}
31!tfe!%3(t0])\_!^]|2-]~]*!]|2-]~])\_!^]|2-]~]*!]|2-]
~])\_!^]|2-]~]*!]|2-]~])\_!^]|2-]~]*!]|2-]~])\_!^]
|2-]~]*!]|2-]~])\_!^]|2-]~]*!]|2-]~])\_!^]|2-]~]*!
]|2-]~])\_!^]|2-]~]*!]|2-]~])\_!^]|2-]~]*0(#%tvc#(
0(!}
32!ubufzplp!}
33!lfub
ȶজ͈૽୆̤̫ͥͅडఱ͈ࢃ٣͉Ȃ ťŰŨ ΋ζϋΡͬैͤདྷͦ
先程に続きありがとうございます。
いやぁ、これまた途中にゴニョゴニョした行があるけど
アイデアは面白い。やりにくい特定列の行詰めを回避するた
めに tateyoko で表を一時的に転置し、特定行の列詰めにし
てしまっている。そこで sed を活用しているというわけか。
これはいいね。֚౲਎ဓ!さっきのと合わせて二段だ。
ɝŨŰųŪįŴũ ̯͈ͭٝ൞
2!$"0cjo0cbti
3!y>%2
̱̹̭̺̀̽͂͘ȃ ̛̜Ȃ ౗̥ै̩̽̀ͦȃ ΄·̽ȷ
̛̯Ȋ֚ఘ̓ͭ̈́΋ζϋΡ ŀ
ै৪ͬੳ਀ͅफ़̳̈́Ȋとツッコミ入れられそうですが、そ
こはご愛嬌。飽くまでお遊びですから∼。というわけでこれ
は、dog コマンドがもし実在していたらどんなコマンドかと
いうのをシェルスクリプトで表現してもらうお題です。
力作来ましたよ。まず、その力作を紹介しましょう。
ɝŁţŴťũŢŤŬ ̯͈ͭٝ൞
2!$"0cjo0ti
3!
4!dvsm>#.t!.p!.#
5!xhfu>#.r!.P!.#
6!mzoy>#.tpvsdf#
7!
8!$!hfu!dpnnboe!obnf!boe!qbui
9!gps!j!jo!xhfu!dvsm!mzoy
:!ep
21!!!gps!k!jo!0cjo!0vts0cjo!0vts0mpdbm0cjo!0pqu0cjo!0
pqu0mpdbm0cjo
22!!!ep
23!!!!!jg!\!.y!%|k~0%|j~!^
24!!!!!uifo
25!!!!!!!dpnnboe>#%|k~0%|j~!afwbm!fdip!(%(%|j~a#
26!!!!!!!csfbl!3
27!!!!!gj
28!!!epof
29!epof
2:!
31!$!bsht
32!xijmf!\!%|2~!">!##!^
33!ep
34!!!dbtf!%|2~!jo
35!!!!!..!*
36!!!!!!!tijgu
012
2 autumn
aut mn
MAGAZINE
MAGA
INE 2012
48 USP MAGAZIN
USPMAG201209_yorinuki_cs55.indb 48
2012/10/12 17:33:27
徹底仕
仕事術!
C U I 徹底仕事術!
ΏͿσΑ·ςίΠఱ‫ܔ‬၌
37!!!!!!!csfbl
38!!!!!!!<<
39!!!!!.+!*
3:!!!!!!!pqu>#%|pqu~!%2#
41!!!!!!!<<
42!!!!!+!!*
43!!!!!!!csfbl
44!!!!!!!<<
45!!!ftbd
46!!!tijgu
47!epof
48!
49!gps!j!jo!%+
4:!ep
51!!!jg!fyqs!%|j~!;!#iuuqt+;00#!?!0efw0ovmm
52!!!uifo
53!!!!!jg!\!.o!#%|dpnnboe~#!^
54!!!!!uifo
55!!!!!!!%|dpnnboe~!%|j~!}!dbu!%|pqu~
56!!!!!fmtf
57!!!!!!!fdip!#%|1$$+0~;!dboopu!hfu!sfnpuf!gjmf;!%|j~
#!2?'3
58!!!!!gj
59!!!fmjg!fyqs!%|j~!;!#guq+;00#!?!0efw0ovmm
5:!!!uifo
61!!!!!dbtf!%|dpnnboe~!jo
62!!!!!!!+xhfu+}+dvsm+!*
63!!!!!!!!!%|dpnnboe~!%|j~!}!dbu!%|pqu~
64!!!!!!!!!<<
65!!!!!!!+!*
66!!!!!!!!!fdip!#%|1$$+0~;!dboopu!hfu!sfnpuf!gjmf;!%|
j~#!2?'3
67!!!!!!!!!<<
68!!!!!ftbd
69!!!fmtf
6:!!!!!dbu!%|pqu~!%|j~
71!!!gj
72!epof
さてさて、これは一体何なのか?添えられていたコメン
トを読んでみると……「cat が concaticate の略なら、dog
はきっと pseudograph(=ウソ文書)の略なはずです。な
ので引数文字列を元にウソ文書を吐きます。笑ってください」
とのことです。
これは……、100% くだらない文章を吐くことで有名な̷̠
̭ιȜ΃Ȝ̲̞̥̈́͝Ȋアタクシもこのサイト好きだけどね。そ
れで、どのメーカーを使ってるのかと思ったら「週刊誌メー
カー」かい!東○ポもびっくりゴシップ記事というわけね。
֚౲਎ဓ。これで二段だ。
うそこメーカーさんにも感謝しつつ、
◇ ◇ ◇
というところで本日の大喜利はこれにてお開き!読者の
皆さん、投稿してくれた皆さん、ありがとうございました。
ൎࣂఱ༡ਬȊȊ
ষ͈̤ٝఴ
֚Ȃġ1 ∼ n(n は引数で指定)までに存在する「完全数」を列
挙するプログラムを書いてください。速さを追求した解
答、または Tukubai を使う等して ( 使わなくても可 ) コー
ドの美しさや面白さを追求した解答を待ってます。
ඵȂġURL エンコーダー(URL 化できるよう一部の文字を %xx
にするアレ)を作ってください。勿論 Perl とかそーいう
のはナシですよ。使っていいのは Bash,AWK,sed,tr 等、
Linux JM に載っているシェルとコマンドだけです。
२Ȃġ a という名のテキストファイルがあります。a の内容を
これ力作なのです!誌面が残り少なくて載せられないのが
表示するやり方 ( 一番簡単なのは cat a でしょう ) を沢山
残念ですが、man ドキュメントまで添えられていたのです。
列挙してください。列挙する数で勝負するのでも、珍し
それでどういうコマンドかというと、cat はファイルを表
示するのみだったところを、これは http/https/ftp にまで拡
張しているんですね。more を拡張して less が作られたよう
いやり方を列挙して勝負するのでも OK。
ൎࣂ͈̱̥̹
に、cat を拡張する方向で dog を作ったというわけですね。
お題への回答は、お名前(ペンネーム)
、回答したいお題
man まで作る芸の細かさに感服した!その man を紹介で
番号、回答スクリプト、簡単な補足の四点セットで下記の宛
きなくてすまない。でもその努力はちゃんと段位に反映させ
先へ!一人何問でも何個でも回答可です。尚、次回締め切り
てもらうよ。ということで、ඵ౲਎ဓ!これで四段だ!
は IJIJ ࠮ ijķ ඾ Ȫ࠮ȫ ࡿஜ ı শとします。しかもその間は
ɝ‫׺‬ඵ࣢̯͈ٜͭ൞
何度でも回答の修正を受け付けます。
2!$"!0cjo0ti
3!
4!vsm>#iuuq;00vtplpnblfs/dpn0xfflmz0@b>Nblfs'pp>%2#
5!dvsm!.t!#%vsm#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
6!olg!.x!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
7!tfe!.o!(0_=ejw!dmbtt>#nbhb`dpqz#?0-0_=]0ejw?0q(!}
8!tfe!(t0=\_?^]|2-]~?00h(
この解答、curl とか nkf とか使ってるんですけど࿂ฒ̞̥
ͣ‫̳̱͘ݺ‬ȃ curl、nkf コマンドが無い方は是非インストール
してお楽しみ下さい。あと、
端末表示は UTF-8 にして下さい。
̤ఴ̱̱̓̓͜௣̩̺̯̽̀Ȝ̞
それからお題も大募集。考えてくれた方にも段位を授与
します。自分で出題して回答するのも、今のところ可!
ൎࣂ୶
どちらも投稿先は、nbhAvtq.mbc/dpn です。面白
ければ(ワリと)何でもありなので、どしどし投稿待ってます !
49
4
9
USPMAG201209_yorinuki_cs55.indb 49
2012/10/12 17:33:27
2 1
8 7
9 2
TECH
TECH4
5
7 6 9
1
4 3
3
4
1
2
6
数独
数独(Number Place Puzzle:ナンプレ)は、クロスワード
パズルのように、行列の中にある空マスを、正しい数字で埋め
ていくクイズです。
数独クイズ作者:gori.sh
3 4 8 9 1
5 4 2 3 1 9 6
9
2
1
5 1 9 2 3
9
3
1
4 2 8 1 5 6 3
8 9 7 3 1
第3回
こんにちは、レイコです。
秋の夜長も Tech な数独よ!
遊び方
(1)使ってよい数字は、1 から始まる自然数。
自然数。
最も大きい数字は、一行(一列、一つのサブブロック)
に入れられる上限値です。
例えば、
「9 × 9」マスのパズルであれば、使ってよ
い数字は「1」から「9」までです。
(2)一つの行に、各数字は一度しか使えません。
(3)同じ列、同じサブブロックのマスを埋める際も、
各数字は一度しか使えません。
前回の解答
9
2
1
8
3
4
7
5
6
7
4
3
5
6
9
8
1
2
8
5
6
7
1
2
3
9
4
4
6
7
9
5
3
2
8
1
1
8
2
4
7
6
5
3
9
5
3
9
2
8
1
4
6
7
2
1
8
6
4
5
9
7
3
6
7
4
3
9
8
1
2
5
3
9
5
1
2
7
6
4
8
「数独 (SUDOKU)」はニコリの登録商標です。
ß᳏᳍᳊ȞǬǸȳƴ࠼ԓ᠍ƤLJƤǜƔᲹà
ǭȣȳȚȸȳᲛ ᅸ
CFXGTVKUGOGPVECORCKIP
è௒ƕ٥ǓЏǕƨǒƝNJǜƳƞƍᲛ
ᅸᓶҾƷ୿ඡȖȃǯǿȯȸƞǜƴ
᳏᳍᳊ȞǬǸȳ‫ݦ‬ဇȩȃǯƕЈஹƨƬƯ !
おいしいネタ満載の技術マガジンである本
誌は、各地で大人気です !!
今回、来月号のみの広告掲載特別価格をご
用意しました。これを機会に、本誌に広告
を載せてみませんか ?
USP
MAGAZINE
裏表紙 1頁
通常価格 20 万円
IJı ྔ‫׫‬Ȋ
ĩĶıɓ ŰŧŧĪ
B5 1/3頁
‫ܤ‬ƢƗƯƝNJǜƳƞƍŵ
通常価格 5 万円
B5 1頁
通常価格 10 万円
Ĺ ྔ‫׫‬Ȋ
Ĵ ྔ‫׫‬Ȋ
詳細はお問い合わせください。
⇒ [email protected]
50 USP MAGAZINE 2012 autumn
USPMAG201209_yorinuki_cs55.indb 50
2012/10/12 17:33:28
autumn
編集 鎌田広子
青井大地
制作協力 USP 友の会
ライター 柏崎吉一
表紙デザイン 石塚幸治
発行人 當仲寛哲
定価 400 円(本体価格 381 円)
ご意見・ご感想・投稿はこちら
[email protected]
(技術的なお問合せには対応しかねますので
ご了承ください)
ඵ₝₝֚ා߇࠮֚֚඾”ༀ࣭⅛೒ઠ‵↚
⅗⅖၌༒଻⅜ࠗⅴ౶ⅶⅫⅉⅼ„૽ₛ⅜⅁⅛↷↽⁋
༷֚⅔੝Ⅾ⅓࣐ℽાਫ਼ⅰℸഝ⅛အঊ℺໦ℹⅵ
ੀ⅜৘ष⅘⅜ྫၑ⅔ⅅ⅍„ⅅℹⅅ↣⁋↞⅜஼༷⅛
อ‫ܞ‬ⅅⅫⅇ„⅁ⅶⅫ⅔⅜ഌచⅇⅵ஼༷⅛൳শ߳
߳মႁ⅜஠ཞ℺๩ྟⅎℹⅳ⅁⅋௖ࡽဲগႁⅻ
ളⅅ⅓℻Ⅻⅅ⅍„⅋ⅶ⅜ࢃ⅘‵ↇ↼⇅↟↓⇀‶⅕
‵ଶℵⅎⅷ”⅁ℶℵℶ⅛ࡉⅶ⅍ⅳⅾⅾⅎⅷ‶⅕਀
۟ⅻ௯ ૺⅅⅫⅅ⅍„ ܑ ުⅯ⅁ⅶⅻ‫ ڰ‬ဥ” ࢵ
ⅻठ ٛ⅃ⅉ” ౶૽⅕⅛↽ⅽ↾↖ⅾ↶⅗߃ ‫࢐ ޙ‬
‫⅗⅕ޙ‬ⅴⅫⅅ⅍„૧ⅅℵ੄ٛℵⅻ୆Ⅼ”‫ݰ‬࿻
ⅈ”↽ⅽ↾↖ⅾ↶⅛‫ৢିמ‬૯ⅻࡉⅵ⅁⅕⅜๊֚
⅓℻Ⅻⅅ⅍„⅁ⅶ⅘ߎ࡞ⅻ೮ⅇ૽Ⅿఉℽ”๭‫ٺ‬
ఴⅻٜࠨ⅔℻ⅈ⅘⅋⅛‫ڰ‬ဥ⅛ાⅻบอഎ⅘ࢩ⅀
ↇ‡ↇ↾⅜ↇ‡ↇ↾ⅽ‡←
←↞↽‡↞↩⁍‡‪ⅻ
੭ₛ⅘ྟℹ⅘↣⁋↞⅔࢐ၠⅻࠗ⁁⅓ℵⅫⅇ„Ⅿⅅ
⅗ℵ࣭℺ఉℽంहⅅⅫⅇ„⅋ⅼ⅗࣭⅔Ⅿ૽ₛ⅜
༷֚”ྚⅎⅾ⇅↖‡↣⁋↞ⅻুဇ⅘၌ဥ⅔℻
ℴⅵ༷֚⅔”஠૽႒℺↜⇀⅛ུ‫ݶ‬౷ⅻౝⅅࡀ
ࡀႁ৪ⅰ↜⇀↽←↞℺‫ૂྟܥ‬༭⅘૘ⅶⅵ‫ࡏܓ‬Ⅿ
⅘४‫ح‬ⅇⅵ„
ैު֥⅕ⅅ⅓ⅈ⁁⅕࡛ા୽ႁ⅔ℴⅴ⅍ℵ„
‫ٸ‬໐࿨֥”
۬औ ”
ࡺ࿚⅕ⅅ⅓‫؍⅘ْࠗڎ‬౯എ
‹ಠ৪↭⇀↫⁇‡↾₊⅗ⅇℿℵⅆ›
ⅅ„ℴℴ”⅖ℶⅰⅳজ⅜‫૽ݰ‬႒⅗⅛ℹⅯ‧‧„
ૺⅫ⅗ℵⅎⅷℶ⅗‼„๩ྟ⅛‫ވ‬ခ⁁⅓ྛႁഎⅎ
๩‫ܐ‬བ⅗⅛ℹⅯⅅⅶⅫⅉⅼ„⅔Ⅿ৘ष⅜ಎₛ
৪ⅰ‫ݴ‬ఱ঩ུ‫ྫ⅜⅔ز‬ℽ”৘⅜๊֚૽⅛৿
ⅇⅵड‫ޑ‬डࢃ⅛೷ࢯସႁ⅜”ඊव৪ⅰࡀႁ
ಃ⅃ⅶⅵ⅛⅔ⅇ„ⅇⅵ⅕ଲ‫ٮ‬໹გ⅛৘࡛⅘చ
ٟℹⅳইⅫⅵૂ ༭ ‫ ވ‬ခ⅕௖ ࡽ ၑ ٜ⅘ⅲⅴࢹ
⅁⅛૧ⅅℵુ ে℺↭↼ⅾ↦↎‡⅕ℵℶ‫ ٽ‬ැ⅛෫
ℽ‵๩ྟ⅗⅖ྫℵℹⅳհ஠⅔հ૤‶⅗⅛⅔ⅇ„
⅑Ⅻⅴ‵৿๩݅ྩ⅘ⅲⅵհ஠⅔հ૤‶⅔⅜⅗
এ ே⅘ℴⅵ⅛⅔⅜⅗ℵℹ”⅕জ⅜ே ௨ⅅⅫⅇ„
చ ၛⅇⅵ⅛ⅎ⅕ℵℶ‫ ږ‬૞℺ၰ↌‡↩←⅛आ ུ
ૂ༭ⅻ࢖‫ٳ‬ⅇⅵ‶„౶ⅳ⅗ℵম℺‫ູޔ‬ⅻ୆Ⅼ
‵ ఈ ৪ⅻၑ ٜⅇⅵև⅘ૂ ༭ⅻං” ু ໦⅛
℺‫ܢ‬ఞ⅃ⅶⅫⅇ
৘࣐⅜Ⅻⅎྫၑℹ₍‪
„
๊֚‫ٳ‬༶⅜‫੅ܿ⅘ܡ‬എ⅘⅜‫خ‬ෝ⅘⅗ⅴ”‫ڰ‬ဥ
℺ඊ୸ⅇⅵܿ੅
※‫ିמ‬ℹⅳ⅛౷ષ۬ণ‪⅛
Ⅻⅇ„ℹ⅑⅓ୌঙ℺জ⅘࿚ℶ⅍”֚໐⅛ࡀႁ৪
߳ম‫ྟܥ‬ⅻཕℽ⅁⅕⅔ྫփྙ‫⅃ا‬ⅉⅵႁ℺ℴⅴ
↞⅕↝↷↽⁋↞⅛ಎ⅔↭↼ⅾ↦↎‡⅛૟‫ٺ‬൝”⅋⅛
℺‫ܡ‬ం⅛ඁྴ৽݅⅛ℒℍℒ⅘యⅸⅴଲ‫৽⅛ٮ‬
ࡤ⅝ⅶ⅍”
↖⇁‡⅛༲ٟ౷തⅻီℹષߗℹⅳज़⁁
⅘⅜ྫၑ⅔߳ম‫⅔ྟܥ‬ⅅ⅍„ⅅℹⅅজ⅜⅁⅛শ
৪ⅻఉତ୆ⅼ⅔ℵⅫⅇ„ⅅℹⅅজ⅛֣ય⅔⅜৘
⅁ⅶⅳ⅛↚‡↾⅜↭↼ⅾ↦↎‡⅛૟‫⅕ٺ‬ℵℶఱ࿚
⅘ଽহ⅛ા⅘Ⅿ‫ڐ‬ⅴⅻⅬⅉ⅓ℵⅫⅇ„
ৢ૯ⅻࡉⅉ⅍փ଎⅘஠ℽ↪⇅⅕ြⅈ”Ⅽⅅⅷ႖
ष⅘⅜ၰ২⅕Ⅿ⅁⅛࿚ఴⅻٜࠨⅇⅵ‫ྫ℺ܨ‬ℵⅲℶ
⅘ࡉℷⅫⅇ„Ⅽⅅⅷ↭↼ⅾ↦↎‡⅕ℵℶ‫ٽ‬ැ⅛෫ٟ
↽↽‡←„↽ⅽ↾↖ⅾ↶‫ד‬௨⅔⅁⅋ྫℵⅯ⅛⅛”‵ↇ
ↇ‡ↇ↾℺ज़ⅴಡⅮ⅍ৢ૯⅔⅜⅗ℽ”↽ⅽ↾↖ⅾ
⅁⅋℺ၰ৪⅛૯⅛࿒എℹ⅕⅃ℷএℷ⅓℻Ⅻⅇ„
ⅅↇ‡ↇ↾⅛‫ד‬௨೹‫↼↭⅜ރ‬ⅾ↦↎‡⅛࿚ఴ⅕၌
৘ष”ِ℺‫ື⅜ز‬౬℺ۙ⅃ⅶ⅍ઁₛↂ⁋↊՛ℵ
༒଻⅕ℹⅳॷ๛ၰაⅻ‫⅁ܳ℻ے‬ⅇম⅘⅗ⅴⅫⅇ„ ↶‫ד‬௨ⅻ೹‫ރ‬ⅅ⅍ⅳ⅖ℶ⅗ⅵ⅔ⅅ⁄ℶ„֚໐⅛
↼⇅↟↓⇀‶⅛⅋⅛ࢃⅻࡉⅵম℺⅔℻Ⅻⅅ⅍„ⅅℹ
⅋ⅶℹⅳତා”‫଼ݢ‬ಿⅅ⅍࠿॑↌‡↩←⅛
୶֚ఘ⅖ℶ⅗ⅵ₍‶⅕এℶⅎℿ⅔ⅅ⅍„
୽ࢃ௽ℽ↜⇀⅘‵
ଲ‫்ܮ‬ₛ⅘↊↿⅔⅜”⅁⅛
↣⁋↞⅔Ⅿ࣎ߗৢ૯೹‫⅜←↩‡↌ރ‬Ⅻⅎంहⅉ
⅍‫ৢିמ‬૯⅕এⅸⅶⅵⅯ⅛⅔ⅅ⅍„൚শⅾ⇅↖‡
ঙ
ⅽ←ↄ‡₊ŎŔࡓ໗২ಿ‪℺֚ཿ⅛ৢ૯ⅻ” ၠ⅕⅗ⅴ” ૽ ႒⅛߇ ૽⅘֚ ૽℺၌ ဥⅇⅵે
ⅶ⅓ℵ⅍ⅳ⅕↜⇀⅘‫ູޔ‬ⅅⅫⅅ⅍„ତ඾ࢃ”ୌ
ⅾ⇅↖⇁‡‶⅘”↥ⅾ↏⁌⁋ↆ⅃ⅶ⅍ඵ‫⅛ܥ‬ၫ‫ݖ‬
ႁ⅛ಎଥⅻ۬ণⅅ१ⅅ⅓ⅅⅫℶⅰⅯⅅⅶⅫⅉⅼ„
発行元 (有)USP 研究所
߃ා⅔⅜৘ྴ৽݅⅛ℒℍℒ”↫⁉ⅾ←↬⁋ↆ
(ジーズバンク)
↽←ↆ⅘ℴⅵਅ⅛‫ࢅژ‬ⅻ‫ޑ‬ℵⅳⅶⅵম⅘⅗ⅴⅫⅇ„
૯℺ਤ૽۬ণ⅛↣⁋↞ષ⅘ࠇश⅃ⅶ⅍⅛⅔ⅇ„
編集長 松浦智之
‫℺ܥ‬ఘ൚⅍ⅴⅅ༲ٟⅅⅫⅅ⅍„জ⅜ઁⅅஜ⅘
( vol.6 )
ŎŊŕ⅘ℴⅵဥ࠯⅔໇ℵ⅓ℸⅴ”Ⅿⅅ඾೾℺ⅈ
ഛ౷‫∺ޙٽ‬
₉
₉ •ජଌ᪟Ⴙ•
2012
ْ௨⅔ⅅ⅍„૽⅘ⅲ⁁⅓⅜౹ⅈℹⅅℵ⅕ۜⅆⅵৢ
・ ○○に訊く技術者哲学
・ 今私たちは何を学ぶべきか
・ USP 友の会 納涼船吉報
・ ほか 好評連載陣
内容は変更になる場合があります。
・同人作家からスタートし、私が最初に作ったのはオライリーのオマージュ本だった。でも内容は完全オリジナ
ル、表紙イラストも自分で描いた。そんなことしてきた私が活動 10 年目にしてそこの創業者に会うことにな
ろうとは!本を見せたら「ワーォ !」と嬉しい一言、Maker 魂が伝わったはずだ。でも側にいらした社長さん
から「弁護士に相談します」とコワいジョークが!(松浦)
・Turing さんのイラストを描こうと思って、写真から緻密に描写しようと思ったんですけど、描いてみると普通
に整った顔なので面白くない。
(禿おじさんなどは描いてて楽しい)なので髪型に特徴を持たせて愛嬌ある感
じにしてみました。モジリアーニみたいに、変顔でイラスト芸術を追及してみようかなぁ。
(鎌田)
・紙の上にペンとインクで描く、写真を撮る、コンピューター上で作図してレイアウトする、キーボードから文
章やプログラムコードを打つ……どの作業も、自分の魂を投影する作業。魂を成長させることと、それを思う
ように投影する能力を身につけること。「ものづくり」に必要なのは、終わりのない精進!(青井)
・盆休みに宮城県石巻市内の宿に一泊した。夜、近くの居酒屋に入ると多くの客で賑わっていた。市街は活気を
取り戻しつつあるようだった。波にさらわれた海辺や、学校の校庭には街から集められたガレキがいまも山積
みである。この一年半、立て直しに費やした労苦は想像もつかない。せめて体験を語り継ごう。そして地元で
獲れた旨い魚と酒をじっくり味わおう。(ライター 柏崎@エクリュ)
・ Tukubai on FreeBSD
・ TechLION 再録 村井純教授
編集後記
2012 年 12 月発行予定です。
USP マガジン FB
USPMagazine の細かい情報が定期的に
アップアップデートされています。
訂正のおわびもこちらから ----->>
2012/10/12 17:33:29
USPMAG201209_yorinuki_cs55.indb 51
ijIJ
次号予告
USP Magazine info
USP
MAGAZINE
51
ŕłōŌġōŊŗņ
USP MAGAZINE 2012 autumn (Vol.6) よりぬき版
ŇœŊŅłŚġIJķġŏŐŗņŎŃņœ
ŕŦŤũōŊŐŏġŷŰŭįIJı
͚̞̲ͣͭ͟
/% ඥ௎ීʂŴᬖ݈ʁų6CNM)WGUVDŽƔʩฏɶ
(TKFC[
2NCEGρஜங 5WRGT&GNWZG
5VCTV ᳸%NQUGᲢʖ‫ܭ‬Უ 6KEMGVЭ٥Ǔȷʖኖų όŴ࢘ଐ όᲢȉȪȳǯᡂᲣ
ɼ͵ᲴȦȋȐȸǵȫȷǷǧȫȷȗȭǰȩȟȳǰᄂᆮ৑ųңឃᲴ২ᘐᚸᛯᅈŴ.2+,CRCPŴȌȸȩȜŴ˂
ࢸੲᲴଐஜ 70+: ȦȸǶ˟Ŵ'/<'41ŴǭȣȪǢȇǶǤȳǻȳǿȸžǨȳǸȋǢ 6[RGſ
ૼज़ᙾƷ২ᘐȈȸǯȩǤȖž6GEJ.+10ᲢƯƬƘǒƍƓǜᲣ
ſųᛇኬƸ 9'$ ưᲛ
TechLION vol.10
TechLION サイトはこちら♪> http://techlion.jp
ŖŔő ࿻͈ٛȁ֥ٛ༡ਬಎ
シェルでつながる技術の輪!基礎から、プロのライブコーディング・ライブまで、
いろいろやっています。おもいっきり真面目に、時に面白く、心から楽しめます。
WEB 会費は無料です。勉強会や定例会の参加費は営利目的ではない為、良心的です。
ŖŏŊřİōŪůŶŹİ ΏͿσΑ·ςίΠ͈‫خ‬ෝ଻ͬ
ޭࡠ́͘೏‫̳̱͘ݥ‬Ȋ
મ̱̩͉
Facebook もやってるよ♪>
USP 友の会
ŖŔőġŎłňłśŊŏņġව਀༹༷͉ȉ
vol.0
2011 spring
vol.1 2011 summer
ごめん
なさい
在庫終了
です。
vol.2 2011 autumn
vol.3
2012 winter
vol.4
2012 spring
vol.5 2012 summer
ごめん
なさい
在庫終了
です。
自炊不要 定期購読又はバックナンバーをお申込みいただくと、PDF 版が無料で手に入ります。
本体は、定価 400 円(本体価格 381 円)
ũŵŵűĻİİŸŸŸįŶŴűŵŰŮŰůŰŬŢŪįūűġġͅͺ·ΓΑȊ
大手書店でも売ってるよ♪> http://www.usp-lab.com/pub.store.html
定期購読申込はこちら♪> http://www.usp-lab.com/pub.order.html
USPMAG201209_yorinuki_cs55.indb 38
2012/10/12 17:33:29