シェルスクリプトマガジン

test

プログラミング言語AWK

投稿日:2016.07.26 | カテゴリー: 推薦図書

1989年に初めての邦訳が刊行され、その後何回か絶版の憂き目にあいつつも、不死鳥のごとく蘇り、様々な出版社から復刊を果たしている「プログラミング言語AWK」。この度、awkファンの熱い声に支えられ、USP出版から3回目の復刊を果たします。
テキスト処理と演算に絶大な効果を発揮する「awk」は、開発当時の1970年代から、開発者たちによって「30年後に真価がわかるだろう」と予言されていたといいます。
本書は、テキスト処理スクリプト言語の原点「awk」開発者たちによる、多種多様な例題を収録した読み応えたっぷりの解説書です。この本でしか味わえない、原著の奥深さを味わってください。

目次

第1章 AWK入門

 1-1 手はじめに

  AWKプログラムの構造
  AWKプログラムの実行
  エラー

 1-2 単純な出力

  全部の行の印字
  特定の欄の印字
  欄の数のNF
  計算と印字
  行番号の印字
  文章の出力

 1-3 凝った出力

  欄の模様がえ
  出力の整列

 1-4 選択

  比較による選択
  計算による選択
  文の中身による選択
  パターンの組み合わせ
  データの検証
  BEGINとEND

 1-5 AWKによる計算

  数え上げ
  和と平均の計算
  文章の操作
  文字列の隣接
  最後の入力行の印字
  組み込み関数
  行数,単語数,文字数の数え上げ

 1-6 制御文

  If-Else文
  While文
  For文

 1-7 配列

 1-8 便利な「一行野郎」たち

 1-9 お次は何?

 

第2章 AWK言語

  入力ファイルcontries
  プログラムの書式

 2-1 パターン

  BEGINとEND
  パターンとしての式
  文字列照合パターン
  正規表現
  複合パターン
  範囲を示すパターン
  パターンのまとめ

 2-2 アクション

  式
  制御文
  空文
  配列

 2-3 ユーザ定義関数

 2-4 出力

  print文
  出力区切子
  printf文
  ファイルへの出力
  パイプへの出力
  ファイルとパイプの閉鎖

 2-5 入力

  入力区切子
  副行レコード
  getline関数
  コマンド行での変数への代入
  コマンド行引数

 2-6 他のプログラムとの組み合わせ

  system関数
  AWKプログラムをシェル・コマンドに

 2-7 まとめ

 

第3章 データ処理

 3-1 データ変換と導出

  コラムの和
  百分率と分位の計算
  コンマつきの数
  固定欄入力
  プログラムの相互参照検査
  書式付出力

 3-2 データの検証

  対応の取れた区切り子
  パスワード・ファイルの検査
  データ検証プログラムの生成
  どっち版のAWK?

 3-3 BUndleとunbndle

 3-4 複行レコード

  空行で区切られたレコード
  複行レコードの処理
  ヘッダとトレイラつきのレコード
  名前と値からなるデータ

 3-5 まとめ

 

第4章 レポートとデータベース

 4-1 レコードの生成

  単純なレポート
  もう少し複雑なレポート

 4-2 パッケージ化された質問とレポート

  定型書簡

 4-3 関係データベース・システム

  自然和
  relfile
  AWKもどきの問い合わせ言語q
  qからawkへの翻訳プログラムqawk

 4-4 まとめ

 

第5章 語句処理

 5-1 文章の無作為生成

  無作為選択
  決まり文句の生成
  乱れ文

 5-2 対話的文章操作

  能力テスト:算数
  能力テスト:クイズ

 5-3 文章処理

  単語の数え上げ
  文書整形
  相互参照の一貫性保持
  KWIC検索の生成
  索引の生成

 5-5 まとめ

 

第6章 小さな言語

 6-1 アセンブラとインタープリタ

 6-2 グラフ生成言語

 6-3 整列生成プログラム

 6-4 逆ポーランド電卓

 6-5 普通の電卓

 6-7 まとめ

 

第7章 アルゴリズムの実験

 7-1 整列

  挿入法
  分割法
  整列2分木法

 7-2 輪郭分析

 7-3 位相整列

  広さ優先の位相整列
  深さ優先の探索
  深さ優先の位相整列

 7-4 Make:ファイル更新プログラム

 7-5 まとめ

 

第8章 エピローグ

 8-1 言語としてのAWK

 8-2 効率

 8-3 結論

 

付録A AWKのまとめ

 

付録B 演習問題回答

伽藍とバザール

投稿日:2016.07.26 | カテゴリー: 推薦図書

Linux、オープンソース(OSS)関係者必読の書。OSSソフトウェア開発の実態と、そのコミュニティ、そしてハッカーたちの価値観を、オープンソースのエバンジェリスト、ESRことエリック・スティーブン・レイモンドが可視化する。
なぜハッカーたちは無償でソフトウェア開発に携わるのか? Linuxが成功した理由とは? OSSの所有権とは? OSSとコミュニティを理解するために避けて通ることができない一冊です。
※本書は1999年に出版されたものを、USP出版より再出版したものです。

目次

第1章 伽藍とバザール

 1 伽藍方式とバザール方式
 2 なにはともあれメールは通せ
 3 ユーザは大事な財産
 4 はやめのリリース、しょっちゅうリリース
 5 バラがバラでないのは?
 6 Popclient からFetchmail へ
 7 Fetchmail の成長
 8 続・Fetchmail の教訓
 9 バザール方式の前提条件とは
 10 フリーソフト/オープンソースの社会的な意義
 11 マネジメントとマジノ線について
 12 謝辞
 13 もっと考えたい人のための文献リスト
 14 エピローグ:Netscape もバザール方式を受け入れる
 15 原注
 

第2章 ノウアスフィアの開墾

 1 そもそもの矛盾
 2 ハッカーイデオロギーのさまざま
 3 放縦な理論と純潔な実践
 4 所有権とオープンソース
 5 ロックと土地所有権
 6 贈与経済としてのハッカー文化
 7 ハッキングのよろこび
 8 評判のさまざまな相貌
 9 所有権と評判によるインセンティブ
 10 エゴの問題
 11 謙虚さの美徳
 12 評判ゲームモデルが持つ分野全体としての意義
 13 どれほどすばらしい贈り物?
 14 ノウアスフィア的所有権となわばりの動物行動学
 15 紛争の原因
 16 プロジェクト構造と所有権
 17 紛争とその解決
 18 文化への順応過程とアカデミズムとの関連
 19 結論:慣習から慣習法へ
 20 これからの研究の課題
 21 原注、書誌
 22 謝辞
 

第3章 魔法のおなべ

 1 魔法と区別がつかない
 2 贈与するおたくたちを超えて
 3 製造業的な誤解
 4 「情報はフリーになりたがっている」というのはウソだ。
 5 逆転した共有地
 6 ソース非公開にする理由
 7 利用価値による開発費用手当
 8 販売価値の困るところ
 9 間接販売価値モデル
 10 オープンにするとき、クローズドにするとき
 11 オープンソースのビジネス生態学
 12 成功に対処する
 13 オープンR&D とパトロン制の再発明
 14 目標到達までの道のり
 15 結論:革命のあとの人生
 16 謝辞
 17 補遺:なぜドライバをクローズドにするとベンダーは損をするのか
 

第4章 エリック・S・レイモンド大いに語る

 

第5章 ノウアスフィアはぼくたちの開墾を待っている

 

第6章 訳者あとがき

覚えて便利 いますぐ使える! シェルスクリプトシンプルレシピ54

投稿日:2016.07.26 | カテゴリー: 推薦図書

シェルスクリプトを習得するにあたって、越えなければならないいくつかの壁があります。
本書は、変数、数値、文字列、ファイル操作…様々な局面において壁にぶつかったとき、それを乗り越えるための本質的な回答を54本収録したレシピ集です。
本書には、初心者を卒業し、シェルスクリプトの匠を目指す人であれば学んでおきたいノウハウが、薄い本の中にこれでもか!と詰まっています。
収録されている54のレシピを習得すれば、シェルスクリプトの世界がそれを足がかりに広がっていくことを感じられるはずです。
シェルの深みを知り、より高みを目指したいあなたにこそ、手にとっていただきたい一冊です。

目次

第1章 基本的な作業

レシピ1-1 C言語のようなforループ
レシピ1-2 C言語のようなforループ―その2―(ムダ知識編)
レシピ1-3 誤作動しない正しい文字列評価のしかた
レシピ1-4 対話的な入力受けつけ
レシピ1-5 標準エラー出力を使うプログラムの扱い
レシピ1-6 標準エラー出力を自ら使う

第2章 変数操作

レシピ2-1 変数名の記述ミスへの対策
レシピ2-2 変数を未定義化する
レシピ2-3 変数が未定義かどうか判別する
レシピ2-4 子プロセスへの変数渡し
レシピ2-5 親プロセスへの変数渡し
レシピ2-6 配列変数を使う
レシピ2-7 連想配列を使う

第3章 数値操作

レシピ3-1 Basic並の高度な計算をする
レシピ3-2 四捨五入する
レシピ3-3 乱数を得る
レシピ3-4 10進数⇔16進数および10進数⇔8進数変換
レシピ3-5 10進数⇔2進数変換
レシピ3-6 数字として扱える文字列かどうかの判定

第4章 文字列操作

レシピ4-1 文字列の長さを知る(len)
レシピ4-2 文字列の一部を抽出する(left$,mid$,right$)
レシピ4-3 大文字⇔小文字変換
レシピ4-4 ASCIIコード⇔キャラクタ変換(asc,chr$)
レシピ4-5 正規表現でマッチした文字列の取り出し
レシピ4-6 特定文字のトリミング
レシピ4-7 パス名中のファイル名・ディレクトリ名を抽出する
レシピ4-8 ランダムな文字列の作成

第5章 フィールド・ライン処理

レシピ5-1 コマンド引数を処理する
レシピ5-2 最後からn番目のフィールドを得る
レシピ5-3 特定の業を出力する
レシピ5-4 1行ごとに処理をする―その1―
レシピ5-5 1行ごとに処理をする―その2~4―
レシピ5-6 並べ替え(ソート)をする
レシピ5-7 CSV形式のデータの処理
レシピ5-8 1列ごとに処理をする

第6章 ファイル操作

レシピ6-1 詳細なファイル情報を知る
レシピ6-2 タイムスタンプを変更する
レシピ6-3 指定ディレクトリ以下のファイルの総サイズを知る
レシピ6-4 指定ディレクトリ以下の特定のファイルを操作する
レシピ6-5 安全にテンポラリファイルを作る
レシピ6-6 デッドリンク(無効なシンボリックリンク)を消す
レシピ6-7 外部ファイルのヒアドキュメント

第7章 システム情報収集

レシピ7-1 OSの種類を知る
レシピ7-2 自分のファイルパスを知る
レシピ7-3 自分のプロセスIDを知る
レシピ7-4 現在のプロセス数を知る
レシピ7-5 自ホストのIPアドレスを知る
レシピ7-6 絶対パスを知る
レシピ7-7 多重起動チェック

第8章 デバッグに役立つレシピ

レシピ8-1 実行の様子をトレースする
レシピ8-2 デバッグメッセージを分離する
レシピ8-3 パイプ(標準入出力)の中身を覗き見る
レシピ8-4 パイプ(標準入出力)をゆっくり流す

第9章 シェルスクリプトの応用例

実践ユニケージ開発手法02 シェルスクリプト学習編

投稿日:2016.07.26 | カテゴリー: 推薦図書

本書は、独特な方法でシステムを構築するユニケージ開発手法の基本を理解し、習得するための実践教材です。
対象となる読者は、基本的なUNIX/Linux の知識(端末、コマンド、ファイルの概念、パスなど)があること、 また、「ユニケージ開発手法01 コマンド学習編」の内容を理解している方です。
ここでは、「コマンド学習編」で学んだコマンドを組み合わせて、データ処理を行うシェルスクリプトの作成に必要なbashの文法や機能について学習し、ユニケージの作法にしたがってシェルスクリプトでプログラミングを行う練習も行います。

目次

第1章 はじめに

1.1 通常のプログラミングとの違い

第2章 シェルスクリプト

2.1 シェルスクリプトの書き方と役割
2.2 ちょっとしたルール

第3章 ファイル展開(ワイルドカード)

第4章 ブレース展開

第5章 リダイレクト

5.1 ファイル記述子
5.2 記号

第6章 追記・ヒアドキュメント

第7章 パイプ(パイプライン)の動作

第8章 シェル変数

8.1 定義と代入
8.2 変数の生存期間
8.3 予約シェル変数・特殊なシェル変数
8.4 配列
8.5 コマンド置換

第9章 クォートとエスケープ

第10章 終了ステータスとパイプステータス

第11章 AND演算子とOR演算子

第12章 テストコマンド(test, [)

12.1 テストコマンドの書式
12.2 テストコマンドの機能
12.3 PIPESTATUSとエラー処理

第13章 制御構文

13.1 if文
13.2 for文
13.3 while文
13.4 case文
13.5 パイプでつなげたwhile文、for文は要注意!

第14章 帳票出力(ITEMRANKING)

14.1 ディレクトリとデータ準備
14.2 データを見る
14.3 出力のイメージ
14.4 シェルスクリプトの記述
14.5 引数の受け入れ
14.6 項目間演算

第15章 POMPAの作成(POMPASAKUSEI)

15.1 想定するアプリケーション
15.2 データ
15.3 URIAGE_TENPO
15.4 URIAGE_HINBETU
15.5 【TRY】

第16章 時系列データの帳票(BUMONTREND)

16.1 記述
16.2 解答例

第17章 履歴マスタの扱い

17.1 販売履歴(HANBAI_RIREKI)
17.2 実装

Vol.40

投稿日:2016.07.22 | カテゴリー: バックナンバー

今月号の特集では、シェルスクリプトでログを高速処理します。ログというと、Webサーバーのアクセスログ、Syslog、イベントログなど多岐に渡りますが、データ量が膨大だと処理に時間がかかりすぎるという問題があります。それを解決したのが「Tukubai」を用いたユニケージ開発手法です。筆者の実体験をもとに、解析時間が千分の一になった全貌をご紹介します。
巻末資料(6ページ)には、「シェルスクリプトで高速処理! Personal Tukubaiでログを分析しよう! 」「漢のUNIX」「Personal Tukubaiを使ってみた」の3記事で登場した、Tukubaiコマンドの解説集を収録。
ぜひお見逃しなく。

Vol.39

投稿日:2016.06.16 | カテゴリー: バックナンバー

毎月25日発売『シェルスクリプトマガジン』は、日本で唯一のシェルスクリプト総合誌。
最新号 7月号(vol.39)の特集は、「コマンドを作りながら覚えるAWK入門」。日本GNU AWKユーザー会の斉藤氏から、AWKの練習方法を解説していただきます。UNIX系OSに搭載されているコマンド群を、AWKの「一行野郎」で実装していくことで、その習得を目指します。
新連載「Personal Tukubaiを使ってみた 前編」では、USP研究所の独自コマンド「mojihamaコマンド」を使ってお手軽メタプログラミングに挑戦。シェルスクリプトで高速処理が可能になる実例を紹介します。
また、5周年を迎えたエンジニアたちのトークライブ「TechLION vol.25」再録版を収録! IT/Web業界が幸せになるには何が必要なのか、コミュニティ運営・若手育成・キャリア・電子書籍について4人の猛者が登壇しました。残念ながら当日足を運べなかった方は、ぜひお見逃しなく!

Vol.38

投稿日:2016.06.16 | カテゴリー: バックナンバー

今月の特集は、新連載「機械学習で石川啄木を蘇らせる」。
『一握の砂』で有名な石川啄木。彼の作品には「未完の短歌」があるのをご存知でしょうか?たった31音を読み切らずに途中で筆を擱いてしまった末句の生成 に、機械学習で挑戦します。著者は東京大学の学生さんです。機械学習の手法だけでなく、本文の端々に現れる石川啄木を愛する言葉にも注目です!
他、新連載「ConoHaでIP電話を使ってみよう!」がスタート!御影けい氏が、IP電話の交換器(IP-PBX)をConoHa上の仮想サーバ (VPS)に構築し、簡単な自動応答システム(IVR)を作れるように解説。また、香川大学の学生さんが執筆する「SLPからお届け!」では、Swift でiOSゲームアプリ開発に挑戦します!

Vol.37

投稿日:2016.05.23 | カテゴリー: バックナンバー

巻頭は、「Angular2でHello world !」。
JavaScript フレームワークAngular2 を利用してモダンウェブアプリケーションを作成します。前半では開発環境を設定し、後半では「Hello World」的なとても簡単なアプリケーションを作っていきます。「シェルスクリプトマガジン」の読者にはあまり馴染みのないテーマかもしれません。
しかし、アプリケーション開発はシェルスクリプトのみで行うにはどうしても限界があります。むしろ、
違う言語とシェルスクリプトが共存する新たな事例が出るヒントになれば幸いです。
また、特集はUSP研究所より Personal Tukubai について取り上げています。弊所がシステム開発で使っている独自コマンド usp Tukubai と、同等の機能を持つ Personal Tukubai はどんなことができるのか、インターン生が企画部長にインタビュー。また、「ユニケージ開発手法コードレビュー」では、プロトタイプや POC を行う際に本番データを用意できないとき、本番と同等量のダミーデータを作成する方法について解説します。
他、人気連載「漢のUNIX」では、後藤氏がfishのプロンプトをカスタマイズする方法を紹介。

シェルプログラミング実用テクニック

投稿日:2016.04.19 | カテゴリー: 推薦図書

Linux/UNIXのコマンドは単独で使うよりも、複数のコマンドを組み合わせてこそ真価を発揮します。テキストデータの検索/置換/並べ替え、ファイルのバックアップや削除、数値や日付の計算など活用範囲は無限大。端末にコマンドを入力してすぐに実行できるのも良いところ。その場かぎりの作業にこそ、シェルプログラミングが使えると便利です。
本書のいくつもの実例を順に見ていけば、コマンドを自在に組み合わせるために必要なシェルの機能と考え方が身につきます。
※本書はSoftwareDesign誌(技術評論社刊)の連載記事「開眼シェルスクリプト」を大幅に加筆修正し、同社から発行されたものです。

目次

第1章 準備運動

1.1 UNIXとは何者なのか?

1.1.1 McIlroyによるパイプの提案
1.1.2 grep,sedの誕生
1.1.3 「ソフトウェアツール」という言葉の誕生
1.1.4 考えられた「もう1つの選択肢」
1.1.5 GancarzのUNIX哲学

1.2 OSや環境について

1.2.1 想定する利用シーン
1.2.2 Ubuntu 14.04 LTS

1.3 基本操作

1.3.1 端末とシェルを開く
1.3.2 シェルにコマンドを入力する
1.3.3 manを使う
1.3.4 ファイルやコマンドの出力を眺める
1.3.5 ディレクトリを理解する
1.3.6 ディレクトリを移動する
1.3.7 ワイルドカードで一度に複数ファイルを指定する
1.3.8 パイプでコマンドをつなぐ
1.3.9 シェルスクリプトを書いて実行する
1.3.10 ファイルを読み書きする
1.3.11 出力を捨てる
1.3.12 日本語と英語を切り替える(ロケール)
1.3.13 パーミッションを理解する
1.3.14 制御構文を使う
1.3.15 その他の文法

1.4 AWKとsed

1.4.1 AWKを使う
1.4.2 sedを使う

1.5 使用するコマンドのインストール

1.5.1 GNU Awkの確認/インストール
1.5.2 Open usp Tukubaiのインストール

1.6 本書におけるPOSIXに対する立場

第2章 不定型な文章や設定ファイルの検索と加工

2.1 テキストの検索

2.1.1 文字列を検索する
2.1.2 複数のファイルから検索する
2.1.3 調査したいファイル一覧を作ってから検索する
2.1.4 ファイル名を検索する
2.1.5 検索対象の前後の行を抽出する
2.1.6 検索語句を含むファイルのリストを作る

2.2 単語や文字の数え上げ

2.2.1 文字数を数える
2.2.2 単語や語句を数える
2.2.3 文字の出現頻度を数える
2.2.4 斉藤さんの数を数える

2.3 テキストの比較

2.3.1 2つのテキストファイルを比較する
2.3.2 ディレクトリのファイルを比較する
2.3.3 ファイルが同じだったら/違ったら××する

2.4 文章の校正

2.4.1 特定の語句を置き換える
2.4.2 複数のファイルで特定の語句を置き換える
2.4.3 表記揺れや記号の不統一をチェックする
2.4.4 スペルチェックを行う
2.4.5 変なバイナリが混入していないか調査する
2.4.6 長い行を折り返す
2.4.7 不必要なマークアップ/コメント/スペースを消す
2.4.8 マークアップ/スペースをあとから差し込む
2.4.9 特定のフォーマットにデータを流し込む

2.5 その他テキストを扱うときの小技

2.5.1 Vimでコマンドを使う
2.5.2 カタカナや数字の全角/半角を相互変換する

第3章 ファイルの取り扱いとシステムの操作

3.1 バックアップ/同期

3.1.1 ディレクトリをバックアップする
3.1.2 2つのディレクトリを同期する
3.1.3 最新ファイルを古いファイルで上書きしないように同期を行う

3.2 圧縮されたファイルの操作

3.2.1 gzip圧縮されたファイルを圧縮されたまま使う
3.2.2 アーカイブの中から特定のファイルだけを抜き出す

3.3 ファイルの整理

3.3.1 重複したファイルを消す
3.3.2 ディレクトリの古いファイルを整理する
3.3.3 複数のテキストファイルを圧縮しないで1つにまとめる

3.4 ファイルの暗号化

3.4.1 ファイルを公開鍵暗号方式で暗号化する
3.4.2 パスワード方式の暗号化を行う/破る

3.5 自動化

3.5.1 プログラムを定期的に自動実行する
3.5.2 ファイルが変更されたらアクションを起こす
3.5.3 service(1)で自作のプログラムを起動/停止する
3.5.4 OS起動時に自作のプログラムを走らせる

3.6 ログからの情報抽出と活用

3.6.1 検索する
3.6.2 日付を正規化する
3.6.3 Apacheのログ(不定長データ)をスペース区切りに整形する
3.6.4 データをキーバリュー形式に整形する

3.7 プロセスに関する注意点

3.7.1 多数のプロセスから1つのファイルにレコードを書き込む
3.7.2 制御構文が動作するプロセスについて

第4章 ファイルシステムをデータベースにする

4.1 データの置き方

4.1.1 RDBで言うところのテーブルを作る
4.1.2 テキスト以外のデータの置き方を決める
4.1.3 データに対するテストを書く

4.2 データの連結や集計

4.2.1 マスタとトランザクションを結合する
4.2.2 集計する

4.3 データの更新

4.3.1 レコードを手動/半自動で追加する
4.3.2 レコードを自動で追加する(排他処理を行う)
4.3.3 レコードを変更する

4.4 データの印刷/アウトプット

4.4.1 住所録を印刷用にフォーマットする
4.4.2 バーコード/QRコードを印刷する

4.5 補足

4.5.1 ダミーデータを作る
4.5.2 別のデータの持ち方を検討する

第5章 大きなデータを処理する

5.1 マシンスペックの調査

5.1.1 CPUの周波数や個数などを調査する
5.1.2 DRAMの量と読み書きの速度を調査する
5.1.3 HDDの容量と読み込み速度,その他の情報を調査する

5.2 マルチスレッド/マルチプロセス

5.2.1 sortを使いこなす
5.2.2 パイプで並列計算する
5.2.3 バックグラウンド処理で並列化する
5.2.4 xargsで並列化する

5.3 計算の効率化

5.3.1 GNU grepに仕事をさせる
5.3.2 ページキャッシュを有効利用する
5.3.3 並列処理時のページキャッシュの効果
5.3.4 圧縮してキャッシュにのせて処理する(場合によっては有効)
5.3.5 ファイルを分割しておく

第6章 画像,表計算ソフト,その他特殊なデータを扱う

6.1 バイナリの読み書き

6.1.1 バイナリを閲覧する
6.1.2 バイナリを編集する

6.2 画像処理

6.2.1 画像のデータ形式/サイズ/向きを変える
6.2.2 アニメーションGIFを作る
6.2.3 画像をテキストにして正規化する
6.2.4 画像の一部分を切り出す
6.2.5 ネガを作る
6.2.6 画像を合成する
6.2.7 画像の情報を調査する
6.2.8 SVG画像を作る

6.3 フォーマットの変換

6.3.1 CSVをパースして読み込む
6.3.2 CSVをパースしないで読み込む
6.3.3 固定長のデータをスペース区切り(SSV)にする
6.3.4 PDFファイルを端末で読む

6.4 オフィススイートとの連携

6.4.1 Excelファイルからデータを抽出する
6.4.2 Word,PowerPointのデータを抽出する
6.4.3 Excel,Word,PowerPointファイルの中を検索する
6.4.4 少しずつ違うWordファイルを大量生成する

第7章 CLI的インターネットとの付き合い方

7.1 Webサイトの活用

7.1.1 Web APIを使う
7.1.2 Webサイトを丸ごとダウンロードする

7.2 HTML文書の加工に特定の要素を抜き出す

7.2.2 マークアップの重複がないかを確認する
7.2.3 リンク切れを見つける

7.3 サーバをまたいだ処理

7.3.1 ポートを操作する
7.3.2 鍵認証でsshを使う
7.3.3 ログインせずにリモートのコンピュータを操作する
7.3.4 リモートの計算リソースを利用する
7.3.5 sshを使わないでデータをやりとりする

7.4 電子メールの活用

7.4.1 電子メールの原本を読む
7.4.2 ファイル名から受信処理時間を抽出する
7.4.3 添付ファイルを抽出する

7.5 IPアドレスの取り扱い

7.5.1 IPv6のIPアドレスを処理する
7.5.2 IPv4のIPアドレスをソートする

第8章 計算

8.1 基本的な計算

8.1.1 端末を電卓代わりにする
8.1.2 文章の中から数字を抽出して計算する
8.1.3 「桁落ち」「丸め誤差」を気にしながら計算する
8.1.4 n進数とm進数を変換する

8.2 日付の計算

8.2.1 各月の最終日を求める
8.2.2 2つの日付の差を計算する
8.2.3 その年の第何週かを求める
8.2.4 n営業日後の日付を求める
8.2.5 西暦/和暦を変換する

8.3 科学計算

8.3.1 一様乱数を作る
8.3.2 ガウス分布に従う乱数を作る
8.3.3 数値積分を行う
8.3.4 数列を作る

8.4 実験データの処理

8.4.1 データのばらつきを評価する
8.4.2 最小二乗法でデータに直線を当てはめる
8.4.3 相関係数を求める
8.4.4 グラフを描く

付録

A.1 Upstart
A.2 Ubuntuの設定メモ
A.2.1 日本語パッケージをインストールする
A.2.2 wkhtmltopdfをインストールする
A.3 cgroupsの設定
A.4 いたずら
A.4.1 見かけよりも大きなファイルを作る(疑似デバイスを使う)
A.4.2 他人の端末に字を送り込む(デバイスファイルを使う)
A.4.3 どうでもよいファイルをダウンロードさせる(拡張子について)
A.4.4 きわどい名前のファイルやディレクトリを作る(ミスでできたファイルの二次被害防止)
A.4.5 ハト語に変換する(シグナル処理)

すべてのUNIXで20年動くプログラムはどう書くべきか

投稿日:2016.04.19 | カテゴリー: 推薦図書

プログラミング上よくある課題を、極力POSIXの範囲で、かつUNIX哲学的アプローチで解決したシェルスクリプトを多数例示し、高い可搬性・可用性を実現しつつ実用的なプログラムを書く方法を紹介しています。

下記のような内容を満載しています。

環境に依存せず、長持ちするプログラムの書き方(環境依存を引き起こす落とし穴)
環境に依存しない正規表現の書き方
シェルスクリプトで処理を行うための、たくさんの小技(レシピ)
シェルスクリプトは意外に速くて機能も豊富という事実
プログラム制作で参考になるUNIX哲学

※本書は同人誌として発行されたものを、再編集してC&R研究所より出版されたものです。

目次

序章 POSIX原理主義:その本質と可能性、実践方法を理解する

第1章 どの環境でも使えるシェルスクリプトを書く …… 文法・変数編

1-1 環境変数などの初期化
1-2 シェル変数
1-3 スコープ
1-4 正規表現
1-5 文字クラス
1-6 乱数
1-7 ロケール
1-8 $(( 式 ))
1-9 case文/if 文
1-10 local修飾子
1-11 PIPESTATUS変数

第2章 どの環境でも使えるシェルスクリプトを書く …… 正規表現編

2-1 知っておくべきメタ文字セットは3つ
2-2 BRE(基本正規表現)メタ文字セット
2-3 ERE(拡張正規表現)メタ文字セット
2-4 AWKで使えるメタ文字セット

第3章 どの環境でも使えるシェルスクリプトを書く …… コマンド編

3-1 「[」コマンド
3-2 AWKコマンド
3-3 dateコマンド
3-4 duコマンド
3-5 echoコマンド
3-6 execコマンド
3-7 foldコマンド
3-8 grepコマンド
3-9 headコマンド
3-10 ifconfigコマンド
3-11 killコマンド
3-12 mktempコマンド
3-13 nlコマンド
3-14 printfコマンド
3-15 psコマンド
3-16 readlinkコマンド
3-17 sedコマンド
3-18 sortコマンド
3-19 tacコマンド/tailコマンド+ -rオプションによる逆順出力
3-20 test([)コマンド
3-21 trコマンド
3-22 trapコマンド
3-23 whichコマンド
3-24 xargsコマンド
3-25 zcatコマンド

第4章 Hors d’oeuvre:ちょっとうれしいレシピ

4-1 sedによる改行文字への置換を、キレイに書く
4-2 grepに対するfgrepのような素直なsed
4-3 mkfifoコマンドの活用
4-4 一時ファイルを作らずファイルを更新する
4-5 テキストデータの最後の行を消す
4-6 改行なしの終端テキストを扱う
4-7 IPアドレスを調べる(IPv6も)
4-8 YYYYMMDDhhmmssを年月日時分秒に簡単分離する
4-9 祝日を取得する
4-10 ブラックリスト入りした100件を1万件の名簿から除去する

第5章 POSIX原理主義テクニック

5-1 PIPESTATUSさようなら
5-2 Apacheのcombined形式ログを扱いやすくする
5-3 シェルスクリプトで時間計算を一人前にこなす
5-4 findコマンドで秒単位にタイムスタンプ比較する
5-5 CSVファイルを読み込む
5-6 JSONファイルを読み込む
5-7 XML、HTMLファイルを読み込む
5-8 全角・半角文字の相互変換
5-9 ひらがな・カタカナの相互変換
5-10 バイナリデータを扱う
5-11 ロック(排他・共有)とセマフォ
5-12 デバッグってどうやってるの?

第6章 POSIX原理主義テクニック …… Web編

6-1 URLデコードする
6-2 URLエンコードする
6-3 Base64エンコード・デコードする
6-4 CGI変数の取得(GETメソッド編)
6-5 CGI変数の取得(POSTメソッド編)
6-6 Webブラウザーからのファイルアップロード
6-7 Ajaxで画面更新したい
6-8 シェルスクリプトでメール送信
6-9 メールマガジンを送る
6-10 HTMLテーブルを簡単キレイに生成する
6-11 シェルスクリプトおばさんの手づくりCookie(読み取り編)
6-12 シェルスクリプトおばさんの手づくりCookie(書き込み編)
6-13 シェルスクリプトによるHTTPセッション管理

第7章 知らないとハマるさまざまな落とし穴

7-1 名前付きパイプからリダイレクトするときの落とし穴
7-2 全角文字に対する正規表現の扱い
7-3 sortコマンドの基本と応用と落とし穴
7-4 sedのNコマンドの動きが何かおかしい
7-5 標準入力以外からAWKに正しく文字列を渡す
7-6 AWKの連想配列が読み込むだけで変わる落とし穴
7-7 whlie readで文字列が正しく渡せない
7-8 あなたはいくつ問題点を見つけられるか?

付録 レシピを駆使した調理例

郵便番号から住所欄を満たすアレをシェルスクリプトで

実践ユニケージ開発手法01 コマンド学習編

投稿日:2016.04.19 | カテゴリー: 推薦図書

本書は、独特な方法でシステムを構築するユニケージ開発手法の基本を理解し、習得するための実践教材です。

対象となる読者は、基本的なUNIX/Linux の知識(端末、コマンド、ファイルの概念、パス、標準入出力、リダイレクションなど)がある方です。

ここでは、ユニケージ開発手法において使用頻度の高いコマンドの使い方、とくに、高速なテキスト検索ができるgrep コマンド、テキスト置換ができるsed コマンド、高度なテキスト処理ができるawk コマンドをはじめとした基本的なUNIX コマンド、usp Tukubai コマンド(ユニケージコマンド)について詳しく解説します。豊富な練習問題で効果的にコマンド操作を体得できます。

目次

第1章 はじめに

1.1 コマンドの機能と役割
1.2 凡例

第2章 AWK

2.1 AWKとは何か
2.2 手を動かす
2.3 フィールド・レコード/パターン・アクション
2.4 レコードの選択
2.5 文字列の出力
2.6 演算
2.7 三項演算子
2.8 変数
2.9 BEGINパターン、ENDパターン
2.10 便利な関数
2.11 AWKの制御文

第3章 sort, msort*, uniq

3.1 sort
3.2 msort
3.3 uniq

第4章 head, tail, ctail*, gyo, retu*

4.1 head・tail
4.2 ctail
4.3 gyo
4.4 retu

第5章 self*, delf*

5.1 フィールド形式とキー
5.2 selfによるフィールドの並び替え
5.3 delfによる

第6章 sm2*, sm4*, sm5*

6.1 sm2
6.2 sm4
6.3 sm5

第7章 ysum*, kasan*, ratio*

7.1 ysum
7.2 kasan
7.3 ratio

第8章 join0*, join1*, join2*, loopj*

8.1 マスタとトランザクション
8.2 join0
8.3 join1
8.4 join2
8.5 loopj

第9章 getfirst*, getlast*, up3*

9.1 getfirst, getlast
9.2 up3

第10章 tarr*, yarr*

10.1 基本的な使い方
10.2 応用

第11章 count*, juni*

11.1 count
11.2 juni

第12章 map*, tateyoko*

12.1 フィールド形式ファイルのxy展開
12.2 より複雑な展開

第13章 marume*, divsen*, comma*, keta*

13.1 marume
13.2 divsen
13.3 comma
13.4 keta

第14章 grepと正規表現

14.1 grep
14.2 正規表現

第15章 tr, sed, calsed*, fsed*

15.1 tr
15.2 sed
15.3 calsed
15.4 fsed

第16章 han*, zen*

第17章 mojihame*

第18章 keycut*

第19章 その他コマンド

19.1 mdate
19.2 dayslash
19.3 lcalc
19.4 nkf, iconv
19.5 tagシリーズ

Vol.36

投稿日:2016.04.11 | カテゴリー: バックナンバー

毎月25日発売『シェルスクリプトマガジン』は、日本で唯一のシェルスクリプト総合誌。
最新号 2016 年4月号(vol.36)の特集は、「Mac OS XでUNIXを使い倒す!」。
Mac OS はバージョン10になってDarwinというUNIXがベースになったのをご存知ですか?
Mac OS Xを使っているけど、UNIXの部分をあまり使いこなせていない、UNIX自体よく知らないでMac OS Xを使っている。そんなMacユーザーの方へ、新しい発見がありますように!
その他、熊野氏の「未来に活きる!現場で使える!データモデリング」ではイベントの流れから業務を読み解くポイントを解説!すずきひろのぶ氏の「スズラボ通信」では、クラウド体温計を使ってIoT的なものづくりをします!
どうぞ、お見逃しなく!

Vol.35

投稿日:2016.04.11 | カテゴリー: バックナンバー

毎月25日発売『シェルスクリプトマガジン』は、日本で唯一のシェルスクリプト総合誌。
最新号 2016 March(vol.35)の特集は、「シェルスクリプトでTwitterを制す!」。 Twitter上のつぶやきや位置情報などのビックデータから、情報を整理・分析して、ドラマを掘り出してみます!つぶやきからどのような人間の行動予測が読み取れるのでしょうか?昨年12月のコミケツイートから、ジブリ作品「天空の城ラピュタ」のアノつぶやきまで、シェルスクリプトで収集します!
その他、「香川大学 SLPからお届け!」ではReactを使ってネイティブアプリ開発に挑戦!しょっさんの「40歳から始める、オレとRubyプログラミング」では、開発には欠かせないオブジェクト指向をわかりやすく解説!
今月号も、お見逃しなく!

Vol.34

投稿日:2016.04.11 | カテゴリー: バックナンバー

毎月25日発売『シェルスクリプトマガジン』は、日本で唯一のシェルスクリプト総合誌。

最新号 2016 February(vol.34)の巻頭は「技術者哲学」です。はやぶさプロジェクトに携わった、UNIX大好き人間の 寺薗淳也 先生をクローズアップ!ばりばり の技術者が広報として、はやぶさプロジェクトに関わり、先進的なコンピュータ教育で有名な会津大学で、どのようなことを教えているのか。UNIXの出会いから、読者へのメッセージまで、8ページにわたって詳しくお話していただきます。

その他、人気連載、波田野さんの「IPv6新時代を体感しよう!」が最終回!共感覚ってなんだろう?いつも奥の深い「人間とコンピュータの可能性」、現場目線のアツい連載「中小企業手作りIT化奮戦記」も収録!お見逃しなく!

Vol.33

投稿日:2016.04.11 | カテゴリー: バックナンバー

『シェルスクリプトマガジン』(毎月25日発売)は日本で唯一のシェルスクリプト総合誌。
最新号 2015 January(vol.33)の巻頭特集は、「10年後の生活を支える最新IT動向」。エンジニアのトークイベントTechLIONの再録拡大版をお届けしています!IT業界の中でも、IoTのエッジに携わっている猛者4名をゲストに、「10年後実現してほしいことは?」「機械学習・AIはどこまで進むのか?」等について白熱したトークが繰り広げられました!
その他、人気連載「めざせシェル女子!」「漢のUNIX」「ユニケージ開発コードレビュー」も収録!お見逃しなく!

Vol.32

投稿日:2016.04.11 | カテゴリー: バックナンバー

『シェルスクリプトマガジン』(毎月25日発売)は日本で唯一のシェルスクリプト総合誌。
最新号 2015 December(vol.32)の巻頭特集は、「慶応義塾大学名誉教授 小檜山賢二先生に訊く、技術者哲学」。60年続けてきたのは虫を撮影すること。全てコンピュータ任せでなく、必ず人間を介在させると語る小檜山先生。その理由とは?

そして新連載は、「香川大学SLPからお届け!」と題して、香川大学SLPの学生さんたちが毎号技術的な取り組みについて紹介してくれます。今月号は「イマドキ☆サーバ監視のゆくえ」です!

その他、人気連載「スズラボ通信」「40歳から始める、オレとRubyプログラミング」「ユニケージエンジニアの作法(最終回!)」なども収録!

Vol.31

投稿日:2016.04.11 | カテゴリー: バックナンバー

最新号 2015 November(vol.31)の巻頭特集は、とがったエンジニアのイベント「TechLION再録拡大版」をお届け!
今回は、関西を舞台に活躍する4名の猛者たちが登壇。優秀なエンジニアを輩出する京大マイコンクラブの逸話から、噂の社員総出ガチインターン裏話、『まに フェス』発起人からイベント開催のコツまでお聞きします!そして、ついに始まったマイナンバー、本当に怖いのは何なのか、個人情報と絡めて伝授!エンジニ アに必要なこととは……!?ぜひお見逃しなく!!

人気連載「漢のUNIX」では、ハイスピードなls(1)コマンドをつくっちゃいます!
さあ、コマンドを極めるその先へ……

Vol.30

投稿日:2016.04.11 | カテゴリー: バックナンバー

最新号 2015 October(vol.30)の巻頭新連載は「POSIX原理主義の逆襲」!!
連載一回目は、「東京五輪まで動くプログラム、書けますか?」バージョンアップやサポート打ち切りのたびに涙をのんでいた私たち…10年、20年もの間、動き続けると期待が持てるものとは?実は書き捨てられてきたあの言語の中にあった!
他にも30回目の大台に突入した大人気連載「人間とコンピュータの可能性」。「ITエンジニアのためのマーケティング入門」、漫画「めざせシェル女子!」なども収録!

Vol.29

投稿日:2016.04.11 | カテゴリー: バックナンバー

最新号 2015 September(vol.29)の巻頭新連載は「40歳から始める、オレとRubyプログラミング」!!
連載一回目は「Infrastructure as Code」という文化の紹介、インフラ管理のコード化の利点や、今回どうしてRubyを採用したのかについての説明から、実際にRubyを使うための環境の準備までを丁寧に解説。
“時代の流れにしたがって生きるのは、将来を担うエンジニアには必要不可欠です。”
他にも大人気連載「スズラボ通信」や「ユニケージ開発手法コードレビュー」「めざせシェル女子!」なども収録!

Vol.28

投稿日:2016.04.11 | カテゴリー: バックナンバー

最新号 2015 August(vol.28)はTechLION vol.21の再録記事を拡大版で収録。テコラス株式会社の伊勢幸一さんの語る、次世代データセンターのあり方とは?そして運用エンジニアをなくしていくために設立された日本MSP協会とは?第二部、第三部ではゲームをとりまくインフラ技術について、熱いトークが繰り広げられました!
白羽さんの「縁の木、育てよう」では前回に引き続きCMSコミュニケーションズの寺田さんのお話。コミュニティ活動を中心にお話を伺いました。そんな寺田さんがPlone Anbassadorとして携わっているCMS「Plone」について、アジア初開催のイベント「Plone Symposium Tokyo 2015」で聞いてきたお話も同時掲載しています。
他にも大人気連載「めざせシェル女子!」や「人間とコンピュータの可能性」「IPv6新時代を体感しよう!」なども収録!

Vol.27

投稿日:2016.04.11 | カテゴリー: バックナンバー

最新号 2015 July(vol.27)は「セキュリティ」に注目。話題のセキュコミュ勉強会CTF for GIRLSに編集部が潜入してきました!そしてShellShockとVENOMについて、スズラボ通信好評連載中のすずきひろのぶさんが解説!大事なのは脆弱性の「名前」ではなくて「評価値」。
よしおかさんのIT散歩日記は今回海を越えてアメリカへ!サンフランシスコで行われたMicrosoft社のカンファレンス「Build 2015」のお話です。
ITエンジニアのためのマーケティング入門、今回は「マーケティングって、どうやって始めるの?」というテーマ。確かにわからないかも・・・おか爺がたのしく解説してくれます。
他にも好評連載「漢のUNIX」や「縁の木、育てよう」「姐のBENTO」「Tech数独」など見所満載です!

Vol.26

投稿日:2016.04.11 | カテゴリー: バックナンバー

最新号 2015 June(vol.26)特集は「中小企業手作りIT化奮戦記 C言語のススメ」
好評連載中の菅さんの連載、「中小企業手作りIT化奮戦記」が巻頭に登場!C言語を触ったことが無い人向けに、システム管理をする上で持っておいた方がよい知識として、C言語の概略を解説していただきます。
3月24日に開催されたTechLION vol.20 の再録記事も掲載!櫻庭祐一さん、堂前清隆さん、松本直人さんの3名をお招きして、20年のITの歴史を熱く語り合っていただきました。
友の会会長 上田さんの「Haskellでやってはいかんのか?」では前回から作成しているHaskell版mojihameコマンドを完成させます。
他にも好評連載「IPv6新時代を体感しよう!」や「ユニケージ開発手法コードレビュー」「円滑コミュニケーションが世界を救う!」など見所満載です!

Vol.25

投稿日:2016.04.11 | カテゴリー: バックナンバー

最新号 2015 May(vol.25)特集は「シェルのプロが語る、make ~電車で剛!makefileを実行してみよう!~」
2月末に行われたOSCでのセミナーの再録です!二人のシェルのプロがmakeで成せる技の魅力を語ります。
そしてEjectコマンドユーザー会のあっきぃさんの「電子工作ができなくても大丈夫!CD-ROMドライブではじめるかんたんIoT」も掲載。レッツEjectコマンド工作!カーテン開けるよ!ウィーン!
5月号には詩も掲載。谷川俊太郎さんとも競演されている、現代をロックに生きる詩人、桑原滝弥さんのご寄稿。背景の絵がステキだにゃ~。
他にも好評連載!Twitterで話題沸騰中!「めざせシェル女子!~貝殻高校、パソコン部の日常~」や「ユニケージ開発手法コードレビュー」など見所満載です!

Vol.24

投稿日:2016.04.11 | カテゴリー: バックナンバー

月刊化2年目突入!!最新号 2015 April(vol.24)巻頭はなんと漫画でスタート!「めざせシェル女子!~貝殻高校、パソコン部の日常~」楽しくかわいくプログラミングを学ぼう!
もうひとつの新連載は「ITエンジニアのためのマーケティング入門」。おか爺とタケシくんが、愉快にマーケティングの面白さについて解説してくれます。
スズラボ通信の今回のテーマはシェルスクリプトでプログラミング!「作って使う俺シェルプログラム」とは…!?
他にも好評連載「Haskellでやってはいかんのか?」や「人間とコンピュータの可能性」など見所満載です!

Vol.23

投稿日:2016.04.7 | カテゴリー: バックナンバー

最新号 2015 March(vol.23)の特集は「円滑コミュニケーションが世界を救う!中小企業診断士が解説する、超実践的な会話術!」。ビジネスで使えるコミュニケーション術を、中小企業診断士の濱口さんが楽しく解説!
そして!新連載「よしおかひろたかのIT散歩日記」がスタート!ぶらぶらとお散歩しながら、色々なことをのんびりつづっていただきます。
TechLION vol.19再録記事も収録!テーマはセキュリティ大特集!昨年は本当に色々なことがありましたね・・・。
他にも好評連載「リナ女のたしなみ」や「ユニケージ開発手法コードレビュー」など見所満載です!

Vol.22

投稿日:2016.04.7 | カテゴリー: バックナンバー

『シェルスクリプトマガジン』(毎月25日発売)は日本で唯一のシェルスクリプト総合誌。
最新号 2015 February(vol.22)の特集は「北のDC探訪記!&USP友の会出張一撃勉強会レポ」。友の会の濱田さんが、さくらインターネットの石狩データセンターを取材!札幌で開催した一撃勉強会のレポートも収録。
船橋情報ビジネス専門学校の鳥居校長先生の新連載「UNIX大好き人間はどう育つ?」がスタート!UNIXの魅力についてつづっていただきます。
スズラボ通信では、プログラミング初心者へのProcessingのススメ。プログラミングで雪の結晶を降らせてみよう!
他にも好評連載「漢のUNIX」や「ユニケージ開発手法コードレビュー」など見所満載です!

Vol.21

投稿日:2016.04.7 | カテゴリー: バックナンバー

新年最初の特集は「こんなシェルスクリプト、書いちゃダメだ。」漢のUNIXでお馴染みの後藤大地さんが、ダメシェルスクリプトを斬ります!
新連載は、クラウディアさんこと戸倉彩さんのコミケ紹介記事「戸倉彩の2.5次元の世界」。冬コミ前にコミケ知識を勉強しましょう!
「TechLION再録」では、9月に開催されたvol.18を収録。「未来のライフスタイルとテクノロジー」をテーマに熱いトークが繰り広げられました。
「GNU AWK処方箋」の第4回はなんと最終回……! 従来のAWKではできなかったGNU AWKならではの拡張機能について解説します。
他にも「IT美女図鑑」や「Haskellでやってはいかんのか?」など好評連載中です!

Vol.20

投稿日:2016.04.7 | カテゴリー: バックナンバー

最新号 2014 December(Vol.20)はクリスマス全開の表紙が目印!特集は「エンジニアになりたい!新人の為のUNIX基礎講座」。
そもそもパソコンってなんなのか?いまさら聞けない基礎知識を、USPエンジニアがわかりやすく解説。

大岩先生の「人間とコンピュータの可能性」では、エンジニアの抽象化能力に着目。
菅さんの「中小企業手作りIT化奮戦記」では仮想化環境の導入でサーバの集約に挑みます。

他にも「ユニケージ開発手法 コードレビュー」や「組織文化を変える汗と涙の物語 アジャイル改善塾」など好評連載中です!

Vol.19

投稿日:2016.04.7 | カテゴリー: バックナンバー

最新号 2014 November(Vol.19)の 巻頭特集は特別対談「熟年エンジニア2人が語る 若手エンジニアに伝えたいこと」。
エンジニアにもっと幸せになってもらいたい、それには何が必要か。過去・現在・未来の視点からこれまでとこれからのITについて語っていただきました。

平さんの「リナ女のたしなみ」では、Amazon Glacierを利用した、写真のバックアップをご紹介。
そして長谷川さんの「うにっくすなやつら」がシェルスクリプトネタでゆるふわ復活!

GNU AWK処方箋第2回はレイアウトデザインを一新。たくさんのオオウミガラスと共にGNU拡張された関数を盛りだくさんの内容でご紹介いたします。
他にも「ユニケージ開発手法 コードレビュー」や「漢のUNIX」など好評連載中です!

Vol.18

投稿日:2016.04.7 | カテゴリー: バックナンバー

最新号 2014 October(Vol.18)はロゴデザインを大幅にリニューアル!「シェルスクリプト」という言葉をより強調したインパクトのあるロゴデザインになりました。
雑誌名はこれまで通り「USP MAGAZINE」で、番号も通し番号で変更ありません。

巻頭特集は「インフラエンジニアのおしごと」。
「サーバー運用お助けTips」の濱田さんが、冒頭と連載を特別執筆。キーワードは”がんばらない運用”です。
また、6月に行われた、インフラエンジニア向けのイベント、July Tech Festaのレポート記事も収録。

AWK処方箋は10月号から「GNU AWK 処方箋」としてスタート!GNU拡張で便利になった点を解説いたします。
他にも「ユニケージ開発手法 コードレビュー」や、新デザインでお届けする「Haskellでやってはいかんのか?」など好評連載中です!

Vol.17

投稿日:2016.04.7 | カテゴリー: バックナンバー

小学生達の夏休みはもうすぐおしまい。
宿題に追われていたあの頃が懐かしいなと思いきや、
えー!今どきは宿題代行業者があるんですか……
いいなぁ、納期直前開発代行業者とかないかな。

なんて冗談はさておいても、時代が進むと共に常識を覆す新しいものが次々現れますね。
本誌も新しい知見を届けられるように、今後ますます頑張ります。

Vol.16

投稿日:2016.04.7 | カテゴリー: バックナンバー

照りつける日射し!
暑い暑いといってクーラーの効いた部屋に閉じこもりがちですが、
犬はやはり散歩が好きなようで、近所の河川敷を元気に散歩していました。

いやいや、人間だってそんなことないか。夏はイベント目白押しですからね。
今年の夏はどんな計画を立てていますか?

Vol.15

投稿日:2016.04.7 | カテゴリー: バックナンバー

雷雨になれば梅雨明け間近といいますが、
今年の雷雨は嵐に雹に手厳しいですね。

ものづくりも、だいたい完成間近に大きな試練が待ち構えてるものですよね。
それを何とか乗り越えて、大きな花火を打ち上げたいものです。
ところで今月号の表紙、右下で主役を下支えするちんじゅうちゃんがいい味出してます。

Vol.14

投稿日:2016.04.7 | カテゴリー: バックナンバー

まだ過ごしやすい日和が続いてますけど
もうすぐ、梅雨が訪れてしまうんですかねぇ。

でも、そんな時こそじっくり物事に取り組むチャンスですよ。
それぞれの道を究めるプロフェッショナルの話に耳を傾け、
そして手を動かして、プログラミングに精進しようと思います。

Vol.13

投稿日:2016.04.7 | カテゴリー: バックナンバー

新装刊2号目。
5月病になる暇もなく、体当たりで作っております。(←まだ4月ですね)
徐々にペースを掴んでこなれてきたら、もっといろいろなこと仕掛けたいです。

初めは体を慣らす期間。
でも、いよいよこれから、本番が始まる季節ですね。

Vol.12

投稿日:2016.04.7 | カテゴリー: バックナンバー

for the sophisticated shell scripters
(洗練されたシェルスクリプト愛好家達へ)

そんなコンセプトで誕生したシェルスクリプト総合誌が、おかげさまで三周年。
いやぁ、よくネタが尽きずに生き延びたと我ながら感心しておりますが、なんと
今回から月刊化してしまいました! (ホントに尽きてしまわぬよう頑張ります)

今日はそんな月刊化第一号の発売日。桜の開花より一足早く(高知を除く)、
新たなUSP MAGAZINEが今日から始まります。今後ともよろしくお願いします。

Vol.11

投稿日:2016.04.7 | カテゴリー: バックナンバー

世の中でヒットしているサービスに、共通している特徴とは何だろうか。
サービスの向こうに居る相手の想いが、手に取るように伝わる、
そんな仕掛けがあるのかもしれない。

成功しているエンジニアに共通している特徴とはなんだろうか。
人との対話、コンピューターとの意思疎通が上手なことかもしれない。

Vol.10

投稿日:2016.04.7 | カテゴリー: バックナンバー

行ったこと無い場所、会ったこと無い人、見たこと無い物。
例え知ってはいたとしても、行って、出会って、触れ合えば、
多くの場合想像を超える思いを抱くことになる。

そうやって様々、想像を超える思いを抱いた人たちの素直な体験を、
今回もまたたくさん詰め込んでお届けしたい。

Vol.09

投稿日:2016.04.7 | カテゴリー: バックナンバー

面白そうなこと、いろいろやってみたくてたまらない。
でも、最初の一歩が意外と大変。「どうやるの?わからないよ」
そんな時は一度、わかる人にとことん教えてもらいましょう。
教えたくて、仲間を増やしたくてたまらない人が、ほら!ここに……

Vol.08

投稿日:2016.04.7 | カテゴリー: バックナンバー

シェルスクリプトって何?
それは哲学を表現する一手段なのかもしれない。
ならば同じ哲学を表現しているものは皆、
どんな姿をしていても、興味が湧く。

Vol.07

投稿日:2016.04.7 | カテゴリー: バックナンバー

道具には、長きに渡り人々に愛用され続けるものがある。
優れた道具とは、どんなものであろうか。
伝統工芸品からソフトウェアまで、本号は「道具」について考える。

Vol.06

投稿日:2016.04.7 | カテゴリー: バックナンバー

実りの秋ということで、今回の裏テーマはものづくり。
日本のインターネットを作った男、世界でものづくりムーブメントを起こさんとする男に話を聞き、そして本誌は、
シェルスクリプトで、ものづくりに革命を起こさんとする。

Vol.05

投稿日:2016.04.7 | カテゴリー: バックナンバー

Open usp Tukubaiの本格的レシピを本邦初公開。
シェルスクリプトを業務アプリや数学的分野へ
どんなふうに活用してきたかが見えてくる、
今までで一番USPらしい雑誌に仕上がりました。

Vol.04

投稿日:2016.04.7 | カテゴリー: バックナンバー

「UNIX哲学の価値を今、改めて問う!」
読者へ投げかけるメッセージが随所で増幅されて
すっげー濃い雑誌に仕上がった号なのです。

Vol.03

投稿日:2016.04.7 | カテゴリー: バックナンバー

「ユニケージって何?」数多く寄せられる質問。
もしかするとこの質問に初めてまともに答える号かもしれない!
他、アカデミックな記事、ソーシャル(社会的)な記事満載の号ですよ。

Vol.02

投稿日:2016.04.7 | カテゴリー: バックナンバー

今度の十三夜は、窓から月を眺めながら
クラウド駆使してシェルスクリプトで分散処理→そして夜更かし、
とシャレこんでみませんか。

Vol.01

投稿日:2016.04.7 | カテゴリー: バックナンバー

震災から3 ヶ月が経過し、世の中は徐々に平静を取り戻そうとしています。 だけど、何かがちょっと以前とは違うと思いませんか? 明日には何が起こるのかわからない、という現実を目の当たりにして、 「生きる上で本当に大切なものは何なのか?」という疑問を 日本人全員が突きつけられたからなのではないかと思います。 それは一瞬の興味を引くような、真新しいものや斬新な物や、 飾り立てられた何かやエンタテインメントではなくて、 生活の土台である、寝るところや食べるもの、着る物、 そして家族や仲間という、必要最低限のもの。 重厚長大な構造よりも、できるだけ簡素な構造へ。 それぞれの人が、世の中のシステムを知り、 自分たちの足でたくましく歩ける世の中へ。 何かが変わる時代が来たことをそこここに感じずにはいられません。 そんなときにひょっこりこの世の中へ登場したUSP MAGAZINE。 まだまだひよっこではございますが、 技術に人生をかけたエンジニアの皆さんを、 シェルスクリプトという簡素な技術でつなぎ、 奥深い技術の世界へと誘う骨太な雑誌を目指したい!!と 心の奥から思う次第です。 どうぞ今後ともごひいきに。

Cプログラム高速化研究班

投稿日:2016.03.30 | カテゴリー: 推薦図書

プログラムの背後で、CPUはどのような働きをしているのでしょうか?本書はその原理と仕組みを簡単な実験で確かめ、コードを研ぎすます方法を紹介します。

【著者あとがきより】
高速なプログラムが求められる場面は少ないながらも厳然として存在し、いざ性能が必要になったときに対応できる技術者が非常に少なくなっているのが気がかりです。特に、業務システムなどの数値演算系以外の分野では、絶滅危惧種と言ってよいのではないでしょうか。
その原因のひとつは、高級言語と統合開発環境の普及によって、機械命令レベルのプログラム実行を意識しなくてもすむようになっていることです。どのように実行されるかを意識しないので、実行コストが高い処理が平気で使われています。もうひとつの原因は、アルゴリズムに対する理解不足です。
開発するプログラムが高度化、パターン化してきているため、アルゴリズムについて学ぶ機会がなくなっているのではないでしょうか。
本書は、プログラムを高速化する個々の方策を並べるのではなく、方策を見つけるための道筋を示すように心がけました。

目次

序章 高度に進んだ技術は魔法と見分けがつかない

1章 CPUとコンパイラについてちょびっと

1.1 高速道路と横断歩道
1.2 コンパイラは何をしているのか
 コンパイル後のアセンブリ言語プログラムを覗く
 最適化オプションを付けるとどうなるか
1.3 CPUは何をしているのか
 命令セットアーキテクチャとマイクロアーキテクチャ
 命令はどのように実行されるのか
 命令パイプライン
 キャッシュメモリ
 もっとキャッシュ
 キャッシュブロックの置換アルゴリズム
 スーパースカラ実行
[1章は重箱の隅なのか]

2章 実行コストの感覚を身につける

2.1 プログラムの実行コスト
2.2 計る・測る・謀る
 本書のアプローチ
2.3 ベンチマークテストプログラムの最適化を防ぐ
 操作の「おまとめ」を防ぐ
 初期値設定の最適化を防ぐ
 単純な繰り返し操作の最適化を防ぐ
 本書のベンチマークテストプログラム
2.4 検証――遅いのはどの操作?
2.5 基本の加算と代入
 単純な代入(レジスタ間の転送)
 単純な代入(データの競合がある場合)
 定数の代入
 変数どうしの加算
 変数に定数を加算
2.6 乗算は遅い
 変数どうしの乗算
 変数に定数を乗算
2.7 除算はとっても遅い
 変数で除算(レジスタどうしの演算)
 定数2、4で除算
 2のべき乗以外の定数で除算
 符号なし整数の場合はどうか
 2のべき乗で除算するときはシフト演算がお得
2.8 メモリへのアクセス
 小さい配列へのアクセス(狭い範囲のメモリ操作) 
 大きい配列へのアクセス(広い範囲のメモリ操作)
 デスクトップ向けCPUとの比較
2.9 コンディションで差がでる条件分岐
 else節のないif文
 else節のあるif文
2.10 32/64ビット環境で違う関数呼び出し
2.11 実験のまとめ
[愛がほしくば愛を差し出せ]

3章 遅いのはどこか

3.1 gprofを使ったプロファイリング
 gprofの使い方
3.2 何がどれだけ時間を喰っているか
 ライブラリ関数のプロファイルも取得する
 時間喰いの関数たち
 ライブラリ関数の呼び出し回数を表示させるには
3.3 何が何を呼び出しているか
3.4 プロファイリングの仕組み
3.5 そのほかのプロファイラ
[達人の技を伝える教育システム]

4章 達人の方法論

4.1 達人はどこに目をつけるか?
 ハードウェア編
 コンパイラ/ミドルウェア編
 アルゴリズム編
4.2 [ハードウェア編]配列とキャッシュメモリの活用
 行列の積を計算する
 配列操作の順番を入れ替える
 ループを展開する
 行列のタイリング
4.3 [ライブラリ編]遅い関数をめぐる紆余曲折
 なぜstrcmp関数は遅いのか
 最適化の落とし穴
4.4 [ハードウェア編]SIMDを用いた文字列比較
4.5 [ライブラリ編]入出力方法いろいろ比べ
 行データの入力方法を比べる
 出力方法はどうだろう
 パイプ入出力の特殊事情
 パイプ入出力 vs. ファイル入出力
4.6 [アルゴリズム編]バイナリサーチと平衡二分探索木
 大量データのソート
[そこまでやる? ね、ね、そこまでやるの?]

5章 コンパイラを骨までしゃぶる

5.1 レベル分けされている最適化オプション
 GCCの最適化オプション
 「最適化なし」はデバッグに役立つ
 未定義動作がないことを想定しているレベル2以上の最適化
5.2 最適化・レジスタ・外部変数
5.3 共通部分式削除を知ってプログラムすっきり
5.4 ポインタと強度低減
5.5 インライン関数でユーザー関数も展開
[他人に差をつけろ!]

6章 業務システム向けのヒント 137

6.1 ソートと文字列操作をねらえ
6.2 小数点数の計算と文字列/数値の変換
 ブロック入出力とフィールド分割
 小数部付きの数を集計する
 整数を文字列に変換する
 パフォーマンスチューニングの結果
6.3 半角文字から全角文字への変換
 文字のバイト数を判別する
 ASCII文字と半角カナ文字の判別
 ASCII文字から全角文字への変換
 半角カナから全角文字への変換
 パフォーマンスチューニングの結果
 文字のバイト数を調べる別の方法
 より道UTF-8
6.4 データの特性を利用した配列の探索
 データの特性を考慮する
 バイナリサーチとリニアサーチを組み合わせた照合
 パフォーマンスチューニングの結果
[あとがきに代えて]

ユニケージ言論

投稿日:2016.03.30 | カテゴリー: 推薦図書

アジャイルでもない、ウォーターフォールでもない…、シェルスクリプトとテキストデータ、そしてオリジナルのコマンドを組み合わせ て、従来の数十倍の開発スピードで企業の基幹システムを構築する「ユニケージ開発手法」。これまで十数年間ベールに包まれていた本開発手法を解説した初の 論文集が出版されます。
その圧倒的な柔軟性、スピード、コスト削減効果で、注目を集めている本開発手法について、考案者、ユーザ、研究者が、それぞれの立場から、技術の概略、特徴、従来の開発手法との比較を論じます。
「システムは業務にある。コンピュータは道具にすぎない」
「業務のつながりは、人のコミュニケーション」
「データは更新しない、発生データは捨てないで整理集約しておけばよい」等々、本開発手法を表現した数々の言葉は、従来型の開発に携わるエンジニアにとっても、得るものが多いはずです。

目次

序 新しい開発手法への期待 前川 徹(サイバー大学)

第1章 ユニケージとは何か 當仲 寛哲(USP研究所)

1.1 ユニケージの外見
1.2 ユニケージの世界観
1.3 ユニケージのデータ論
1.4 ユニケージによる開発・運用
1.5 ユニケージ文化:コンピューティングと心

第2章 ユニケージは道具である 山崎 裕詞(良品計画)

2.1 「情シス」という仕事
2.2 システム開発における価値の根拠
2.3 システムの内製化へ
2.4 ユニケージとの出会い
2.5 ユニケージの「ミラクル」
2.6 良品計画とユニケージの現在

第3章 ユニケージは方法論である 熊谷 章(TAO BEARS)

3.1 技術革新への途
3.2 ユニケージの分析と評価
3.3 UNIXシステムとデータベースシステムの再考

第4章 ユニケージは正解である 熊野憲辰(ゼリア新薬)

4.1 ユーザサイドから見たIT 基盤・産業論
4.2 ユーザサイドから見たシステム
4.3 ユニケージへの期待と評価

第5章 ユニケージはコミュニケーションである 木ノ下 勝郎(ライブスペックRFP研究所)

5.1 業務のつながりは人のコミュニケーション
5.2 テキスト処理だけで全部仕事ができた
5.3 データは更新しない、発生データは捨てないで整理集約しておけばよい
5.4 データの管理方式とデータ名称の付け方

Vol.00

投稿日:2016.03.28 | カテゴリー: バックナンバー

私たちエンジニアは、常に技術についての選択を迫られている存在と言えます。 1994 年、マイク・ガンカーズ(X Window System 開発チームの一員)は、 以下の9 つの至上命令に集約される「UNIX 哲学」を創出しました。

  • 1. 小さいものは美しい。
  • 2. 各プログラムが一つのことをうまくやるようにせよ。
  • 3. できる限り原型(プロトタイプ)を作れ。
  • 4. 効率よりも移植しやすさを選べ。
  • 5. 単純なテキストファイルにデータを格納せよ。
  • 6. ソフトウェアの効率をきみの優位さとして利用せよ。
  • 7. 効率と移植性を高めるためにシェルスクリプトを利用せよ。
  • 8. 束縛するインターフェースは作るな。
  • 9. 全てのプログラムはフィルタとして振る舞うようにせよ。

これらのUNIX 哲学は、複雑化した現代社会において、物事の本質を貫き、 シンプルに強く生きていくための指標として、多くの人々の支えとなっています。 シェル(shell)は、ユーザからの指示を受けて解釈し、OS の中核部分に伝達することで、 プログラムの起動や制御などを行うプログラムです。 あらゆるプログラムは、シェルからの起動が可能であり、シェルスクリプトに処理の順番を 記述することで、複数のプログラムを操ることができます。 シェルスクリプトは、平易で短く書けるためユーザとの親和性が高いのも特徴です。 様々な言語で書かれたプログラムを自由に操るシェルスクリプトの可能性は無限大といっても過言では ありません。 現代に生きる私たちが直面する多くの課題も、この強くて柔軟な「UNIX の精神」と 「シェルプログラミングの技術」によって解決できるのではないか、と私たちは考えます。 USP MAGAZINE はUNIX 精神の原点に立ち返り、 シェルプログラミングをはじめとする広範な「洗練された」技術を紹介することで、 エンジニアの皆さんに改めてテクノロジーの楽しさ、深さを伝える雑誌を目指します。

新しい記事一覧へ戻る

  • -->