書籍概要

WEB+DB PRESS Vol.82

バックナンバー一覧

発売日
更新日

概要

Vol.1~120までのPDFを収録したDVD-ROMが付いているお得な総集編もあります!

WEB+DB PRESS総集編[Vol.1~120]
https://gihyo.jp/book/2021/978-4-297-12215-7

特集1
Web APIデザインの鉄則
モバイルアプリからもWebアプリからも使いやすい! ……RESTに沿った設計,明確なデータ構造,適切なエラー

Webサービスやモバイルのネイティブアプリケーション,Webを通じたインフラ/ミドルウェアの操作,物理デバイスからのセンサー情報の取得……Web APIの用途が広がり続けている現在,Web API設計の技術は重要性を増しつつあります。こうした状況を踏まえ本特集では,使い勝手が良く継続的に開発・運用していきやすいWeb APIデザインの基本原則からそれを実践に移すためのノウハウまで,幅広く解説していきます。

特集2
はじめてのGo
シンプルな言語仕様,型システム,並行処理

Goは,2009 年にGoogle により発表されたオープンソースのプログラミング言語です。シンプルな言語仕様であるため学習が比較的容易で,豊富な標準パッケージが同梱されているためすばやく目的を達成できます。また,巨大なコードでも高速にコンパイルできるため大規模開発にも適しており,クロスコンパイルのしくみがあるため作成したプログラムをさまざまな環境へ容易に配布できます。並行処理のサポートも充実しており,ミドルウェアの開発などにも適しているとされています。本特集では,2014 年6 月にリリースされた最新バージョン1.3をベースにGoについて徹底解説していきます。

特集3
クラウド会計ソフトfreee開発ノウハウ大公開
急成長を支えたコードとプロセスの改善

クラウド型会計ソフトfreeeがどのように開発されたのかを解説する特集です。開始からわずか1年4ヵ月で10万を超える事業所が利用するサービスに成長したfreeeが,急成長に伴い発生した課題にどう対応したのかを紹介します。大規模化に伴う開発効率の低下にどのように対応し,技術的負債を返済していったか,そしてメンバーの増加に対応してどのように開発体制を進化させていったかなど,freeeが成長の過程で培ったノウハウを交えて解説します。

目次

特集1
Web APIデザインの鉄則
モバイルアプリからもWebアプリからも使いやすい! ……RESTに沿った設計,明確なデータ構造,適切なエラー

  • 第1章:Web APIの基礎知識
    REST/RPCの特徴を知り,設計の原則を身につける……山口 徹
  • 第2章:リソース設計
    レスポンスの内容を定義し,JSON Schemaで明文化する……山口 徹
  • 第3章:インタフェース設計
    URI,HTTPメソッド,クエリパラメータを定める……山口 徹
  • 第4章:エラー表現とドキュメント
    適切なステータスコードと図を活用してさらに使いやすくする……山口 徹

特集2
はじめてのGo
シンプルな言語仕様,型システム,並行処理

  • 第1章:Go言語の特徴と環境構築
    Googleが作った新言語……Jxck
  • 第2章:基本文法
    覚えやすいコンパクトな言語仕様……Jxck
  • 第3章:型システム
    型を用いた安全なプログラミング……Jxck
  • 第4章:標準パッケージ
    JSON,ファイル,HTTP,HTMLを扱う……Jxck
  • 第5章:並行プログラミング
    ゴルーチンとチャネルを使いこなす……Jxck

特集3
クラウド会計ソフトfreee開発ノウハウ大公開
急成長を支えたコードとプロセスの改善

  • 第1章:クラウド会計ソフトfreeeの全体像
    会計システムの基礎とシステムのアーキテクチャ……佐々木 大輔,横路 隆
  • 第2章:急成長するシステムの課題と処方箋
    アプリケーションの分割と技術的負債の解消……加来 純一,山本 伶
  • 第3章:フロントエンド開発の複雑化への取り組み
    Vue.jsの活用,リアクティブプログラミング……大平 武志,米川 健一,坂本 登史文
  • 第4章:規模の拡大に伴う開発プロセスの変遷
    開発体制,タスク管理,コミュニケーション……若原 祥正,和久田 龍,平栗 遵宜

連載

  • Emerging Web Technology研究室
    【第9回】HubotでChatOps ……チャットbotによる運用の見える化と属人性排除……伊藤 直也
  • Javaの鉱脈 ── 掘り下げて知る活用のワザ
    【第2回】Java 8を活かすJVMオプション ……メモリモデルとGCの進化を理解して安定運用を目指す……佐藤 太一
  • PHP大規模開発入門
    【第3回】安全なコードの書き方 ……エラーと例外処理の活用,PhpStormによる効率化,健全なチーム作り……高橋 俊幸
  • 切りひらくRuby ── サービスの成長を支える現場の技術
    【第2回】チーム開発でのバラツキをなくそう ……gemのバージョン,コーディングスタイル,ドキュメントの書き方の統一……海野 弘成
  • Perl Hackers Hub
    【第28回】Perlの構文解析器の作り方と応用例……五嶋 壮晃,監修:Japan Perl Association
  • Webフロントエンド最前線 ── 流行に踊らされない技術動向
    【第2回】Web ComponentsでUI・機能のコンポーネント化 ……未来のフロントエンドを支える新しいWeb標準……佐藤 歩
  • データベース実践活用
    【第2回】オブジェクト指向アプローチによる変更に強いテーブル設計……吉村 総一郎

コラム

  • Hack the Real World ―― 日常生活を(ちょっとだけ)便利にしよう
    【第2回】Jawbone up24で俺API! ……腕輪型アクティビティロガーで自分の状況をリアルタイムに知らせる……橋本 翔
  • エンジニアの生存戦略
    【第2回】深津貴之 ……アプリ開発者からその先へ……舘野 祐一
  • Software is Beautiful
    【第27回】米国での起業で大切なこと……中島 聡
  • UI/UX未来志向 ── 進化の方向を予測し,今必要なことを知る
    【第9回】ジェスチャ入力は未来のインタフェース?……渡邊 恵太
  • はまちちゃんとわかばちゃんのREADER'S FORUM ―― 読者のページ
    【第33回】……はまちや2,竹原

Technology Flash

  • グラニがC#にこだわる理由
    【最終回】Amazon Web Services+Windowsで構築するハイパフォーマンスWebアプリ開発……河合 宜文

サポート

ダウンロード

■ご注意
  • 本コーナーは,本誌記事参考用資料としてのご提供を目的としております。
  • 本誌記載の内容およびサポートサイトで公開しているサンプルコードに基づく運用の結果について,記事の筆者,プログラムの作者/提供元,(株)技術評論社は一切の責任を負いかねます。ご自身の責任のもと,ご使用ください。
  • 各サンプルファイル/ソースコードには,個別に,ライセンスやREADMEファイルなどで注意事項/制限事項が添付されている場合がございます。その場合,該当のライセンス,注意事項/制限事項を優先して適用とさせていただきますので,ダウンロード後,内容をご確認ください。

特集2「はじめてのGo」

特集3「クラウド会計ソフトfreee開発ノウハウ大公開」

連載

  • 「Emerging Web Technology研究室」で使用されたソースコード
  • 「Javaの鉱脈 ── 掘り下げて知る活用のワザ」で使用されたソースコード
  • 「PHP大規模開発入門」で使用されたソースコード
  • 「Perl Hackers Hub」で使用されたソースコード
  • 「Webフロントエンド最前線 ── 流行に踊らされない技術動向」で使用されたソースコード
  • コラム

  • 「Hack the Real World ―― 日常生活を(ちょっとだけ)便利にしよう」で使用されたソースコード

正誤表

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

(2015年4月2日更新)

コラム「エンジニアの生存戦略」
P.6「デジタルと物理的なデザインを学んだ大学時代」の2つめの深津さんの発言の3行目

デザイン志向
デザイン思考

特集2「はじめてのGo」
第2章「基本文法」
P.60 「値の切り出し」のコード


s := []int{0, 1, 2, 3, 4, 5}
fmt.Println(s[2:4])      // [2 3]
fmt.Println(s[0:len(s)]) // [0 1 2 3 4 5]
fmt.Println(s[:3])       // [0 1 2 3]
fmt.Println(s[3:])       // [3 4 5]
fmt.Println(s[:])    // [0 1 2 3 4 5]


s := []int{0, 1, 2, 3, 4, 5}
fmt.Println(s[2:4])      // [2 3]
fmt.Println(s[0:len(s)]) // [0 1 2 3 4 5]
fmt.Println(s[:3])       // [0 1 2]
fmt.Println(s[3:])       // [3 4 5]
fmt.Println(s[:])    // [0 1 2 3 4 5]

特集2「はじめてのGO」
第2章「基本文法」
P.62 「panic()」のコードの3行目


a := []int{1, 2, 3}
for i := 0; i < 10; i++ {
    if i > len(a) {
        panic(errors.New("index out of range"))
    }
    fmt.Println(a[i])
}


a := []int{1, 2, 3}
for i := 0; i < 10; i++ {
    if i >= len(a) {
        panic(errors.New("index out of range"))
    }
    fmt.Println(a[i])
}

イコールが追加になりました。

特集2「はじめてのGo」
第3章「型システム」
P.65 「メソッド」のコード


func (task Task) String() string {
    str := fmt.Sprintf("%d) %s", task.ID, task.Detail)
    return str
}

func main() {
    task := NewTask(1, "buy the milk")
    task.Finish()
    fmt.Printf("%s", task) // 1) buy the milk 
}


func (task Task) String() string {
    str := fmt.Sprintf("%d) %s", task.ID, task.Detail)
    return str
}

func main() {
    task := NewTask(1, "buy the milk")
    fmt.Printf("%s", task) // 1) buy the milk 
}

正しいコードでは,「task.Finish()」の行がなくなります。

商品一覧