書籍概要

WEB+DB PRESS Vol.132

バックナンバー一覧

発売日
更新日

概要

特集1
古い常識を捨て適切に使う
オブジェクト指向神話からの脱却
抽象データ型,ステートマシン,レイヤ構造

オブジェクト指向は1990年代を中心に大流行し開発技術を発展させ,プログラミングにおいて不可欠な技術になりました。その後コンピュータの発展とともにそのままでは適用が難しくなり定義があいまいになっても,「オブジェクト指向を使うと良いプログラムが作れる」といった神話のように扱われています。本特集ではオブジェクト指向技術がどういったものかを解説し,その特性がどのように分解されて現在のプログラミングに適用されているかを明確にすることで,神話のような状況から脱却することを目指します。

特集2
Swift 5.7,Regex,SwiftUI,Charts
iOS 16最前線

2022年9月から10月にかけて,iOS 16,watchOS 9,tvOS 16,iPadOS 16,mac OS Ventura がリリースされました。また,Swift 5.7 とXcode 14も,iOS16と同時にリリースされています。本特集では,iOS 16とSwift 5.7を中心に,これらのアップデートを解説します。

特集3
開発を止めずに安全に移行する
コンテナ化実践ガイド

長く稼働してきたモノリシックなシステムでは開発速度の低下や運用作業の増加が課題になります。コンテナ化やマイクロサービス化でこれらの課題を解決する事例は増えてきましたが,壁の高さを感じて,なかなか一歩が踏み出せずにいる方も多いのではないでしょうか。本特集では,仮想マシンや物理サーバで動いているシステムの開発・運用を続けながらコンテナ化を進めるための具体的なスケジュールの立て方からありがちな落とし穴まで,筆者の実施経験を基に解説します。

目次

特集1
古い常識を捨て適切に使う
オブジェクト指向神話からの脱却
抽象データ型,ステートマシン,レイヤ構造

  • 第1章:オブジェクト指向を見つめなおす
    神話になっているオブジェクト指向……きしだ なおき
  • 第2章:オブジェクト指向機能の基本文法
    クラスによる抽象データ型,継承による構造体の拡張と多態……きしだ なおき
  • 第3章:オブジェクト指向の周辺技術
    オブジェクト指向方法論,分散オブジェクト技術,オブジェクト指向データベース……きしだ なおき
  • 第4章:オブジェクト指向機能の現在の使い方
    オブジェクトの分類に合わせた機能の使い分け……きしだ なおき
  • 第5章:オブジェクト指向言語の変化
    関数型機能の融合,そして神話からの脱却……きしだ なおき

特集2
Swift 5.7,Regex,SwiftUI,Charts
iOS 16最前線

  • 第1章:iOS 16の新機能
    WeatherKit,Focus Filter,Live Text……加藤 尋樹,斉藤 洸紀
  • 第2章:Swift 5.6/5.7のアップデート
    プロトコルのany/some,正規表現,Swift Package plugins……牟田 裕太郎
  • 第3章:SwiftUIの改善
    ナビゲーション,レイアウト,データの受け渡し……加藤 尋樹
  • 第4章:新登場! Swift Chartsフレームワーク
    美しく多彩なチャートの表示……牟田 裕太郎
  • 第5章:超新星! App Intentsフレームワーク
    アプリの機能をシステムに公開……斉藤 洸紀
  • 第6章:大進化! WidgetKitフレームワーク
    ロック画面ウィジェットに対応……斉藤 洸紀

特集3
開発を止めずに安全に移行する
コンテナ化実践ガイド

  • 第1章:あなたのシステムにコンテナ化は必要か?
    コンテナ化をきっかけに歴史の長いシステムを改善する……吉澤 政洋
  • 第2章:コンテナ化の計画を立てる
    必要なタスクを洗い出し,いまコンテナ化を進めるべきか判断する……吉澤 政洋
  • 第3章:アプリケーションを改善する
    サービス提供を続けながらコンテナ化の阻害要因を取り除く……吉澤 政洋
  • 第4章:アプリケーションをコンテナで動作させる
    開発・運用に必要なツールを整備し,テストを実施する……吉澤 政洋
  • 第5章:本番環境にリリースする
    コンテナ版へと段階的に切り替えて,効果測定する……吉澤 政洋

22周年記念エッセイ
私が大切にしていること
これだけは譲れない,私を形作る信念

  • 第1章:食わず嫌いはNo!
    未知の世界があなたの理想郷かも……朝日 リナ
  • 第2章:常に論理的に,正しくあれ
    ベストな道を選択するための考え方……鈴木 僚太(うひょ)
  • 第3章:現場でコードを書き続ける
    設計力を高めるために目の前の課題と向き合う……川島 義隆

連載

  • PHPで複雑さに立ち向かう
    【第10回】PHP 8.2の新機能・変更点を追う ……readonlyクラス,DNF型,新たな乱数機能など……五十嵐 進士
  • Javaで考える脱炭素化 ── グリーンなソフトウェアをはじめてみよう
    【第5回】プログラミング言語の違いで消費エネルギーは変わる?? ……Java vs. Python vs. GraalPython三つ巴戦……末永 恭正,佐藤 雄太
  • フロントエンド コンポーネント駆動開発
    【第5回】FigmaとStorybookを強力に連携する ……デザインデータと実装状況の同期……吉井 健文
  • Goに入りては…… ── When In Go...
    【第34回】sync/atomicによる変数操作 ……排他制御とその使いどころ ……牧 大輔
  • Ruby 3標準添付ライブラリ紹介
    【第10回】文字コードを変換する ……Kconv/NKF/Encoding……西山 和広
  • 現場のPython ── システム開発も! 機械学習も!
    【第16回】structlogで効率的に 構造化ログを出力 ……横断的に検索・解析しやすいしくみを整える……吉田 花春
  • SREで開発を加速させる ── class SRE implements DevOps
    【第4回】パイプライン形式のSLI実装の基礎 ……複雑なシステム構成での適切なサービスレベル指標の見つけ方……古川 雅大
  • Perl Hackers Hub
    【第76回】コーディングを楽にするPerl Navigator ……便利機能をエディタに簡単導入! ……岡林 大 監修:牧 大輔,福本 貴之,松木 雅幸,大沢 和宏

コラム

  • 池澤春菜のSF小説の歩き方 ──エンジニアリングの未来を描く名作たち
    【第3回】古今東西,SFが描いたAIたち ……AIは人類の相棒か,それとも……?……池澤 春菜
  • サバンナ便り ── ソフトウェア開発の荒野を生き抜く
    【第4回】テストダブル ……忠実性と決定性のトレードオフを理解する……和田卓人
  • ちょっと気になる隣の技術畑
    【第9回】キーボードに魅せられた人々 ……森下篤(74th)さん……日高 正博
  • はまちちゃんとわかばちゃんのREADER'S FORUM ── 読者のページ
    【第83回】……はまちや2,竹原

サポート

ダウンロード

(2022年12月14日最終更新)

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

特集2「iOS 16最前線」

連載

  • 「PHPで複雑さに立ち向かう」
    本特集で使用されたソースコード(執筆者GitHubリポジトリ)
  • 「Javaで考える脱炭素化 ── グリーンなソフトウェアをはじめてみよう」
    本記事で使用されたソースコード
  • 「フロントエンド コンポーネント駆動開発」
    本特集で使用されたソースコード(執筆者GitHubリポジトリ)
  • 「Goに入りては…… ── When In Go…」
    本記事で使用されたソースコード
  • 「現場のPython ── システム開発も! 機械学習も!」
    本記事で使用されたソースコード
  • 「Perl Hackers Hub」
    本記事で使用されたソースコード

正誤表

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

(2023年1月12日最終更新)

連載「Goに入りては……」
P.136 1つ目のコードブロック

func Load() int32 {
  m.Lock()
  v := count // これを実行できるgoroutineは常に1つ
  m.Unlock()
  return v
}
func Load() int32 {
  mu.Lock()
  v := count // これを実行できるgoroutineは常に1つ
  mu.Unlock()
  return v
}

(以下2023年1月11日更新)

特集1「オブジェクト指向神話からの脱却」
第5章「オブジェクト指向言語の変化」
P.41 注3

http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay_oop_en
https://www.purl.org/stefan_ram/pub/doc_kay_oop_en

(以下2023年1月4日更新)

連載「PHPで複雑さに立ち向かう」
P.113 「readonlyクラス」の1つ目のコード

readonly class C {
    public function __construct() {
        public string $s,
        public int $i,
    }
}
readonly class C {
    public function __construct(
        public string $s,
        public int $i,
    ) {
    }
}

連載「PHPで複雑さに立ち向かう」
P.113 「readonlyクラス」の2つ目のコード

class C {
    public function __construct() {
        public readonly string $s,
        public readonly int $i,
    }
}
class C {
    public function __construct(
        public readonly string $s,
        public readonly int $i,
    ) {
    }
}

連載「PHPで複雑さに立ち向かう」
P.113~114 「新たな乱数拡張」の1つ目のコード

// 配列をランダムな順へ並べ替え
var_dump($r->shuffleArray('abcdefg'));
// 配列をランダムな順へ並べ替え
var_dump($r->shuffleArray(['a', 'b', 'c', 'd']));

商品一覧