[内容紹介]
【第1特集】QAも、アプリ開発者も
テストの設計してますか?
新しいソフトウェアテスト講座
近年のソフトウェア開発では、テスト駆動開発(テストファースト)の一環で開発者自身がテストを行ったり、自動化できるテストはCI/CDの中で実行されたり、開発プロセスの中にテストが組み込まれてきています。テストは開発の後半に実施するものという考え方は古くなりつつあります。開発プロセス全体に関わってくる以上、QA(品質保証)担当者だけでなく、開発担当者も基本的なテストプロセスやテスト技法について知っておく必要がありそうです。
すべてのITエンジニアが把握しておくべき知識として、現代におけるテスト設計の基本を整理し、提示します。
【第2特集】あなたのサービスは大丈夫?
ゼロから学ぶWeb APIセキュリティ
攻撃から始める設計対策
今やWeb APIはWebサービス開発と切っても切れない関係です。それゆえにサイバー攻撃の対象にも容易になり得ます。攻撃事例も数多く報告されており、セキュリティ対策は急務と言えるでしょう。ですが、いざ対策しようとすると、想像以上に配慮する必要のある箇所が多く、途方に暮れた人もいるのではないでしょうか。そんなあなたのために、本特集ではWeb APIセキュリティのノウハウを集めました。第1、2章ではWeb APIに潜むセキュリティリスクと重要なセキュリティのポイントを紹介し、第3、4章では「脆弱性」と「認証・認可」の2点で対策の心得を伝授します。この機会にぜひ、ご自身のWeb APIについて、一度見直してみてください。
[目次]
■特集
【第1特集】テストの設計してますか?
第1章 ソフトウェアテストとは何か?/風間 裕也
第2章 テスト技法の基礎/谷崎 浩一
第3章 探索的テストで短時間で効率よくバグを見つける/根本 紀之
第4章 シフトレフトテストを支える現代的なテスト設計/井芹 洋輝
【第2特集】ゼロから学ぶWeb APIセキュリティ
第1章 Web APIに潜むセキュリティリスク/石川 朝久
第2章 Web APIセキュリティの重要ポイント/徳丸 浩
第3章 脆弱性/松本 隆則
第4章 認証・認可/川村 修平
【特別企画】
表紙で振り返るSoftware Designの歩み/編集部
【特別広報】
グローバルへ挑戦するココネのエンジニアリング力を探る/編集部
■連載
ITエンジニア必須の最新用語解説/杉山 貴章
平林万能IT技術研究所 2ndシーズン/平林 純
ドメイン解体新書/谷口 元紀
ハピネスチームビルディング/小島 優介
エンジニアのためのやる気UPエクササイズ/えくろプロテイン
あなたの知らないChromeの世界/小河 亮
Google Cloud流クラウドネイティブなシステムデザインパターン/北野 敦資、(監修)阿部 正平
ぼくらの「開発者体験」改善クエスト/高山 温
実践データベースリファクタリング/曽根 壮大
Cloudflare Workersへの招待/福岡 秀一郎
実践LLMアプリケーション開発/西見 公宏
画像解析AIの作り方/高木 優介
MLOpsのすすめ/澁井 雄介
位置情報エンジニアリングのすすめ/小島 聖
なるほど納得Go言語/崎原 晴香(H.Saki)
AWS活用ジャーニー/杉金 晋
現場から学ぶAWSのクラウドセキュリティ/花塚 亮祐
魅惑の自作シェルの世界/上田 隆一
あなたのスキルは社会に役立つ〜エンジニアだからできる社会貢献〜/武貞 真未、田中 伶奈
ひみつのLinux通信/くつなりょうすけ
TCP/IP&ネットワークコマンドの解説書。『Linux×コマンド入門』(技術評論社、2021/04)、『macOS×コマンド入門』(技術評論社、2020/4)の姉妹本です。
本書では、TCP/IP&ネットワークの今の基本を押さえ、ネットワークコマンドや各種ツールの基礎知識や作法を平易に解説。コマンドやWiresharkなどのツールを使って、TCP/IPのしくみ&ネットワークの基本概念を手を動かして実際の動作を見ながら学べる点が特徴です。動作確認環境としてはLinux(Ubuntu)を中心に、Windows/WSL2、macOSに対応。コマンドラインがはじめての方でも試せるようにサポートサイトも用意しました。変わる基本、変わらない基本を広く初学者の方々へ。スマートフォン、Wi-Fi、無線通信をはじめとしたコンピューターネットワークの今を気軽に体感できる1冊です。
コマンドを使えば開発はもっと楽しくなる!新人のITエンジニアにとって開発現場でぶつかる壁の1つが、通称「黒い画面(CLI/CUI)」でのコマンド操作です。グラフィカルなUIに慣れ親しんだ若手のエンジニアの中には、得体のしれないCLIの操作に苦手意識や恐怖感を持っている人も多いのではないでしょうか。本書はそんな「黒い画面が怖い!」という新人エンジニアや学習者に向けて、CLIやコマンドとの付き合い方・活用法をやさしく解説する入門書です。黒い画面にまつわる用語、基本的なコマンドの使い方や書式(コマンドプロンプト、PowerShell、WSL)、コマンドを使った作業効率化の手法(シェルスクリプト、ワンライナー)など、エンジニアとして開発に取り組む上でおさえておきたい知識と技術を、実践例とともにわかりやすく解説しています。
サーバ管理者が押さえておくべきLinuxコマンドとLinuxサーバの基礎的な知識を解説しました!
本書は、サーバ管理者やプログラム開発者などのエンジニアを目指す方のためのLinux とサーバ管理の入門書です。大きく次の二つの内容で構成しています。
(1)Linuxコマンドと使い方を解説
(2)Linuxサーバーの基礎知識を解説
基本的にデスクトップ環境を使用したGUI 操作はやったことがあるものとして、「端末」アプリなど端末エミュレータでのコマンドライン操作をベースに解説しています。もちろん、大学や専門学校の学生がLinuxのようなUNIX系OSのコマンド操作やサーバ管理を学びたいといった場合にもお薦めです。
Linux には現在、さまざまなディストリビューションがあり、用意されているパッケージの種類やその内容、ファイルシステムの構造などが若干異なります。本書では次の2つのディストリビューションを基本に解説しています。
(1)Ubuntu
(2)Red Hat Enterprise Linux(RHEL)
コマンドの実行例を挙げながら解説しているので、実際に手元のLinux環境で試しながら読み進めてください。UbuntuとRHELのインストール方法は、電子版をサポートサイトでダウンロードできます。
Chapter1 Linuxの概要
LinuxとはどんなOSなのかを説明します。その後で、「端末」アプリを使用した、CUIコマンドの基本的な実行方法について説明します。
Chapter2 コマンドの基本操作
コマンド操作はサーバ管理には必須です。「端末」アプリを利用したCUIコマンドの実行方法とシェルの操作について説明します。
Chapter3 CUIエディタの操作
CUIで動作するエディタの操作方法もサーバ管理には必須のスキルです。代表的なCUIエディタであるnanoとvimを説明します。
Chapter4 シェルを活用するための基礎知識
ファイルのパーミッションの取り扱い、ジョブ制御、シェルの環境設定、シェルスクリプトの基礎を解説します。
Chapter5 システム管理の基本
ユーザ/グループの管理、サービスの管理、ソフトウエアのバイナリパッケージの取り扱いを解説します。
Chapter6 ネットワークの活用方法
ネットワークの設定、ファイアウォールの設定、Sambaを使用したファイル共有、SSHサーバを使用したリモートログインとファイル転送を解説します。
Chapter7 ApacheによるWebサイトの構築方法
オープンソースのWebサーバアプリ「Apache」を使用したWebサイトの構築方法を解説します。
Chapter8 Dockerによる仮想環境の構築方法
Ubuntuで「Docker」(ドッカー)を使用したコンテナ型仮想環境の構築方法を解説します。
付録
Document1 コマンド操作の応用
Document2 WordPress によるブログサイトの構築方法
Document3 Ubuntu とRHEL のインストール
「サーバー故障やヒューマンエラーに備えるには?」
「アクセス数の増加時にパフォーマンスを保つには?」
「異常検知をして復旧するには?」
運用・管理における長く役立つ視点を、実践経験豊富なエンジニアがどのように動いているのかをふまえて解説。
本書では、MySQLサーバーの稼働状況の確認方法といった基礎知識を始め、アカウントの権限の評価順序や認証プラグインなど、運用管理者として知っておくべき知識をまず身につけます。そして、正規化プロセスの基本、CRUDを支える仕組み、ロックの仕組みといった、内部構造について理解を深めます。
そのあと、多くのクエリ実行計画を読み解くので、どのようにクエリを書き換え、どの順番でインデックスを使って処理をしてコストを最小にするのかといった、オプティマイザの考え方がわかるようになるでしょう。レプリケーション、バックアップとリストア、監視など、障害発生に対応するためのノウハウも詰め込みました。
現場で通用する知識の地固めをしたい方、より良い運用・管理のためのポイントを知りたい方におすすめの1冊です。
[内容紹介]
【第1特集】型を制する者はTypeScriptを制す
もっとTypeScriptの力を引き出そう
設計を変革するUnion型、構造的部分型
TypeScriptは大規模開発を目的として、静的型付けの機能を中心にJavaScriptを拡張した言語だと言われています。ですが、TypeScriptの型システムが秘めている力はそれにとどまりません。
本特集では、TypeScriptにおける型の扱い方を基礎から解説し、TypeScriptを本格的に使ううえで避けて通れないUnion型、構造的部分型との付き合い方を紹介します。さらに、発展的なトピックとしてMapped Typesという型表現を取り上げます。TypeScriptを初めて触る方も、ある程度使っている方も、ぜひご一読ください。
【第2特集】WSL、コンテナ、選択肢はいろいろ
Ubuntuで開発環境を整備
現代的な使い方&24.04 LTSレポート
2024年4月にLinuxディストリビューションUbuntuの新バージョンである24.04 LTS“Noble Numbat”がリリースされます。これに合わせて、本誌恒例、新LTSの変更点や新機能の紹介を行います。
また、近年、UbuntuはWSL2(Windows Subsystem for Linux 2)やコンテナなどさまざまな形態で使われています。「何気なく触っていたLinux環境がじつはUbuntuだった」というくらい、Ubuntuは開発や運用の現場に広まってきています。そこで、Ubuntuを開発環境として使う場合の選択肢や導入の手引きを整理しました。一番快適な利用形態はどれでしょう? 自分にベストな開発環境探しの参考にどうぞ。
[目次]
■特集
【第1特集】もっとTypeScriptの力を引き出そう
第1章 TypeScriptの力を引き出すための基本/雫石 卓耶
第2章 TypeScriptの型を正しく扱う/鹿野 壮
第3章 Union型でより正確に設計する/うひょ(鈴木 僚太)
第4章 構造的型付けで型同士の関係を操る/suin
第5章 実践Mapped Types/mizchi(竹馬 光太郎)
【第2特集】Ubuntuで開発環境を整備
第1章 開発環境としてのUbuntu/水野 源
第2章 Ubuntu 24.04 LTS Serverの変更点/柴田 充也
第3章 Ubuntu 24.04 LTS デスクトップの変更点/あわしろいくや
■連載
ITエンジニア必須の最新用語解説/杉山 貴章
万能IT技術研究所/万能IT技術研究所
ドメイン解体新書/谷口 元紀
ハピネスチームビルディング/小島 優介
エンジニアのためのやる気UPエクササイズ/えくろプロテイン
レガシーシステム攻略のプロセス/高橋 智也、瀬尾 直利
Databricksで勝つデータ活用/宇田川 聡
あなたの知らないChromeの世界/小河 亮
Google Cloud流クラウドネイティブなシステムデザインパターン/江藤 弘、監修:高鳥 智正
ぼくらの「開発者体験」改善クエスト/石井 幸次
実践データベースリファクタリング/曽根 壮大
Cloudflare Workersへの招待/井手 優太
実践LLMアプリケーション開発/西見 公宏
MLOpsのすすめ/澁井 雄介
位置情報エンジニアリングのすすめ/小松 聖
AWS活用ジャーニー/杉金 晋
魅惑の自作シェルの世界/上田 隆一
あなたのスキルは社会に役立つ〜エンジニアだからできる社会貢献〜/大菊 健太
LinuCは、LPI-Japanが提供するLinux技術者認定資格試験です。日本の大手IT企業などを中心に採用・導入が進んでいます。本書はこのLinuC試験のうち、2020年4月に試験が改定されたLinuCレベル1バージョン10.0(101試験、102試験)の出題範囲をカバーする教科書です。実績ある講師によるわかりやすい解説で、資格取得に必要な確かな力を身につけることができます。改訂新版では、学習用OSとして仮想環境で動作するAlmaLinuxおよびDebian GNU/Linuxのイメージをダウンロード提供します。学習用環境を利用することで、コマンドの実行や設定ファイルの編集など、実際に手を動かしながら学ぶことが可能です。
■基礎編 Linuxの基本
Linuxカーネルとディストリビューション
仮想化環境の利用
Linuxのディレクトリ構造
Debian(CUI)環境へのログインとrootユーザー
AlmaLinux(GUI)環境へのログインと端末の起動
コマンド端末の使い方
主な基本コマンド
■1章 Linuxのインストールと仮想マシン・コンテナの利用
1.1 Linuxのインストール/起動/接続/切断/停止
1.2 仮想マシン・コンテナの概念と利用
1.3 ブートプロセスとsystemd
1.4 プロセスの生成/監視/終了
1.5 デスクトップ環境の利用
■2章 ファイルとディレクトリの操作と管理
2.1 基本的なファイル管理の実行
2.2 ファイルの所有者とパーミッション
2.3 ハードリンクとシンボリックリンクの作成
2.4 ファイルの配置と検索
■3章 GNUとUnixのコマンド
3.1 コマンドラインの動作
3.2 フィルタを使ったテキストストリームの処理
3.3 ストリーム、パイプ、リダイレクトの使用
3.4 正規表現を使用したテキストファイルの検索
3.5 エディタを使った基本的なファイル編集の実行
■4章 リポジトリとパッケージ管理
4.1 アプリケーション管理
4.2 aptコマンドによるパッケージ管理
4.3 Debianパッケージ管理
4.4 yumコマンドによるパッケージ管理
4.5 RPMパッケージ管理
■5章 ハードウェア、ディスク、パーティション、ファイルシステム
5.1 ハードウェアの基本知識と設定
5.2 HDD/SSDのレイアウトとパーティション
5.3 ファイルシステムの作成/管理/マウント
■101試験模擬問題
■6章 シェルおよびスクリプト
6.1 シェル環境のカスタマイズ
6.2 シェルスクリプト
■7章 ネットワークの基礎
7.1 インターネットプロトコルの基礎
7.2 基本的なネットワーク構成
7.3 基本的なネットワークの問題解決
7.4 クライアント側のDNS設定
■8章 システム管理
8.1 アカウント管理
8.2 ジョブ管理
8.3 ローカライゼーションと国際化
■9章 重要なシステムサービス
9.1 システム時刻の保守
9.2 システムのログ
9.3 メール配送エージェント(MTA)の基本
■10章 セキュリティ
10.1 セキュリティ管理業務の実施
10.2 ホストのセキュリティ設定
10.3 暗号化によるデータの保護
10.4 クラウドセキュリティの基礎
■11章 オープンソースの文化
11.1 オープンソースの概念とライセンス
11.2 オープンソースのコミュニティとエコシステム
■102試験模擬問題
Linux初心者でも安心して学習できます。イラストをたくさん使って説明しています。大きな文字で読みやすい紙面です。
本書では、Raspberry PiのOSセットアップからLinuxの基本操作、電子工作用のプログラミング学習、電子工作の実践まで、初心者に分かりやすいように内容を省略せずきっちり解説しています。
「ラズ・パイ超入門」の特長は、とにかく「初心者にわかりやすい」ことです。
巷の電子工作の本は意外と不親切な作りのものが多く、ある程度の予備知識があることを前提に書かれているものが多いのですが、本書は回路図はじめ徹底的に図解で説明し、初心者が戸惑う部分を排除しています。
Part1 Raspberry Piとは
Part2 Raspberry Piを動作させよう
Part3 Raspberry Piの操作と設定
Part4 小型LinuxマシンとしてRaspberry Piを利用
Part5 プログラムを作ってみよう
Part6 電子回路をRaspberry Piで制御する
Part7 I2Cデバイスを動作させる
Part8 Raspberry Piの応用
Appendix 付録(Linuxコマンドリファレンスなど)
従来型サーバからクラウドネイティブ型サーバの構築に至るまで、RHEL9互換OSにおける最新のサーバ構築手法を解説。
Linuxにおいてカーネル寄りの話になると、あれもこれもよく分からずにパニックになってしまう人が多いです。
本書では、そのような人に向けて、LinuxやLinuxカーネルとは何かなどの基礎的な部分をはじめ、自分の手でLinuxの環境構築を行ない、
ソースコードを読み込む方法を解説。
20年以上Linuxカーネルに取り組んできた著者が、苦い経験をもとに積み上げた知識とノウハウをこの一冊に濃縮しました。
はじめに
第1章 Linuxカーネルの基本
[1.1] Linuxとはなにか
[1.2] Linuxはどんなところで使われているか
[1.3] Linuxカーネルとはなにか
[1.4] オープンソースとライセンス
[1.5] Linuxカーネルはどうやって学べばいいのか?
第2章 ログ・ソースコードの確認
[2.1] Rust
[2.2] ログとソースコード
第3章 Yocto
[3.1] Linuxシステムを構築する
[3.2] ドキュメント
[3.3] Yoctoが提供するもの
[3.4] ビルドの流れ
[3.5] ソースコードを手動でビルドしてみる
[3.6] レシピ
[3.7] 環境構築を始める
[3.8] Ubuntuのセットアップ
[3.9] Yoctoのビルド環境構築
[3.10] Yoctoのビルド準備
[3.11] Yoctoのビルド
第4章 Linuxの起動とビルド
[4.1] Linuxの起動
[4.2] ファイルの送受信
[4.3] ビルド物件
[4.4] レシピを作ってみる
第5章 UbuntuのBIOS破壊問題を振り返る
[5.1] きっかけ
[5.2] どのような問題だったか
[5.3] Ubuntu公式によるバグレポートを解釈する
[5.4] 再現条件にBIOSが含まれる?
[5.5] フラッシュメモリを理解する
[5.6] フラッシュメモリを制御する
[5.7] フラッシュメモリのライトプロテクト
[5.8] 発生条件をまとめる
[5.9] カーネルパッチの読み方
[5.10] ICHを理解する
[5.11] PCHを理解する
[5.12] BARを理解する
[5.13] RCBAを理解する
[5.14] LPCインターフェイスを理解する
[5.15] SPIフラッシュメモリを理解する
[5.16] SPIフラッシュメモリの区分け
[5.17] デバイスドライバの実装を読む
[5.18] probe処理
[5.19] SPI領域へのアクセス
[5.20] 問題の実装をチェックする
[5.21] BIOS Write Enableの意味
[5.22] SMMを理解する
[5.23] 根本原因を探る
あとがき
索引
本書は、「Linux(リナックス)」の心臓部にあたるカーネルについて理解を深め、Linuxを本格的に学ぶ人のための「初めて読むLinuxカーネルの専門書」です。1991年に一人の大学生が趣味で開発を始めたLinuxというOSは、今や、あらゆる分野で使われていると言っても過言ではありません。組み込み機器やスマートフォンなどのモバイル機器、パソコンのOSとしてはもちろん、スーパーコンピュータのOSとしても使われています。
LinuxのカーネルはOSS(Open Source Software)として開発されていて、ソースコードがすべて公開されています。そのソースコードを調べれば、機能の詳細や動作の仕組みが分かりますし、改造して好きなようにカスタマイズすることもできます。
本書の狙いは、Linuxカーネルについて知りたい方に、学習の「入り口」を提供することです。まずはカーネルの全体像を把握して実験できるように、概要解説とモジュールの管理方法、ビルド手順の紹介から始めています。後半では、主だった機能をピックアップし、動作に必要なハードウエアに関するものを含めて仕組みをやや詳しく解説しています。
今回改訂した第2版では、カーネルやディストリビューションの変化に合わせて内容をアップデートすると共に、「プロセス間通信」「仮想化機能」についての解説を追加しました。
第1章 Linux カーネルの基礎
第2章 Linux カーネルのモジュール管理
第3章 Linux カーネルのビルド方法
第4章 タスクスケジューラの仕組み
第5章 仮想メモリーを実現する仕組み
第6章 コンテキストスイッチの仕組み
第7章 物理メモリー管理の仕組み
第8章 ファイルシステムの仕組み
第9章 プロセス間通信の仕組み
第10章 仮想化機能「KVM」の仕組み
ソフトウェアの開発・利用において、カーネルのような根幹部分について理解せずにすむのがOSの役割ではあるものの、エンジニアとしてはこうしたシステムの根本的な仕組みを知り、具体的にイメージできることが大きな強みになります。本書では、長くLinuxカーネルを扱ってきた著者陣が、スケジューリングやメモリ管理など古典的なOS機能はもちろん、VMやコンテナ、セキュリティ機能など、より新しい内容も幅広く、多くのイラストを交えて解説します。これまで専門的な知識がなければなかなかアプローチできなかったLinuxカーネルの構造や仕組み、働きについて、さまざまな視点から解説する一冊といえるでしょう。
ステップアップ学習で初心者でも理解できる!つまずきポイントを動画でフォロー!
Raspberry Pi(ラズパイ)を使うのが、まったくの初めての人でも理解できる入門書です。
ラズパイ専門誌の「ラズパイマガジン」やLinux専門誌の「日経Linux」に掲載した記事を選りすぐり、再検証・再編集してまとめました。
全ての記事は最新モデル「Raspberry Pi 5」(ラズパイ5)で動作確認済みなので、最新モデルを購入した人にも、すぐに試せます。
■第1章ではラズパイの買い方やOSの導入方法、電子工作の基礎知識などラズパイを始めるための基本を解説。さらに最初のステップとしてラズパイをLinuxマシンとして楽しむためのフリーソフトを50本、紹介しています。
■第2章ではラズパイを電子工作の用途で使う方法を紹介しています。電子工作が初めてでも何から始めればよいのかが分かるように記事を構成しています。
■第3章では電子工作以外のラズパイの活用方法を紹介しています。具体的には、公式カメラモジュールの使い方、ミニサイネージの電子工作、AI画像認識で動くリモコンカーの電子工作、ファイル共有+動画配信サーバーの構築です。
■第4章では「ラズパイマガジン」でも好評だった連載漫画を転載しました。
≪目次≫
第1章 ラズパイを準備しよう
1.1 ラズパイと周辺機器の買い方からOS導入方法、工作基礎まで解説
1.2 厳選フリーソフト50選 導入もバーションアップも簡単!
1.3 I/O、CPUが高速になったラズパイ5 「NVMe」対応でSSDアクセスは2倍速に
第2章 ラズパイで電子工作
2.1 ラズパイ5完全対応 電子工作の始め方
2.2 ラズパイPicoWでネットワーク電子工作
第3章 ラズパイを活用しよう
3.1 Raspberry Pi Cameraで遊んでみよう
3.2 SDカード付きサイネージを楽々実現 ArduinoライブラリでラズパイPicoを動かす
3.3 ラズパイ&AIによる画像認識で アームクローラーを制御しよう .
3.4 「ファイル共有+動画配信」サーバーを1台のラズパイZeroの上に構築しよう
第4章 マンガ「女子校生とラズベリーパイ」
第1話 100m走の測り方(その1)
第2話 100m走の測り方(その2)
コラム ラズパイで使えるLinuxコマンド
ファイル・フォルダー操作編
コマンド実行・テキスト編
アプリ・ネットワーク編