書籍概要

Software Design 201811月号

バックナンバー一覧

発売日
更新日

概要

第1特集
その知識古くなってない? 新サービスを適材適所で使えてる?
あなたの知識をアップデート AWS再入門

数あるクラウドサービスの中でも,とくに多くのユーザ数を誇るAmazon Web Services(AWS)。本特集では,そのAWSの基本的な特徴・サービス・機能に関する情報をあらためて整理します。

AWSでは次々と新しいサービスが発表されるため,かつてはベストプラクティスだとされていた使い方でも,数年も経てばさらにコストや手間を削減できる使い方に見直せる可能性があります。長年利用してきたユーザこそ,見直してみる価値があるでしょう。オンプレミスから移行してきたばかりのAWS初心者は,クラウドに適した使い方ができているかを確認することもできるでしょう。また,AWSを使っていない方は,今のサービスラインナップやサポート体制を見て再検討するのも良いでしょう。それぞれの立場で今のAWSと自社のシステムを再評価してみてください。

第2特集
よい機器はエンジニアを鍛える
ヤマハルーターをお勧めする理由

業務用ルーターのシェア国内ナンバー1! ヤマハのネットワーク機器は根強い人気があります。製品として日本語インターフェースを完備していること,ニーズに合わせたサイズとパッケージングがされていること,そしてネットワーク機能の高い信頼性など,みなさんが認めるところでしょう。本特集ではその魅力を掘り下げて解説をします。小規模のオフィスLANから,100人以上の企業,店舗や現場など,さまざまなシチュエーションで,ヤマハのネットワーク機器は今日も動き続けています。仮想環境での利用やクラウド環境への対応など,その進化と発展は瞠どうもく目すべきところがあります。良いネットワーク機器はエンジニアを鍛え育てます!

一般記事
[特別企画]量子コンピュータ〈超〉入門
【後編】量子プログラミングと量子チップ開発の実際

各国で開発が進む「量子コンピュータ」。名前だけでも耳にされた方は多いのではないでしょうか? 本特別企画では量子コンピュータのしくみ,業界の最新動向を前後編で追います。後編では,プログラマ/ITエンジニア目線の量子コンピュータへの取り組み方,および「量子チップ」の実装としてどのような研究開発がされているのかについて解説します。

目次

第1特集
その知識古くなってない? 新サービスを適材適所で使えてる?
あなたの知識をアップデート AWS再入門

  • 第1章:AWSを正しく理解する
    …… 舟崎 健治,荒木 靖宏
  • 第2章:めざせ,最適なアーキテクチャ! 成功のための見直しポイント
    …… 原田 和則,焼尾 徹,大松 宏之,舟崎 健治
  • 第3章:あなたのAWSノウハウをアップデートしよう!
    …… 土持 昌志
  • 第4章:クラウドの利点を活かそう! 環境構築自動化のすすめ
    …… 永田 明

第2特集
よい機器はエンジニアを鍛える
ヤマハルーターをお勧めする理由

  • 第1章
    なぜ多くの現場で受け入れられているのか
    ヤマハネットワーク製品のここがスゴイ…… 津村 彰
  • 第2章
    「企業向け」と「コンシューマ向け」の違いとは
    ネットワーク製品の4分類について知る…… 津村 彰
  • 第3章
    具体的にルーター実機のイメージが膨らむ利用方法とは
    ルーターを購入する前に「遠隔検証システム(β)」で試してみませんか?…… 津村 彰
  • 第4章
    ネットワーク構築のはまりどころと直し方のコツ
    中小企業の現場で起きているトラブルと解決法…… 津村 彰
  • 第5章
    仮想ルーターとL3スイッチの新機能紹介
    企業の通信インフラの未来…… 津村 彰

一般記事

  • [特別企画]量子コンピュータ〈超〉入門
    【後編】量子プログラミングと量子チップ開発の実際……宇津木 健

Catch Up Trend

  • 業務を改善する情報共有の仕掛け
    【3】すばやく届けてフィードバックで改善するサイクルを作ろう……奥村 和彦

Test Report

  • NETGEAR ReadyNASと10G Switchで作る社内ストレージ環境
    【3】MTUを変更して速度を引き上げる……後藤 大地

連載

  • ITエンジニア必須の最新用語解説
    【119】Project Helidon……杉山 貴章
  • digital gadget
    【239】コンピュータグラフィックスの祭典SIGGRAPH 2018[前編]……安藤 幸央
  • 結城浩の再発見の発想法
    【66】オーバーエンジニアリング……結城 浩
  • [試して理解]Linuxのしくみ
    【7】メモリ管理サブシステム……武内 覚
  • 宮原徹のオープンソース放浪記
    【33】ODCで開発について考える2日間……宮原 徹
  • 平林万能IT技術研究所
    【6】伊能忠敬メソッドで渋谷駅の地下大迷宮を可視化する!?……平林 純
  • ひみつのLinux通信
    【57】1分が待てない……くつなりょうすけ
  • Visual Studio Code快適生活
    【2】VS Codeではじめるコードのバージョン管理……職業「戸倉彩」
  • 徹底解説コンピュータサイエンス
    【3】計算機科学の祖となったチューリング・マシン……速水 祐
  • scikit-learnで学ぶ機械学習アルゴリズム
    【7】SVC(SVM Classification)による分類……小川 雄太郎
  • シェル芸人からの挑戦状
    【15】データの連結……上田 隆一,田代 勝也,山田 泰宏,青木 裕哉,中村 壮一
  • Vimの細道
    【34】Vimとデスクトップ環境……mattn
  • Androidで広がるエンジニアの愉しみ
    【29】既存アプリのKotlin化戦略(後編)……重村 浩二
  • 書いて覚えるSwift入門
    【42】恒例,Apple収穫祭……小飼 弾
  • セキュリティ実践の基本定石
    【59】米国の告訴状から読み取る北朝鮮のサイバー攻撃……すずきひろのぶ
  • あなたの知らないファイルシステムの世界
    【2】ファイルシステムの共通モデル……青田 直大
  • SOURCES~レッドハット系ソフトウェア最新解説
    【24】開発者向けのRed Hat提供サービス……小島 啓史
  • Ubuntu Monthly Report
    【102】Ubuntu 18.10の変更点……あわしろいくや
  • Unixコマンドライン探検隊
    【31】スマート(にしてね)クロックの制作(その2)……中島 雅弘
  • Monthly News from jus
    【85】七夕に シェル芸あそび 楽しいな……小林 峻
  • Hack For Japan+Code for Japan~あなたのスキルは社会に役立つ
    【83】第7回 石巻ハッカソン……高橋 憲一

サポート

正誤表

本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。

(2018年10月11日最終更新)

P.16 本文右段16行目,「MySQL ノベルティぬいぐるみ」の提供元(「読者プレゼントのお知らせ」)

MySQLノベルティぬいぐるみ(日本オラクル)[5名様]
URL:https://www.oracle.com/jp/index.html
MySQLノベルティぬいぐるみ(Oracle Corporation(MySQL Community Team))[5名様]
URL:https://www.mysql.com/jp/

ダウンロード

P.110 連載「scikit-learnで学ぶ機械学習アルゴリズム」

記事で紹介したSVCによる分類の機械学習を試すためのサンプルコードを以下からダウンロードできます。ダウンロードファイル「svc.zip」は圧縮ファイルです。解凍したうえでご利用ください。

圧縮ファイル内の「svc.ipynb」をGoogle Colaboratoryにアップロードすることで機械学習を試せます。Google Colaboratoryへのアップロード方法は,圧縮ファイル内の「Readme.txt」を参照してください。

ダウンロード
サンプルコード(svc.zip)

P.158 連載「Unixコマンドライン探検隊」

記事で使用しているサンプルコードを以下からダウンロードできます。ダウンロードファイル「sd11-unix31-sample.zip」「sd11-unix31-sample2.zip」は圧縮ファイルです。解凍したうえでご利用ください。詳細については,記事および本Webサイトの補足情報をご覧ください。

なお,このサンプルは学習・実験用を目的としております。オリジナルの著作は著者に帰属しますが,読者が断りなく任意に利用・改変することができることとします。

ダウンロード
サンプルコード(sd11-unix31-sample.zip)
機能拡張したサンプルコード(sd11-unix31-sample2.zip)

免責:本サンプルを使用することによって,使用者が受けたあらゆる不利益に対して,原著者および技術評論社はその責任を負いません。

補足情報

P.158 連載「Unixコマンドライン探検隊」補足情報

[補足1]ラズパイでespeakがうまくいかない問題

筆者のラズパイ(2018-06-27-raspbian-stretch.zipなど)は,導入したままの環境ではespeakが動作せず,たくさんのエラーを吐き出します。原因は(1)/usr/share/alsa/alsa.confの記述が不適切なこと,(2)espeakに先立ってjackd(JACK Audio Connection Kit sound server:オーディオ処理でリアルタイム処理が必要な場合に活躍するサービス)を起動する必要があること,のようです。以下に,これらの問題を(とりあえず)解決する方法を紹介します。

/usr/share/alsa/alsa.confの132~148行目,すべての“*.pcm.なにがし”という部分を,“*.pcm.default”と,管理者権限で書き換えてください。

  • /usr/share/alsa/alsa.conf(修正該当箇所)
    
    pcm.front cards.pcm.front
    (...略...)
    pcm.spdif iec958
    (...略...)
    pcm.phoneline cards.pcm.phoneline
    
    
  • alsa.confの書き換え後
    
    pcm.front cards.pcm.default
    (...略...)
    pcm.spdif iec958
    (...略...)
    pcm.phoneline cards.pcm.default
    
    

あとは,ラズパイで実行しているときは,jackdを起動するようにサンプルスクリプトに仕込んでおいたので,jackdをaptでインストールしておけば音がでるはずです。

ここでの対応は,あくまで臭いものに蓋で,まだエラーメッセージがでます。スクリプト中,デバッグオプションでログ出力させなければ,エラーログも/dev/nullに捨てるようにしてあります。

[補足2]チューンアップ

性能向上を目指して,システムの構成を変更します。ここに挙げた設定はしなくても,本誌で作成したスクリプトは動作します。

ラズパイは,通常OSの主ドライブにmicroSDを用います。microSDなどのフラッシュメモリは,書き込み回数に制限(寿命)があります。今回制作したダッシュボードも,convertでの画像変換時にファイルへ書き込みします(デバッグオプション指定時のログ出力もあります)。1分に1回でも,数日,数ヵ月動作させておくと,microSDの寿命への影響も無視できなくなります。また,長時間動作させ続ける場合,OSのスワップ領域,OSが記録するログ(/var/log以下に保存される),一時ファイル(/tmp,/var/tmpなど)のI/Oも考慮しなければなりません。

この課題の解決と,convertによる書き込みと,fbiでの読み込みの短縮も狙って,スワップ領域を使わないよう(本誌2018年9月号 第29回に解説あり)に設定し,一時ファイルのための領域とシステムログを,RAMをファイルシステムとして使うtmpfsに配置します。

  • スワップをoffにする
    
    $ sudo swapoff --all             ← スワップを停止
    $ sudo apt remove dphys-swapfile ← swapを管理するパッケージを削除しておく
    $ sudo rm -rf /var/swap          ← 不要になったスワップファイルを削除
    
    

いずれも管理者権限で,/etc/fstabに次のテキストを追加します。

  • ラズパイでtmpfsを使う場合/etc/fstabの最後に以下を追加
    
    tmpfs           /tmp            tmpfs   defaults,size=32m 0       0
    tmpfs           /var/tmp        tmpfs   defaults,size=16m 0       0
    tmpfs           /var/log        tmpfs   defaults,size=16m 0       0
    
    

さらに起動時にログ出力などに必要なファイルとディレクトリを作成するように,/etc/init.d/setuplogを作成(setuplogはダウンロード提供しているサンプルソースコードに含まれているので,そのまま利用して配置)し,既存のmicroSD内のファイルを掃除して,起動時に読み込ませる設定をします。

  • /etc/fstab,/etc/init.d/setuplogを用意して再起動までの手順(rootで実行)
    
    # chmod 755 /etc/init.d/setuplog       ← setuplogを起動できるように権限を設定
    # update-rc.d setuplog defaults       ← 起動時の読み込み指定
    # rm -rf /var/log/* /tmp/* /tmp/.[^.]* /var/tmp/* /var/tmp/.[^.]* ← 既存のファイルをクリアしておく
    # reboot                               ← 再起動
    
    

スクリプト中,installコマンドを使うことで,ファイルの作成とオーナ情報,権限をまとめて実施しています。

再起動後,dfやmountコマンドで,tmpfsがマウントされているのが確認できれば設定成功です。この施策によって,convertが生成する画像データの出力先(/tmp)がRAM上になることで,書き込み・読み込み両方が高速に動作するようになります。

この設定は,型落ちしたマシンにLinuxを導入している環境でも有効です。/var/log以下に作成するディレクトリなどは,各環境で異なりますので,tmpfsに移行する前の環境を確認して,スクリプトを修正してください。起動時に読み込むスクリプトも,OSのディストリビューションで異なりますので,各環境にあわせてください。また,/var/tmpが少ないとapt upgradeなどの実行時に,一時領域が不足することがあります。その場合は,fstab内で割り当てているtmpfsのサイズを一時的に増やして再起動します。

[補足3]ラズパイの起動時自動ログイン設定

今回作成したスクリプトを,ラズパイの起動時に自動で立ち上げる設定についての手順を紹介しておきます。まずラズパイは,起動時に(GUIではなく)ttyのログイン状態になるように設定します。raspbian-stretch-liteなど,そもそもCUIで起動する設定がされているならそのままでかまいません。GUIがデフォルトで起動する設定になっているなら,raspi-configを使って,CUIで起動するように設定を変更してください。

次に,次のファイル
(/etc/systemd/system/getty@tty1.service.d/autologin.conf)を管理者権限で作成してください。

  • /etc/systemd/system/getty@tty1.service.d/autologin.conf
    
    [Service]
    ExecStart=
    ExecStart=-/sbin/agetty --autologin pi --noclear %I 38400 linux
    
    

次のように,systemctlコマンドで有効にしておけば,piユーザで自動ログインが有効になります。


$ sudo systemctl enable getty@tty1.service

さらにpiユーザの~/.profileの終わりに次のコードを加えれば,ラズパイ起動時に自動で時計が起動するようになります。

  • 自動起動設定。.profileの最後に追加
    
    if [ $(tty) = "/dev/tty1" ]; then
        Scripts/mclock.bash -f -s -n4   # パスやオプションは各自の環境に合わせて記述
    fi
    
    

キーボード,マウスも接続しないで運用するなら,sshdは有効にしておくのがよいですね。このような環境も考慮して,IPアドレスを表示する機能も加えてあります。IPアドレスは,ifconfigコマンドで(ラズパイでデフォルトのWifi)wlan0を取得していますが,異なるNIC(Network Interface Controller)を参照する場合は,mclock.bash起動時に-i <NIC名>オプションを使って明示的にNICを指定してください。

[補足4]時報機能での,さらにもう1つの工夫

ラズパイでUSBスピーカを接続している場合など,補足1の工夫を施しても,音の出力がなかなかうまくいかないことがあります。またespeakの発声は,macOSのsayと比べると流暢でなかったりと,不満があるかもしれません。

そこで,Google Translate Text to Speech(Google Translate TTS)の機能を使う解決策を試してみました(参考:https://elinux.org/RPi_Text_to_Speech_(Speech_Synthesis))。mplayer(the Movie PLAYER)コマンド(aptでインストール可能)を使えば,オンラインのAPIに直接アクセスして,再生させることができます。

  • timesignal.bash
    
    googlespeech() {
        local IFS=+
        local s=$(xargs -0)
        mplayer -ao alsa -really-quiet -noconsolecontrols "http://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&q=${s}&tl=en" > /dev/null 2>&1
    }
    
    

ただし,ここで活用しているGoogle Translate TTSは,Googleが安定的にサポートしている機能ではありません。アクセス方法が変更になったり,廃止になることもあるでしょう。時報音は,たかだか24個ですので,アクセスできるうちに音声データをmp3ファイルにしてローカルに保存(ここでの実装は,スクリプトを配置したディレクトリ下のvoice/ディレクトリに0.mp3,1.mp3,……23.mp3として配置する)して,そのデータを読み出す機能(speech関数)も作成しました。Google Translate TTSでデータを生成するスクリプト(getvoice.bash)を実行すれば,自動で音声データができあがります。

  • timesignal.bash
    
    speech() {
        local voicedir=$(dirname $0)/voice
        local mp3="${voicedir}/$1.mp3"
        echo "mp3 file = ${mp3}"
        mplayer -ao alsa -really-quiet -noconsolecontrols ${mp3}
    }
    
    

    もちろんspeech関数は,Google Translate TTSから生成したmp3ファイルでなくても再生できますので,macOS上のsayコマンドなどで生成したり,サンプリングした音などなんでも活用できます。

    これらの修正を加えたmclock.bashとtimesignal.bashは,「sd11-unix31-sample2.zip」に入れてあります。本誌掲載記事で参照している「sd11-unix31-sample.zip」内のmclock.bashとtimesignal.bashの完全上位互換ですので,ファイルを入れ替えるだけで機能を追加できます。

    mclock.bashでGoogle Translate TTSを使うには,(espeakやsayによる時報の-sオプションに変えて)-gオプションを指定,事前に用意した時報データを読み込むには-Sオプションを指定してください。動作確認などのために,timesignal.bashを単独で起動する場合にも,-g,-Sオプションは有効です。mplayerコマンドは,忘れずに導入しておいてください。

商品一覧