Goならわかるシステムプログラミング

最近Golangの勉強をしていて、そういえば昔購入していたのを思い出して読みました。名前の通りOSの各種機能を利用する方法についてGolangを通じて說明しています。特にGolangであるためWindowsmacOSLinuxの共通する部分と異なる部分についての説明があり、GolangだけでなくOSの機能について幅広く学びたい人にもおすすめだと思います。

まずGolangのインストールとVisual Studio Code上での実行方法を說明します。次にGolangのio.Writer、io.Reader、チャネルの説明をした上で、OSの各種機能について說明していきます。どの章もその機能の概念的な説明をした上で、実際にGolangのコードが載っています。また、Golangでの並列処理の実装方法やメモリ管理、時間と時刻の利用方法についても說明しています。詳細な目次は Goならわかるシステムプログラミング – 技術書出版と販売のラムダノート を参照してください。また、書籍の元となった連載記事 ASCII.jp:Goならわかるシステムプログラミング も参考になると思います。

  • 第1章 Go言語で覗くシステムプログラミングの世界
  • 第2章 低レベルアクセスへの入口1:io.Writer
  • 第3章 低レベルアクセスへの入口2:io.Reader
  • 第4章 低レベルアクセスへの入口3:チャネル
  • 第5章 システムコール
  • 第6章 TCPソケットとHTTPの実装
  • 第7章 UDPソケットを使ったマルチキャスト通信
  • 第8章 高速なUnix ドメインソケット
  • 第9章 ファイルシステムの基礎とGo言語の標準パッケージ
  • 第10章 ファイルシステムの最深部を扱うGo言語の関数
  • 第11章 プロセスの役割とGo言語による操作
  • 第12章 シグナルによるプロセス間の通信
  • 第13章 Go言語と並列処理
  • 第14章 並行・並列処理の手法と設計のパターン
  • 第15章 Go言語のメモリ管理
  • 第16章 時間と時刻
  • 第17章 Go言語とコンテナ
  • 付録A セキュリティ関連のOSの機能とssh
  • 付録B 参考文献

OSの各種機能ついてはある程度知っているものもあったのですが、知らないものもあれば知識が古いものもあり、非常に参考になりました。またコンテナの実装などテーマも幅広く、かつ、OS毎の差異についても知ることが出来てとても面白かったです。Golangに関してもサンプルコードがたくさんあったので、こういう機能を実装する際はエラー処理も含めてこんな感じになるだというのがわかってよかったです。初版は2017年の本ですが、2020年まで 更新されている ので、今でも通用する内容だと思います。