n月刊ラムダノート Vol.2, No.1(2020)(紙書籍+PDF版)

n月刊ラムダノート Vol.2, No.1(2020)(紙書籍+PDF版)

通常価格 ¥1,500(税込¥1,650、送料当社負担) 特別価格

  • 紙書籍とPDFのセットです
  • 通常はご注文から2~3営業日で発送します。
  • 年末年始や大型連休など、1週間から10日程度、配送のお休みをいただく場合があります。詳しくはお知らせをご覧ください。

計算機好きのための技術解説情報誌

  • エヌゲッカンラムダノート(不定期刊行)
  • 100ページ
  • A5判
  • 紙書籍は1色刷
  • 2020年3月1日 第2巻第1号/通巻4号 発行

n月刊ラムダノートは、nヶ月ごとに刊行される、計算機好きのための技術解説情報誌。コンセプトは「いろんなIT系技術書から1章ずつ選んできた解説記事の集まり」です。今号は3本の記事をお送りします。

目次

#1 パケットの設計から見るQUIC(西田佳史)

現在IETFで標準化が進められているQUICは、インターネット通信において従来のTCP が担っていたのと同様の役割を担うトランスポートプロトコルである。UDP上のコネクション指向プロトコルとして当初はGoogleにより開発されたことや、TLSを組み込んでいることなどが耳目を集めるが、現在のHTTPが主流のインターネット環境においてTCPの拡張だけでは対処しきれなくなった問題に対処するため、QUICの設計ではさまざまな工夫が凝らされている。

本稿では、QUIC による通信で利用されるQUICパケットの設計を紐解くことで、IPアドレスとポート番号に依存しないコネクションの単位である「コネクションID」、転送するアプリケーションデータの順番とは独立した「パケット番号」、ヘッドラインブロッキングの影響軽減のための「ストリーム」、将来にわたる高い拡張性のための「バージョン」や「可変長フィールド」など、QUIC で導入された新しい概念の背景について西田氏に説明いただいた。

#2 dRubyで楽しむ分散オブジェクト(関将俊)

dRubyを一言で説明するならば「分散オブジェクトシステムを実現するためのライブラリ」である。1999年に公開されたRubyの標準ライブラリであり、昨年20周年を迎えた由緒あるプロダクトだが、「分散オブジェクトシステム」そのものがRubyを含む現在主流のプログラミング言語ではあまり馴染みがない概念であることもあり、dRubyを実際に使ったことがある人は少ないだろう。

しかし分散オブジェクトシステムは、dRubyが誕生した20年前よりも、安価な小型のコンピュータが大量にWebに接続された現在のIoTという場でこそ真価を発揮しうる。そこで本稿では、dRuby の作者である関氏により、時代に先んじて生まれたdRuby をRaspberry pi やSSE(Server Sent Events)と組み合わせて分散オブジェクトシステムによるプログラミングを楽しむ方法を案内していただいた。

#3 Biscuitで学ぶ、GoならわかるOS実装(渋川よしき)

Goは、さまざまなOS 上で動くアプリケーションを開発するためのプログラミング言語である。そのため、OS カーネルのような、コンピューターシステムの最下層に位置するCPU 命令や物理的なメモリを直接扱うプログラムをそのまま書くことはできない。Go アプリケーションにできることは、低レベルへのアクセスをシステムコールを通じてカーネルに依頼することだけである。

ところが2018年、このランタイムに手を加えることで、OSカーネル自体をGoで実装する研究が発表された。このGoによるOS実装は、Biscuitと名付けられており、カーネルはもちろん基本的なPOSIX API を実装しており、OS に求められる一通りの機能がGo言語を利用して簡潔に実装されている。また、アセンブリで書かれたBiscuit 用のブートローダーも同梱されている。

本稿では、『Goならわかるシステムプログラミング』の著者である渋川氏により、このBiscuitの実装を紹介していただいた。ランタイムへの改造が必要な点やハードウェアとの入出力がBiscuitでどのように実装されているかを見ることで、通常のアプリケーションとの対比を通してOSカーネルについて学ぶ。

執筆者紹介

西田佳史(#1)

現在GE Global Research シニアサイエンティスト、慶應義塾大学SFC研究所上席所員(訪問)。博士(政策・メディア)。修士課程よりトランスポートプロトコルと輻輳制御技術の研究と標準化活動に取り組む。2008年からIETF Multipath TCP Working Group議長および2012年からTCPM Working Group議長を現在まで務めている。

関将俊(#2)

プログラマ。Rubyコミッタ。ERB、dRuby、Rinda の作者。一番使われているメソッドはh()。RubyKaigi 2006~2019、RubyConf 2012 スピーカー。オブジェクト指向プログラミング、分散オブジェクトシステムに興味がある。

渋川よしき(#3)

自動車会社、ソーシャルゲームの会社を経て現在はフューチャー株式会社勤務。Python/C++/JavaScript/Golang あたりを仕事や趣味で扱う。ウェブ関連は仕事よりも趣味寄り。著書に『Goならわかるシステムプログラミング』(ラムダノート)、『Real World HTTP』『Mithril』(ともにオライリー・ジャパン)、共著に『つまみぐい勉強法』『Mobage を支える技術』(ともに技術評論社)、訳書に『アート・オブ・コミュニティ』(オライリー・ジャパン)、共訳に『エキスパートPythonプログラミング改訂2版』(アスキードワンゴ)など。