書籍概要

WEB+DB PRESS Vol.131

バックナンバー一覧

発売日
更新日

概要

特集1
[高速|安全|高生産性]
Rust入門
言語の強みをWeb開発に活かす

Rustは,パフォーマンス,信頼性,生産性に重きを置いたプログラミング言語です。習得が難しいという印象を持たれがちですが,フレームワークやツールの充実とともに,Webアプリケーションの開発もしやすくなっています。本特集でRust習得の一歩を踏み出してみませんか?

特集2
保守性・拡張性に優れた関数型言語
はじめてのElixir

本特集では,パターンマッチをサポートする関数型言語Elixirを取り上げます。第1章~第5章でElixirの基礎的な部分を網羅的に解説し,最終章では前章までの知識を活用して実践可能なプロジェクトの作成を行います。Elixirの魅力は,保守性や拡張性に優れた開発が可能であることです。本特集を読むことで,それらを実感してください。

特集3
実装して学ぶHTTP/3
通信の高速化をいかに実現しているか

2022年6月6日,HTTP/3が正式勧告になりました。HTTP/2に存在した数々の問題点が改善されています。なかでも通信の高速化は,Web開発者にもユーザーにも大きなメリットをもたらす重要なポイントです。本特集ではHTTP/3サーバを実装することで,HTTP/3がどのようなしくみで動作しているかを学びます。どういった情報がやり取りされているのか,どういう工夫により高速化を実現しているのか,HTTP/2から進化した点をしっかりと理解できるはずです。

目次

特集1
[高速|安全|高生産性]
Rust入門
言語の強みをWeb開発に活かす

  • 第1章:Rustとはどのような言語か
    言語の特徴と言語仕様の基礎を知ろう……吉川 哲史
  • 第2章:生産性を高める土台を作る
    パッケージ管理兼ビルドツールCargoを使いこなそう……吉川 哲史
  • 第3章:高速,安全なWebアプリケーションを作る
    WebフレームワークActix Webで手軽に作ろう……吉川 哲史
  • 第4章:既存システムに組み込む
    小さく始めてプロダクトにRustの良さを取り込もう……吉川 哲史
  • 第5章:WebAssemblyでフロントエンドを実装する
    バックエンドだけじゃない,Rustの適用可能性……吉川 哲史

特集2
保守性・拡張性に優れた関数型言語
はじめてのElixir

  • 第1章:Elixir入門
    Erlangとの関係,基本操作,データ型……中尾 瑛佑
  • 第2章:関数
    無名関数,名前付き関数,モジュール……橋本 広大
  • 第3章:パターンマッチ
    変数のマッチ,リストのマッチ,タプルのマッチ……隆藤 唯章
  • 第4章:制御構造
    条件分岐,エラーハンドリング,マクロ……鈴木 拓実
  • 第5章:コレクション操作
    Enumモジュール,内包表記,ストリーム……古賀 祥造
  • 第6章:プロジェクト開発
    Mixプロジェクト,ExUnit,ExDoc……田代 創大

特集3
実装して学ぶHTTP/3
通信の高速化をいかに実現しているか

  • 第1章:HTTP/3のしくみを知る
    HTTP/2の問題点をどのように克服しているか……みちすけ
  • 第2章:HTTP/3サーバを作る準備
    ネットワーク設定・証明書の準備・aioquicライブラリの動作確認……みちすけ
  • 第3章:QUICサーバの基本機能を実装しよう
    HTTP/3通信をするための肝となる部分を理解する……みちすけ
  • 第4章:HTTP/3サーバの基本機能を実装しよう
    HTTPヘッダやデータの取得方法を理解する……みちすけ
  • 第5章:さらなるHTTP/3の機能を実装しよう
    代替サーバのしくみ,Retryパケットを理解する……みちすけ
  • Appendix:BayServerの紹介
    「簡単」「軽量」「高速」な国産Webサーバ……みちすけ

連載

  • フロントエンド コンポーネント駆動開発
    【第4回】はじめてのアクセシビリティ改善ガイド ……アクセシビリティツリーを可視化し,UIコンポーネントを改善する ……吉井 健文
  • SREで開発を加速させる ── class SRE implements DevOps
    【第3回】障害との向き合い方 ……障害対応フォーメーションと訓練 ……古川 雅大
  • Goに入りては…… ── When In Go...
    【第33回】Goにおける文字列連結 ……手法によって異なる処理速度と使いどころを知ろう! ……牧 大輔
  • 現場のPython ── システム開発も! 機械学習も!
    【第15回】JanomeとSudachiPyによる日本語処理 ……フリガナを振るプログラム作成を通して自然言語処理の流れを把握する ……鈴木 たかのり
  • PHPで複雑さに立ち向かう
    【第9回】PHPによる非同期・並行処理の実装 ……ノンブロッキングI/O,イベントループ,Promise,コルーチン ……五十嵐 進士
  • Ruby 3標準添付ライブラリ紹介
    【第9回】コマンドラインツールを作る ……Rake/Thor ……西山 和広
  • Javaで考える脱炭素化 ── グリーンなソフトウェアをはじめてみよう
    【第4回】Javaアプリケーションの実行方式を変えれば消費電力は変わるか ……GraalVMのネイティブイメージでもっとグリーンに? ……阪田 浩一
  • Perl Hackers Hub
    【第75回】AWS Lambda入門 ……サーバレスでもPerlを活用しよう! ……一野瀬 翔吾 監修:牧 大輔,福本 貴之,松木 雅幸,大沢 和宏

コラム

  • サバンナ便り ── ソフトウェア開発の荒野を生き抜く
    【第3回】テストサイズ ……自動テストとCIにフィットする明確なテスト分類基準 ……和田卓人
  • 池澤春菜のSF小説の歩き方 ──エンジニアリングの未来を描く名作たち
    【第2回】SFと未来予知,メタバースは予言されていたか……SFプロトタイピング,それは未来の思索&試作 ……池澤 春菜
  • ちょっと気になる隣の技術畑
    【第8回】価値を届けるプロダクトマネジメント ……小城久美子さん ……日高 正博
  • はまちちゃんとわかばちゃんのREADER'S FORUM ── 読者のページ
    【第82回】……はまちや2,竹原

Special Report

  • iOSDC Japan 2022
    ……高田 新山

サポート

ダウンロード

(2022年10月11日更新)

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

特集1「Rust入門」

特集2「はじめてのElixir」

特集3「実装して学ぶHTTP/3」

連載

  • 「フロントエンド コンポーネント駆動開発」
    本記事で使用されたソースコード(執筆者GitHubリポジトリ)
  • 「Goに入りては…… ── When In Go...」
    本記事で使用されたソースコード
  • 「現場のPython ── システム開発も! 機械学習も!」
    本記事で使用されたソースコード
  • 「PHPで複雑さに立ち向かう」
    本記事で使用されたソースコード(執筆者GitHubリポジトリ)
  • 「Perl Hackers Hub」
    本記事で使用されたソースコード

正誤表

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

(2022年10月21日最終更新)

連載「PHPで複雑さに立ち向かう」
P.139 「コールバック(地獄)」の3段落下部のリスト

Loop::get()->onReadable(STDIN, function ($fp) {
  echo '1 ' . fgets($fp);
  Loop::get()->onReadable(STDIN, function ($fp) {
    echo '2 ' . fgets($resource);
    Loop::get()->onReadable(STDIN, function ($fp) {
      echo '3 ' . fgets($resource);
    });
  });
});
Loop::get()->onReadable(STDIN, function ($fp) {
  echo '1 ' . fgets($fp);
  Loop::get()->onReadable(STDIN, function ($fp) {
    echo '2 ' . fgets($fp);
    Loop::get()->onReadable(STDIN, function ($fp) {
      echo '3 ' . fgets($fp);
    });
  });
});

連載「PHPで複雑さに立ち向かう」
P.143 「Fiberによるコルーチン」の2段落下部のリスト

$fiber = new Fiber(function (): void {
  $f = function (): void { // voidでよい
    // suspendで処理を中断
    // 直近で開始or再開した位置へ直接戻れる
    $received = Fiber::suspend('from fiber');
    echo $received, PHP_EOL;
  });
  $f();
});
$fiber = new Fiber(function (): void {
  $f = function (): void { // voidでよい
    // suspendで処理を中断
    // 直近で開始or再開した位置へ直接戻れる
    $received = Fiber::suspend('from fiber');
    echo $received, PHP_EOL;
  };
  $f();
});

商品一覧