何かを書き留める何か

数学や読んだ本について書く何かです。最近は社会人として生き残りの術を学ぶ日々です。

『機械学習による実用アプリケーション構築』の技術査読を担当しました

本番運用まで見据えた機械学習

2021年4月23日にオライリージャパンから『Building Machine Learning Powered Applications』の邦訳である 『機械学習による実用アプリケーション構築](https://www.oreilly.co.jp/books/9784873119502/)』が発売される。

www.oreilly.co.jp

この度、邦訳の査読者として少しお手伝いさせていただいた。

従来の機械学習本と言えば、数学的な理論を説明する本、ライブラリの解説本、ハンズオン形式など「機械学習とは何か」や「やりたいことをいかに機械学習で実現するか」が主要なテーマであった。 これらのテーマも重要なテーマであるが、実際に実装したシステムを設計、デプロイ、運用するためにはまだ足りない要素がある。 『機械学習による実用アプリケーション構築』は機械学習が関わるシステム運用に必要な要素を埋める、画期的な本である。 目次を読むと何を言わんとしているのかわかっていただけるのではないかと思う。 また、翻訳者の菊池さんが書かれたまえがきは、原著タイトルである「Building Machine Learning Powered Applications」から着想を得た、本書がどういう本なのかを的確に説明しているものである。

機械学習に関わるプロジェクトに参画している方、マネージメントする立場の人たちにおススメである。 ちょうど5月の連休前の発売であり、外に出るのも難しい時節であるので連休中の読書にいかがだろうか。

『入門 Python 3 第2版』を監訳しました

自立する800ページ

2021年3月22日にオライリージャパンから『Introducing Python 2nd Editon』の邦訳である 『入門 Python 3 第2版』が発売される。

www.oreilly.co.jp

この度、邦訳の監訳を務めた。 話があったのは2020年2月頃、監訳作業は2020年9月から2021年2月頃までの約半年であった。 タイトルの通り、2015年12月に発売された『入門 Python 3』の改訂版である。

構成について

Pythonの入門書であるが、入門した後のことも書かれている本である。 全体として2部構成であり、前半が文法などの解説、後半がPythonを使って何ができるか、という話である。 800ページと聞いてびっくりするかもしれないが、従来の入門書にあたる箇所は270ページなので分厚さに怖気づいてしまう必要はない。 初心者はまず第I部を読み、第II部は面白そうな部分を拾い読みする。 慣れている人はいきなり第II部から入ってもよい。 目次や索引も活用してリファレンスとしても使える。

監訳作業について

監訳と言っても本によってその役割は異なる。 『入門 Python 3 第2版』の場合は翻訳に手を入れて精度を高める監修の役目である。 訳語の調整、ソースコードの調整、ローカライズなど多岐にわたる。 普段?の査読の場合、意見は表明するものの、その意見をどうするかは翻訳者や編集者にその決定を委ねていた。 一方、今回の監訳ではほぼすべて自分でどうするかを決定するの立場であった。 また、「監訳者まえがき」なるものを初めて書いた。 今まで幾度となく「まえがき」や「あとがき」を読んできたが、いざ自分で書くとなるとどうすればいいのか非常に困ってしまった。 邦訳初版の監訳者である斎藤さんの「まえがき」は斎藤さんのプログラミングを学んだ経験が書かれていたので、ひそみに倣って自分の思い出話から書き始めた。

どこで買えるか

今更「どこで買えるか」という話なのか、と思うが、オライリージャパンさんの本はどこの本屋にでもある訳ではない。 オーム社の常設書店のうち、「オライリー・ジャパンの和書特約店」に限られる。

www.ohmsha.co.jp

近くの書店に売っていなくても、オンライン書店で入手できる。

ぜひお手に取って欲しい

仕事を始めて6年程度、Pythonを本格的に使い始めて4年、学生時代を含めるともう少し長くなるが、その経験で得た知識を色々と監訳作業に詰め込んだ。 Pythonの入門書の有力な候補の1冊として、ぜひお手に取って読んでいただければと思う。

おめでたい感じがする干支計算プログラミング

今年の干支は何なのか、ここ数年気にしなくなっていたが、今年は丑年である。 正確には辛丑である。

ja.wikipedia.org

お正月なので、簡単に計算できるPythonスクリプトを書いた。

HEAVENLY_STEMS = {
    0: "庚",
    1: "辛",
    2: "壬",
    3: "癸",
    4: "甲",
    5: "乙",
    6: "丙",
    7: "丁",
    8: "戊",
    9: "己",
}
EARTHLY_BRANCHES = {
    0: "申",
    1: "酉",
    2: "戌",
    3: "亥",
    4: "子",
    5: "丑",
    6: "寅",
    7: "卯",
    8: "辰",
    9: "巳",
    10: "午",
    11: "未",
}

try:
    year = int(input("生まれた年を数字で入力してください:"))
except ValueError:
    print("数字でっつってんだろぉぉ?")
else:
    stem = year % 10
    branch = year % 12
    print(f"あなたの干支は{HEAVENLY_STEMS[stem]}{EARTHLY_BRANCHES[branch]}です。")

Pythonintは全角数字を入れても数値として解釈してくれるが、ドキュメントにはUnicodeのNdをそう解釈するとは書かれていない。 ११११を渡すと1111と解釈してくれるので恐らくint()はNdをよしなに解釈してくれるのだろうが、果たしてどうなのだろう。