woshidan's blog

あいとゆうきとITと、とっておきの話。

技術書典7で出した新刊「実行環境ランタイムパッケージ」の紙版からの修正箇所

norakann.booth.pm

技術書典7で出していた上記の書籍の紙版を電子版に直す際に出てきた訂正箇所のまとめです。

今回はそれほど大きな修正箇所はなく、ニュアンス調整・補足と追加で確認したら大丈夫だったよ、という箇所のお知らせです。

「追加で確認したら大丈夫だったよ」という箇所について、追加確認に用いたリンカの解説書『リンカ・ローダ実践開発テクニック』に出会ったのが入稿前日で、Amazonさんに配送に3日くらいかかるといわれてこういう感じになってしまいました。次はもう3日早く進めるぞ!

なお、電子版はpdfに表紙を含むよう作り直しているので冊子版と2ページずつページ番号がずれますが、誤り訂正箇所のページ数はすべて冊子版のページ数となっています。

  • p.1 数学の答案用紙の裏 => 数学の時間にルーズリーフに
    • 卒業できているわけなので必修の単位は揃っています。書いてたのは、下書きの方の裏じゃないでしょうか。そこまで抜けてる犬ではないです。
  • p.8 処理が行っているのです => 処理が行われているのです
  • p.13 機械語に変換されたファイル => ソースコードを機械語に変換して、関数や変数+αなどデータの種類ごとに並べ直したファイル / 機械語まで直しただけ => 機械語+αまで直して直したデータを種類ごとにまとめ直した
  • p.15 静的リンクの再配置情報のところは少し自信がない => 取る。坂井 弘亮(2010)『リンカ・ローダ実践開発テクニック』、初版、CQ出版株式会社 pp.24- 29 あたりで確認したら大丈夫そうだったのでとります。
  • p.16 オブジェクトファイルの中のアドレス0番
    • 上記部分について脚注追加。「厳密にはここの番地は各アーキテクチャ/ファイル形式における各セクションの開始位置から。たとえば、80x86アーキテクチャで実行可能ファイル、オブジェクトファイルの形式としてELFを使う場合、テキストセグメントは0x08048000番地から開始される[詳解Linuxカーネル第3版 p.877]。」
  • p.18 というメモリ上のデータ配置 => という感じのメモリ上のデータ配置
    • 上記部分について脚注追加 「なお、直前の「」内は実行可能形式としてa.outを利用するシステムを想定している。そのシステムが利用する実行可能形式(.exeにあたるもの)によって「」内のメモリ上のデータの並びは異なる(便利なことをするためのメタデータが入ったセクションが生えたり、変数がいつ定義されるかでわかれたり)[Linkers & Loaders | John R. Levine 榊原一矢監訳/ポジティブエッジ訳 pp.49-69]」
  • p.19 プロセスごとに0番地からメモリを数え始めていいことになっている => プロセスごとに0番地からメモリをカウントして使う
    • 脚注追加 「この辺を実現する仕組みに興味がある人は仮想メモリあたりについて調べるとよいと思います」
  • p.74 脚注追加
    • 「これは余談ですが、Dockerイメージはアプリケーションコードまで含みますが、RUNコマンドごとにレイヤー分けして保存する&変更がなかった下位レイヤーを使いまわすことで1つのイメージという単位でインフラ~アプリケーションコードまでのそこそこリーズナブルなデプロイを実現しています。一方、Vagrantのboxイメージはいわゆる「OSイメージにJREとか焼き付けとく?」くらいの粒度で作成され、phpmysqlなどOS上で動くサーバ用ソフトウェアはChefなどのプロビジョニングツールを利用しました。さらにプロビジョニングツールを使う場合はアプリケーションコードはCapistranoなどのデプロイツールをさらに使うことがあり、変更の頻度ごとにツールが分かれている感じでした。」