Software Design 2020年6月号

今号の特集概要

第1特集
入門! Rust
メモリ安全とパフォーマンスを両立するしくみとは?

関数型言語の安全性,オブジェクト指向型言語の開発のしやすさ,C/C++にも引けをとらない実行速度を兼ね備えた「Rust」。高いパフォーマンスが求められるプロダクトで採用が始まっており,今後も多くの企業で導入が進むであろう躍進間違いなしのプログラミング言語です。そんなRustですが,さまざまな言語の良いとこ取りの反面,習得のためには越えるべき壁もあります。
本特集ではRustについて,入門から実際の開発までカバーしつつ,Rust習得の壁である「所有権」「トレイト」といった概念について,他のプログラミング言語と比較しながら解説します。この機にぜひ,Rustに入門しましょう!

第2特集
プロフェッショナルに訊く
テストコードの流儀

テストの自動化なんて,自分のプロジェクトでは絶対できない!――そんなふうに思ってしまうのは,自動テストに関する理解不足や,ご自身の自動テストに対する高すぎる理想が原因かもしれません。
テスト自動化のメリットはアプリケーションの品質を担保するだけではありません。開発や保守にかかる工数を減らし,設計の手助けをする攻めのツールにもなり得ます。だからといって「すべてのテストを自動化する」と気負いすぎてはうまくいきません。
本特集では,テスト自動化のメリットを享受しつつも,無理なく実践できるポイントを紹介します。読んだあとには,テスト自動化のハードルは意外と低く感じられることでしょう。

第3特集
低レイヤソフトウェア開発入門(後編)
Linuxカーネルを読み解く,OS・ベアメタルアプリを創る

本誌2020年5月号の特集2では,Linuxカーネルへのコミット方法をはじめ,ハードウェアに近い部分でのプログラミング方法について紹介しました。今回は,さらに深く「低レベルソフトウェア開発」を解説します。まず,第1章の「ベアメタルプログラミング入門(後編)」では,Linuxが提供しているユーザー空間I/Oを取り上げ,直接ハードウェアをコントロールする方法を解説します。そして第2章では,自作OSの視点から不揮発性メモリのNon-Volatile DIMM(NVDIMM)を手がかりにハードウェアレベルのプログラミングを解説します。

短期連載
はじめよう,高速E2Eテスト
【1】Seleniumで体験するE2Eテスト――速度の課題と並列化による対策

本連載では,完成したアプリケーションをユーザー目線で検証するE2E(End to End)テストを取り上げます。E2Eテストはその特徴から,開発・リリースのボトルネックになりがちですが,並列化による高速化という手段があります。第1回では,Seleniumによる簡単なテストシナリオの実行,並列化を体験します。

短期連載
スタートアップのためのAWSテクノロジー講座
【2】コンテナ導入に向けた現実的な方法を知る

昨今注目を集めるコンテナ技術ですが,適切な技術選定を行い正しく活用するには,さまざまな考慮が必要です。本連載では,AWSのソリューションアーキテクトが,コンテナ技術をより良く扱うためのノウハウを提供します。第2回では,コンテナとコンテナオーケストレーションツールの役割の違いや具体的な移行ステップを通して,「導入に向けた現実的な方法」について解説します。

目次

第1特集
入門! Rust
メモリ安全とパフォーマンスを両立するしくみとは?

  • 第1章:信頼性と効率性を兼ね備えた言語
    Rust[超]入門
    …… 松本 健太郎
  • 第2章:安全で高パフォーマンスなプログラムのための
    イミュータブルな変数と所有権
    …… 原 旅人
  • 第3章:Rustらしい抽象化プログラミングのための
    ジェネリクスとトレイト
    …… 原 旅人
  • 第4章:Rustの開発の流れを体験
    Cargoでクレートを作ってみる
    …… 松本 健太郎

第2特集
プロフェッショナルに訊く
テストコードの流儀

  • …… 伊藤 淳一
  • 第1章:なぜテストを書くの?
    テストコードの7つの役割
  • 第2章:改善すべきポイントがわかる!
    テストが書けない人に贈る6つの処方箋
  • 第3章:失敗例から“良いテスト”を紐解く
    テストコードのアンチパターン

第3特集
低レイヤソフトウェア開発入門(後編)
Linuxカーネルを読み解く,OS・ベアメタルアプリを創る

  • 第1章:ユーザー空間I/Oを武器に低レイヤを探検
    ベアメタルプログラミング入門(後編)
    …… 粟本 真一
  • 第2章:CPUの動作を深く知る方法
    自作OSからさわって理解するNVDIMM
    …… hikalium

一般記事

  • [短期連載]はじめよう,高速E2Eテスト
    【1】Seleniumで体験するE2Eテスト――速度の課題と並列化による対策…… 末村 拓也
  • [短期連載]スタートアップのためのAWSテクノロジー講座
    【2】コンテナ導入に向けた現実的な方法を知る…… 松田 和樹

連載

  • ITエンジニア必須の最新用語解説
    【138】Contract for the Web……杉山 貴章
  • 【新連載】Unveil it! 開ければわかる!
    【1】AirPods Proを分解する……清水 洋治
  • 結城浩の再発見の発想法
    【85】指数関数的爆発……結城 浩
  • [試して理解]Linuxのしくみ
    【26】Linuxのコンテナ技術……武内 覚
  • 【新連載】ちょうぜつえんじにあめもりーちゃん
    【1】ハローワールドプログラミングってなんだっけ?……田中ひさてる
  • 宮原徹のオープンソース放浪記
    【52】OSunC川越でオンライン開催に挑戦してみました……宮原 徹
  • 【新連載】めそ子が聞く!!
    【1】クラウドって危険なの?……クラスメソッド 豊崎(作),エクスデザイン ninnzinn(画)
  • ひみつのLinux通信
    【76】SSHを使えない人がいてね……くつなりょうすけ
  • 【新連載】MySQLアーキテクチャの探究
    【1】MySQLのアーキテクチャの全体像……梶山 隆輔
  • Ansible問題解決マップ
    【11】Moleculeによるテスト自動化で「確認」の課題を解決する……中島 倫明
  • iPhone&Androidで動く! スマホARアプリ開発入門
    【11】AR写真機能の追加……高橋 憲一
  • 作品で魅せるGoプログラミング
    【17】抽象構文木入門 Bitcoinメッセージの変換関数を生成する……十枝内 直樹
  • Visual Studio Code快適生活
    【20】Visual Studio Codeの設定を複数のデバイス環境で同期しておこう……職業「戸倉彩」
  • Vimの細道
    【51】Language Server Protocolを深掘り(coc.nvim・後編)……mattn
  • 【新連載】月刊Fedoraジャーナル
    【1】Fedora/RHEL/CentOSの関係性……小島 啓史
  • Monthly News from jus
    【104】秋の関西2連戦 ~UNIX歴史講座 & AWS IAM設計~……法林 浩之
  • Hack For Japan+Code for Japan~あなたのスキルは社会に役立つ
    【102】新型コロナウイルスとシビックテックコミュニティの武器……古川 泰人