書籍概要

Software Design 20192月号

バックナンバー一覧

発売日
更新日

概要

第1特集
Java・Ruby・Python・Go・C
“速い”コードの書き方

プログラムの高速化で大事なことは,「言語の特徴を押さえること」と「計測すること」の2点です。その言語の内部構造や処理方法――どのようなデータ構造を利用しているのか,どのように並列化を実現しているのか,オブジェクトやメモリをどう扱っているのか――を理解したうえで,計測を行いながらコードを直していくのが定石です。

本特集ではJava・Ruby・Python・Go言語・C言語の5つのプログラミング言語を取り上げ,それぞれの言語の特性を踏まえたパフォーマンスチューニングを試みます。

第2特集
SREって,なにをやればいいの?
先駆者に訊く,誰がための信頼性

書籍『Site Reliability Engineering』のIntroductionには,この言葉が冒頭に書かれています。

"Hope is not a strategy."

本を読んだだけでは改善はされません。とはいえ,もともとGoogle社内で考えられたもの。そっくりそのまま導入できるわけでもありません。何から取り組んだら良いのかわからない……そんなときには先駆者から学びましょう。本特集で,自社サイトの信頼性を高めるシステム運用が何かを考え,行動を起こすためのヒントを見つけてください。

短期連載
サーバサイド開発の品質を向上させるJava→Kotlin移行のススメ
【1】サーバサイドでJavaからKotlinへ変える理由

GoogleがAndroidの開発言語として公式サポートしてから一層人気が高まるKotlin。そのイメージが強くクライアントサイド開発に目が行きがちですが,最近ではサーバサイド開発で使用されることも増えており,移行もしやすいためAndroidアプリと同様にBetter Javaとして使える魅力があります。第1回目は,Javaとコードを比較しながらKotlinの利点を解説したうえで,サーバサイド開発へ導入した事例を紹介します。

特別企画
Jamesのセキュリティレッスン
【12】Wiresharkを使うなら知っておいてほしい設定や機能(1)

Wiresharkを使ったパケットキャプチャへの理解を深める本連載。今回はWiresharkを使うなら知っておいてほしい設定や機能について紹介します。

目次

第1特集
Java・Ruby・Python・Go・C
“速い”コードの書き方

  • 第1章:Java編
    可変長配列からStream APIまで,実測しながら高速化を目指す
    …… なぎせゆうき
  • 第2章:Ruby編
    プログラミングの自由度を損なわずに高速化を図るテクニック
    …… 成瀬 ゆい
  • 第3章:Python編
    プログラムの並列処理で失敗しないためのポイント
    …… 石本 敦夫
  • 第4章:Go言語編
    goroutine/channelで並行処理がここまで簡単に書ける!
    …… mattn
  • 第5章:C言語編
    キャッシュとシステムコールを制御する
    …… 片山 善夫

第2特集
SREって,なにをやればいいの?
先駆者に訊く,誰がための信頼性

  • 第1章:SREがなぜこれからのシステム作りに必要なのか
    『Site Reliability Engineering』から読み解く
    …… 藤崎 正範
  • 第2章:ミクシィがやっているSREの取り組み
    トイルの削減,インフラのコード自動化,必要なスキルを紹介
    …… 清水 勲
  • 第3章:Site Reliability Engineeringの哲学を組織に適用する
    組織への最適化を進めるサイバーエージェントの取り組み
    …… 岩永 翔,柘植 翔太
  • 第4章:SREチームの工夫と働き方改革
    バディ制から3人1組ローテーションへの改善
    …… 吉川 拓哉
  • 第5章:インフラ運用監視業務がSREで得た後ろ盾
    ソフトウェアエンジニアリング重視のハートビーツの取り組み
    …… 馬場 俊彰

一般記事

  • [短期連載]サーバサイド開発の品質を向上させるJava→Kotlin移行のススメ
    【1】サーバサイドでJavaからKotlinへ変える理由…… 竹端 尚人
  • [特別企画]Jamesのセキュリティレッスン
    【12】Wiresharkを使うなら知っておいてほしい設定や機能(1)…… 吉田 英二

Test Report

  • 【新連載】NETGEAR ReadyNAS解体新書
    【1】ReadyNASとファイルシステムの関係…… 後藤 大地

連載

  • ITエンジニア必須の最新用語解説
    【122】GraphQL……杉山 貴章
  • digital gadget
    【242】Interaction Award 2019から知る,ガジェットに囲まれた社会……安藤 幸央
  • 結城浩の再発見の発想法
    【69】アダプター……結城 浩
  • [試して理解]Linuxのしくみ
    【10】マルチプロセスとマルチスレッド……武内 覚
  • 宮原徹のオープンソース放浪記
    【36】島根,長崎とたまにはイベント参加を楽しむ……宮原 徹
  • 平林万能IT技術研究所
    【9】誰かが江戸で手にした浮世絵を「自分の手の中」で甦らせる!……平林 純
  • ひみつのLinux通信
    【60】気軽にポイっ……くつなりょうすけ
  • 【新連載】作品で魅せるGoプログラミング
    【1】Goを使って家電を操作しよう……上田 拓也
  • Visual Studio Code快適生活
    【5】Visual Studio CodeもフィーチャーされたMicrosoft Connect(); 2018 振り返り……職業「戸倉彩」
  • シェル芸人からの挑戦状
    【18】straceを使いこなす……上田 隆一,田代 勝也,eban,山田 泰宏,中村 壮一
  • 【最終回】徹底解説コンピュータサイエンス
    【6】レジスタとラッチ/フリップフロップ~CPUのレジスタと順序動作のしくみ~……速水 祐
  • Androidで広がるエンジニアの愉しみ
    【32】CI/CDサービスを活用してAndroid開発を加速しよう!……中谷 克紀
  • 書いて覚えるSwift入門
    【45】swift package manager……小飼 弾
  • セキュリティ実践の基本定石
    【62】サプライチェーン攻撃……すずきひろのぶ
  • あなたの知らないファイルシステムの世界
    【5】readシステムコールからみるLinuxにおけるVFSの実装……青田 直大
  • Debian Hot Topics
    【61】ベンダ固有パッチ機能の削除など最近のトピック……やまねひでき
  • Unixコマンドライン探検隊
    【34】ストレージそしてDBMS(その4)……中島 雅弘
  • Ubuntu Monthly Report
    【105】UbuntuユーザのためのRyzen PC自作入門……あわしろいくや
  • Monthly News from jus
    【88】クラウドとJavaScriptが台頭した2010年代前半……榎 真治
  • Hack For Japan+Code for Japan~あなたのスキルは社会に役立つ
    【86】地方での生存戦略も考えてみませんか。……細矢 研人

サポート

正誤表

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

(2019年1月29日最終更新)

特集1 第4章
(1)P.47 右段上から2行目

読み取り専用chan<-と書き込み専用<-chanが指定できます。
読み取り専用<-chanと書き込み専用chan<-が指定できます。

(2)P.47 リスト7 上から6行目


ch := make(<-chan string)


ch := make(chan string)

(3)P.48 リスト8


func sendHello(ch chan string) {
    for i := 0; i < 3; i++ {
        ch <- "Hello" //  送信
    }
    close(ch)
}
func main() {
    ch := make(chan string)
    go sendHello(ch)
    for msg := range ch {
        fmt.Println(msg)
    }
}


func sendHello(ch <-chan string) {
    for i := 0; i < 3; i++ {
        fmt.Println(<-ch)
    }
    close(ch) //ここでコンパイルエラーが起きる
}

func main() {
    ch := make(chan string)
    go sendHello(ch)
    ch <- "Hello"
    ch <- "Hello"
    ch <- "Hello"
}

商品一覧