なっぱ箱

ゲームとか読書の感想とか時々技術系の話とか

読了: 現代語訳 魏志倭人伝

モチベーション

セールになってたのと、そういえば歴史系はもう何も記憶に残ってなくて、「魏志倭人伝」って名前自体は学生時代に聞いたことあるけど内容覚えてない・・・現代語訳ならサクッと読めるんじゃなかろうか?ってことで読んでみた。

こういう普段全然興味持たないものこそ読書でさらっとインプットするのが吉。

本の概要

現代語訳 魏志倭人伝 (新人物文庫)

現代語訳 魏志倭人伝 (新人物文庫)

三世紀の倭国の情勢と邪馬台国の女王卑弥呼の存在を記録した「魏志倭人伝」の原文に、書き下し文・現代語訳・註を完備した永久保存版。さらに、その他の「中国正史」である『漢書』『後漢書』『宋書』『隋書』『旧唐書』『新唐書』から倭国・日本の国情を描いた記述をすべて抜き出し、同じ構成で解説した。参考資料として、「高句麗広開土王碑文」「祢軍墓誌」「井真成墓誌」を併載し、古代日本を知るための中国関係資料を集成した待望の書。

目次

魏志倭人伝 is 何

日本が「倭国」と呼ばれていた古代、皆さんご存知の邪馬台国卑弥呼について言及される歴史書

ではあるのだが、魏志倭人伝自体は日本の歴史書ではなく、中国の歴史書である。こちらも皆さんご存知の「三国志」のうちの「魏書」の30巻である「烏丸鮮卑東夷伝」にある「倭人条」とよばれる記述が「魏志倭人伝」とよばれているのだ。

古代日本の歴史書は「日本書紀」があるが、大和王権設立前の歴史についての記述は少ない。その記されていない歴史が記されているのが「魏志倭人伝」というわけである。国内の資料がないので海外の資料で当時の状況を考察しましょう、と。

もちろん当時の環境で海外に正確な情報が伝わっているわけでもなく、どこまで信憑性があるのかもわからないが貴重な資料であるのは間違いないのだろう。

ただし、とても短い。

実は魏志倭人伝自体はものすごく短いのだ。どれくらい短いというと原文は2000字弱しかない。漢文だから情報量の違いはあれど400字詰原稿用紙5枚だ。めっちゃ短い。そのため魏志倭人伝だけでなく似たような記述がある中国正史のいろいろな史書の現代語訳も3章で紹介している形になっている。

卑弥呼

日本古代の超有名な女王。だいたいのイメージは「邪馬台国の女王」だが、実際は邪馬台国には別に王がおり、卑弥呼は各国の連合国家である「邪馬台国連合」の女王である(ちょっと調べてみたら邪馬台国の王も兼任してる説もあるとか)

イメージ的には邪馬台国は1都道府県で、卑弥呼は総理大臣的な扱いだろうか。

この卑弥呼、弟がいろいろと手助けをしていただとか、女王になってからはほとんど人前に出ず、一人の男が身の回りの世話をしていたとかなんとか。

そして巫女、というかシャーマン的な力があったとの記述があるので、もしもFGOで登場した場合はまず間違いなくキャスターでの現界だと思われる。前述の一人の男が身の回りの世話をしていたとか、卑弥呼 = 天照大神説があったとか、卑弥呼は実は個人名ではないのではとかの説もあるので設定厨にはたまらない。TYPE-MOONの菌糸類ならとても素晴らしい仕上がりの設定にしてくれるんじゃなかろうか。ドラクエ3の「実は八岐大蛇」ってのを軽く超えてくると信じてる。

ぜひ出してほしい。

この本をお勧めする人

感想

割と知らないことをしれたし面白かった。次は「古事記」や「日本書紀」の現代語訳とか読んでみるのもいいかもしれない。

学生時代にとりそこねた車の免許をついに取得した

f:id:b7472:20190318173151p:plain:w300

ついに車の免許を取得した。

大学時代は「お金も無いしバイクあるしいつかでいいや」と言い、都内に引っ越してからは「都内の賃貸で車持つとか狂気」と言っていた自分ですが、この度普通自動車免許を取得したことをここにご報告させていただきます。

なんで免許とったの?

いや、実際問題都内にいる分には特段不便もなく、というか維持費が辛すぎるし都内の移動なら電車で事足りるので必要性は本当に無かったのだけれども、去年結婚する際に奥様と「田舎でゆったりしようぜ」と意見が見事に合致。 急遽自家用車必須社会の田舎への移住が現実化し、免許の非所持がボトルネックとなってしまったので教習所への入校が決定したわけである。

なお奥様は免許保持者で、昔はMT車で学校に通っていたらしい。現在はペーパー。

取得までの期間はどのくらい?

2018年9月末くらいに入校、2019年3月頭に免許交付となったのでなんだかんだで5,6ヵ月。

通ったペースとしては週2-4時限(平日1,2日、休日1,2日)が目標だったけれども、予約の都合とかで週2回くらいがアベレージだったと思う。 プラン的に4時限までは予約ができるタイプだったので、常に4時限分の予約を埋めるようにしていた感じ。 もっとキャンセル待ち行きまくれば余裕で短縮できたんだけれども、そこまで時間を割くのがしんどかったのでほどほどペースでやっていた。

なお、自分は二輪の免許を持っているので「道路交通法などの知識に関してはすでに取得している」と扱われて学科が免除されていた。学科があるとかなり変わってくるので参考にする人は注意してほしい。

都内の教習は大変?

結構大変。

通っていたのが目黒の教習所だったんだけれども、路上教習でると路駐は多いし命知らずの自転車がたくさんいるし親子が車の間から飛び出してくるしでとってもデンジャラス。 渋滞とか路駐のせいで教習に影響が出ることもたまにあって、

教官「それじゃあ停められるところで路肩に停め・・・」
なぱ「・・・路駐で埋まってるッスね」
教官「じゃああの信号越えた先・・・」
なぱ「・・・も埋まってるッスね・・・しかも渋滞」
教官「・・・」

といった事も割とあったり。 ただ逆を言うと田舎でゆったり走るよりはるかに鍛えられるのかなと。ペーパーの人は都内でペーパー教習受けるとよいのでは感ある。

都内の教習だと高速教習はやっぱり首都高?

残念ながらシミュレーターのみです。首都高は走りません。
というかそもそも「首都高速道路」は「自動車専用道路」であって「高速自動車国道」ではありません。

www.excite.co.jp

恥ずかしながら自分も勘違いしていて、あくまで「制限速度が低い高速道路」だと思っていたんだけどそもそも高速道路ではないらしい。 教官の方も「あれは名前が悪すぎる」とぼやいていた。

おっさん周りから浮かなかった?

全然浮かない。むしろ溶け込んでいたと言ってもいい。

「車の免許は高校最後とか大学生くらいに取る物 → 若い人ばっかり」

ってイメージは確かにあったんだけど、意外にそうでもなかった。同じくらいの年齢の人が結構多かったし、40-50代もちょこちょこ見かけた。 ある程度はペーパー教習の人なのかもしれないけど、30ちょい過ぎくらいだと浮く心配はしなくて大丈夫だった。

時期的に混み具合はどう?

9月から3月まで通っていたけれども、やはり1月下旬からは激混み。

受験を終わらせた高校生たちがこぞってやってくるので、通常予約もキャンセル待ちも非常に大変になってくる。昼に行って一日いれば乗れるだろって高をくくっていたら一度も乗れなかったりとか。

それと9月くらいでも結構生徒は多くてそれなりに混んでいた。推薦とかで早めに決まった学生が来ていたり、なんだかんだで人は来るらしい。

指導教官の人って怖いの?

昔の鬼教官的な人どころか厳しい口調の人に遭遇しなかった。

大学時代にバイクの免許取った時は割と態度がアレな人がいたんだけれども、今のご時世そういった人は淘汰されているっぽい。

免許取った後ちゃんと乗ってる?

すでに友人集めて遠出を2回ほどした。

場所は横浜と御殿場。普段は電車か乗せてもらう側なので、こういった遠出で自分が運転するのはとても新鮮だった。 そして運転すると車の善し悪しがいやでもわかる。高級車いいわ。乗り心地も機能も素晴らしい。何買うか悩む。

plus.timescar.jp

それとタイムズのカーシェアに登録してみた。都内居るうちは時間を見つけてこまめに乗ろうと思っている。

最後に

社会人になってから免許を取るのはやっぱり大変。学生の時と比べてお金の問題は解決できても可処分時間が少なくてどうしても大変になる。 可能であればやっぱり学生のうちにとっておくのがベター。

ちょくちょくレンタカーとかでいろいろな所に行ってみようと思うので、暇な人は一緒に遊びましょ。

いい加減手動記録がつらいのでスマート体重計を導入した

吾輩はデブである。着れる服は(あまり)ない。

あったことがある人は知っているし、あったことない人も大体わかっていると思うけれども、自分はなんとデブなのである。

そんなおデブさんな自分も30歳オーバー。年齢的にそろそろ体絞らないといかん気がするのでダイエットをしているのだが、何事も記録をとり数字で語らなければならないのが世の常。ちょこちょこ体重をアプリに記録してはいるのだが、いい加減スマホ取り出してアプリ起動して・・・というフローが面倒くさすぎるので、前々から狙っていたスマート体重計(体組成計)を購入した。

買ったもの

買ったのはこれ。

スマート体重計で調べるとすぐ出てくるので、見たことがある人も結構多いのではないだろうか。

購入の決め手

突出して優れた機能があるわけでもないのだが、とにかくちょうどよく求める機能を網羅している上でお値段がお手頃だった、ということに尽きる。求めていた機能はおおまかに下記の3つ。

  1. WiFi経由での記録機能
  2. 体組成計として体脂肪率や筋肉量が計測可能
  3. iOSのヘルスケア対応

特に「WiFi経由での記録機能」がマスト。

Bluetoothで独自アプリに記録できる安めの体重計は結構あるのだが、そこで妥協してしまうとどっちみち毎回毎回スマホを取り出してアプリ起動して・・・という現状と同じフローをこなさなければいけないので、これができなければそもそも買う理由がない。

計測する場合は乗るだけ。いかなる結果であろうとも無慈悲に即記録。これがいい。

使ってみての感想

すこぶるいい感じ。やはり自動記録はありがたい。 アプリのほうもデザインは悪くないし、視認性もとてもよくて満足している。体脂肪率が結構ブレブレな気はするが、こんなもんなのかと気楽に考えておくのがよさそう。大まかなレンジがわかればそれでいい。

今のところ不満点はなく、思っていたよりサイズが大きいせいで先代の体重計をしまっていたところに収まりきらないのが気になっている程度。

今後の自分リリースノートではダイエットの実績についても言及していこうと思う。

じぶん Release Notes (ver 0.32.02)

なっぱ(ver 0.32.02)がリリースされました。更新内容は下記のとおりです。

技術関連

イベント

  • ML Study Jams : Machine Learning 初心者向けトレーニングプログラム」のオフラインイベントに参加しました
  • 実家に帰省して元自分の部屋の掃除を行いました
    • 生存していた黒歴史の処分に成功🎉
  • 久しぶりにディズニーランドへ潜入しました
    • 雪のディズニーランドというレアなシチュエーション⛄
  • 友人主催のボドゲ会に参加しました
  • 自動車教習所での全課程が終了しました🎉🎉🎉

買物

ゲーム

クリア

なし

プレイ中

読書

読了

読書中

記録

FitBoxing

https://pixe.la/v1/users/yamash723/graphs/fitboxing.html

  • 実施回数: 5回

ピアノ

https://pixe.la/v1/users/yamash723/graphs/piano.html

  • 練習回数: 4回
  • 総練習時間: 315分
  • 練習曲
    • 米津玄師: Lemon
      • 両手弾き練習用。持っている楽譜が短いものなので早めに仕上げたいところ

アウトプット

ふりかえり

Keep

  • 教習がめでたく終了。あとは免許の書き換えのみ
  • 回数は少ないけどピアノを続けられている。とりあえず継続を第一に
  • 「ホルモン」という普段気にしない別ジャンルについての知見を得た

Problem

  • FitBoxingのペースが落ちてしまっていた
    • 週1ペース程度。目標に遠く及んでいない
    • 帰宅後は効率的に時間を使うようにしたい
  • 夜更かしして睡眠時間が短くなってしまう日が多かった
  • AtCoderのABCに参加しようと思ったけども時間が合わずに断念
  • 花粉症の症状がひどくなってきた

Try

  • Fit Boxingを週3回以上に増やす
  • Lemonを弾けるようになる
  • 1日8時間睡眠をとれるような生活にする
  • 花粉症の対策を行う

所感

なんかあっという間に過ぎ去ってしまった。時の流れが速すぎる。なにかがおかしい。

教習

とりあえず去年の10月くらいから通っていた教習がやっと終わったのでほっとしている。

もともとバイクの免許も持っていたし、特につまづくこともなく進めてたんだけれどもいかんせん時間がかかる。残業も休日出勤もない生活だからまだましだったけど、やはり車の免許は学生の間に取っておくべきだった・・・。

なにはともあれ無事卒業したのであとは免許の書き換えを残すのみ。無事書き換え終わったらカーシェア登録してちょくちょく運転する時間を取ろうと思う。車買うまで乗らないってのも鈍ってしまいそうだし。

再来週あたりに友人みんなで車で遠出するので、そこが免許取得後初デビューになると思う(もしかしたらその前にカーシェアで軽く出かけるかもだけど)

ピアノ

とりあえず楽しい。大昔小学生の頃は習っていたけどそれ以降さっぱりなのでまだまだ手が動かない。

中旬まではさぼり気味で、下旬からようやく練習し始めたので3月はこのまま練習を続けていきたい。

ボドゲ

久々にボドゲ会に参加した。やっぱりクソ楽しいので、自分でもボドゲをちまちま増やしていこうと思う。

ディズニーランド

ランドに行くのはめちゃくちゃ久しぶりで、最後に行ったのは15年くらい前じゃなかろうか・・?

夫婦ともに絶叫系大好きなのでコースター系をメインに攻めていたんだけど、食事以外の休憩無しで動き回ったにもかかわらず体力的には割と余裕があった。これはおそらくFitBoxingの成果じゃなかろうかと思っている。

次は行った事のないUFJに行こうかと思う。

来月

土日はすでに半分以上予定が埋まってきたので、平日コンスタントに作業の時間をとっていきたい。

とあるYouTuberのオフイベントが月末にあるので、それがひそかな楽しみ。抽選なので行けるかどうかわからないけど当たるといいなぁ。

読了: マンガでわかるホルモンの働き

モチベーション

Kindleのセールで見かけた時に「ホルモンって男/女ホルモンとか環境ホルモン、あとはせいぜい内蔵的なホルモンしか知らないなぁ・・・」ってふと思ったのと、女性のホルモン関係はちゃんと理解していないとまずいな、ってことで読んでみた。

本の概要

ホルモンは人間が生きるうえで、成長から体内環境の維持、さらには性の獲得、生殖活動などにおいてきわめて重要は働きを担っています。本書ではこれまで発見された約70種のホルモンから、特に重要と思われるホルモンを選びだし、それぞれの働きから、ホルモン分泌に不具合が生じるとどのような事態が起こるのかなどについて、マンガでわかりやすく解説します。

目次

  • 第1章 ホルモンとはなにか?
    • ホルモンとは?
    • ホルモン発見の歴史
    • ホルモンにもいろいろある
    • 環境ホルモンとは? ほか
  • 第2章 脳内ホルモン(神経伝達物質)とは?
  • 第3章 おもなホルモンとその働き
    • 視床下部はホルモンの中枢器官
    • 下垂体から分泌されるホルモン
    • 成長ホルモンは身体の成長に不可欠なホルモン
    • オキシトシンは恋愛ホルモン? ほか
  • 第4章 性別を決定する性ホルモン
    • 男女の違いは性ホルモンが決める
    • 具体的な性ホルモンとその働き
    • 女性ホルモンは男性ホルモンから生成される
    • 男性ホルモンは精巣から分泌される ほか
  • 第5章 男性ホルモンと更年期障害
    • 男性にも更年期がある?
    • 男性更年期障害の症状は? ほか
  • 第6章 女性ホルモンと更年期障害
    • エストロゲンは女性ホルモンの総称
    • 月経とは子宮の壁が壊されること ほか

ホルモン is 何

ホルモンとは、体内で生成され、特定の器官に対して情報を伝達したり作用をおよぼす化学物質である

※語源はギリシャ語で刺激するもの、呼び覚ますもの、の「ホルマオ」らしい。決して「放おるもん」ではない。

説明としては「範囲広くない??」と思うのだが、その実範囲は本当にめっちゃ広い。インスリンとかアドレナリンとかドーパミンとか、体内で作用する化学物質はもうホルモンである。なお特徴として、ほとんどのホルモンは「経口摂取しても作用しない」とのこと。消化されちゃうので作用しないのだ。そのためインスリンなんかは注射で血中に直接注入する必要がある。なんで注射しなきゃいけないんだろう、と思ってたらそういうことらしい。

ちょっと不思議なホルモンはビタミンD。ビタミンは本来体内で生成できず食物などから摂取するしかないんだけれども、ビタミンDは皮膚で生成できるのでホルモンらしい。へぇー!

環境ホルモン is 何

環境ホルモンの説明の前にホルモンが作用する仕組みを説明する必要がある。

ホルモンが作用するためには、作用対象の器官に「受容体(レセプター)」と呼ばれるものが必要になる。ホルモンが鍵、受容体が鍵穴みたいなものと言うのがわかりやすい。ホルモンは血中などを通って臓器など作用対象の器官にたどりつき、適合する鍵穴である受容体と結びついて作用する。

で、環境ホルモンは何かというと、「鍵穴である受容体にうまいこと適合しちゃうホルモンっぽい物質」なのだ。

環境ホルモンと呼ばれるものが何かしらの理由で体内に入り込んだ場合、それが受容体に到達すると「あ、これ適合するホルモンじゃん」と勘違いして作用してまう。仕組みを聞くと怖いね。

過度なストレスが体に及ぼす悪影響

人には「交感神経」と「副交感神経」でとよばれる自律神経があり、それによって体の調子を保っている。

例えば「急に車が飛び出してきた」という状況の場合、緊急事態に体が対応するため交感神経が優位になり、汗をかいたり心拍数が高まったりして活動の準備が行われる。逆に「お風呂に入っている時」の場合は副交感神経が活発化し、心拍数や血圧が抑制され、体は休息しようとする。

交感神経は体を活発化させるもの、副交感神経は逆に休息させるもの。この相反する神経がバランスよく作用しているのが理想的な状態となる。

ストレスがかかるとどうなるのかというと、これは交感神経のほうが優位になる。

さっきの例でいう「急に車が飛び出してきた」も広義としてはストレスに含まれるのだが、自律神経は体のバランスを保とうとするのでストレスを受けて緊張状態になるとそれを解消するため交感神経のほうが活発化する。

これが適度かつ一時的なストレスであれば問題ないのだが、過度なストレスに長期間さらされると交感神経ばかりが優位になってしまい、副交感神経とのバランスが崩れてしまう。

会社でオーバーワークをさせられたりパワハラを受けていた場合、本来であれば副交感神経に切り替わって休息しているはずのタイミングにもかかわらず、精神的なストレスがかかりっぱなしになり交感神経がずっと優位になったままになってしまう。そうすると体は休息することができず、様々な影響が出てくる。

例えば交感神経が優位な場合、血管が収縮する作用がある。これは本来血圧を上げてストレスに対抗するため体を戦闘モードにするためのものなのだが、この状態が続くと血行が悪くなり頭痛や肩こりを引き起こす。他にも自律神経は胃腸の調整も行っており、交感神経が優位な場合は胃腸での消化を抑制する。その状態が続くと消化不良で下痢をしたり胸やけを起こす。などなど・・・

自律神経が調整している器官は多岐にわたるので、バランスが崩れると体のいたるところで調子が悪くなってしまうのだ。

また、継続したストレスを受けていると人体は「コルチゾール」というホルモンを多量に分泌する。コルチゾールは炎症を抑えたり血糖値の激しい上下を防いでくれる人体に必要なものなのだが、免疫機能を抑制するという作用もある。そのため、継続したストレスにさらされているとコルチゾールの影響で免疫機能が弱り、感染症にかかりやすくなってしまう、といった事も起こりうる。

男性は30歳から、女性は40歳から副交感神経の働きがガクッと下がらしいので、ストレスにはより気をつけていきたい・・・

月経とPMS

長くなってきたので別記事にする。

おすすめの章

第4章 性別を決定する性ホルモン

LGBTがどういうものか分かってはいても、そのような状況がなぜ発生するのかがは全く知らない、という人に読んでほしい。

遺伝的な性別、身体的な性別、性自認、性嗜好がそれぞれどのように決定されていくのか。そしてホルモンがどのように影響してくるのか、というのをざっくりだが理解できるようになる。「幼少期の育った環境とかそういうのじゃないの??」って思っている人は一度読んでみるといいんじゃなかろうか。

第6章 女性ホルモンと更年期障害

月経のメカニズムやPMSの発生原因などを知りたい場合はここ。女性であればすでに調べて理解している人も多いだろうけど、自分の体で起こっている事が何なのか把握するために。男性であっても実体験できない以上、化学的に何が起こっているかを理解するために読んでみるといいと思う。低用量ピルについても同様に解説してあるので、「ピル」と聞いて「避妊用の薬でしょ?」としか思わなかった人は一度読んでみよう。

この本をお勧めする人

  • 自律神経失調症」とかの単語を聞くけど、なにがどう悪くなるのかよくわかってない人
  • 性同一性障害など、性別関連でなぜそのような状態になるのかわからなくて気になってる人
  • 女性の月経、PMSについての知識が薄い人

感想

半ページ漫画、半ページ解説文で読みやすいし、全体的にわかりやすいのでハードルは低い。ページ数も多くないのでササっと読める。

発行がしばらく前のものなので現在の研究結果次第で変わっている部分も多いだろうけど(特に性別に関する部分)、全体的なベース知識は抑えられたと思う。

読了:デザイン入門教室

モチベーション

職業柄必要なのはUI/UX系の知識ではあるんだけども、そもそも前提スキルとなるデザインの基礎知識がまったくないのでそれを補うためにチョイス。

検証でもなんでもUIを伴う何かを作ってみたときなどに「くっそダサい…それ以前にわかりにくい…」みたいなことは多々あって、前々からデザイン知識の必要性を感じていたんだけれども、特にきっかけがなくてずーっと先送りにしてしまっていた。先日「そういえば奥様デザイナーやん」という事に気づいたので、「初心者用に基礎知識勉強用の本を見繕ってください」と依頼。見繕ってもらった中から最初に読むのに向いてそうなのがこれだったので読んでみた。

本の概要

グラフィックワークから企画書、プレゼン資料まで。デザイン基礎力は一生役立つ武器になる!これからはじめる人に読んでほしい、とことん丁寧な本格入門書、遂に発刊!センス、経験一切不要!

目次

  • Chapter 1 - デザインをはじめる前に ~ はじめに知っておくべき最重要ポイント ~
  • Chapter 2 - レイアウトの基本ルール ~ 紙面イメージを決定する配置設計の基礎知識 ~
  • Chapter 3 - 写真と画像 ~ 目的別で学ぶ、写真の選び方と使い方 ~
  • Chapter 4 - 配色の基本 ~ 色には人の心を動かす力がある ~
  • Chapter 5 - 文字と書体 ~ 読みやすく、人を惹きつける文字と書体の使い方 ~

デザインの基礎をロジカルに学べる

いままでちゃんと学んだことがないので、基礎の基礎から学べるのは非常に助かる。それこそ「フォントは使いすぎるな」とか「意味が近いものを近くに配置しろ」見たいな「それは聞いたことある」くらいのレベルから。

あとは余白をとらずに写真を配置する技法自体の存在は知っていても、それが「うち落とし」という名称であることは知らなかったし、それがどのような印象を与えるのか。逆にうち落としを使わない場合はどのような印象を与えるか、などは言語化された情報として受け止めるととてもしっくりきた。

「明朝」「ゴシック」をただのフォント名称の一つ程度と思っていたレベルの自分としては得るものが大きかった。

初心者向けの指標が提示されている

いわゆるテンプレ的なものが項目ごとに載っていたりする。マージン表とかジャンプ率とか。

デザイン知識がある人は、基礎を踏まえたうえでわざとスタンダードからはずす、みたいなことができるんだろうけども初心者には難しい。そんな時に「一般的にはこうです」っていう表なりなんなりが時々載っているので非常に助かる。

この辺りは慣れるまでの間はまとめておいて都度眺めるようにしようと思う。

おすすめの読み方

現時点で自分がどのようなデザインをするのか確認してから読み始めると、どこがどうダメなのかをだんだんと理解できるようになるのでおすすめ。

一番最初にデザイン制作の流れを学ぶ項目があるんだけども、そこでは架空のハンバーガーショップのチラシを作るという案件が用意されているので、 読み進める前に一度デザインをおこしてみるといい。素材や文言等はすでに用意されているので、あとは作るだけ。

確実に「ダサい・・・言語化しづらいけどダサい・・・」みたいになるんだけれども、これ以降を順次読み進めて都度見なおしてみると「ここがこうダメだったのか」と言語化されて腹落ちする。いままでよくわからない正体不明だった「デザイン」というものが徐々に理解可能なものに見えてくると思う。

この本をお勧めする人

読みやすいしページ数も控えめなので気軽に読めてハードルは低い。デザインをかじったことすらない人にはとても実入りのいい内容だと思う。 なにかしらデザイン力を伴う作業をするときに「なにをどこから決めればいいのやら・・・・」とちょっと立ち止まってしまう人にはとてもおすすめ。

非nightlyなRustプロジェクトでベンチマークを使用する方法

概要

Rustには公式ベンチマークツールがあるが現状unstableなのでnightlyでしかコンパイルできない。 だからプロジェクトがstableだと使えないんかなー、と思って調べてみたらやり方があったのでメモしておく。

試してみる

プロジェクトを用意

$ cargo new --lib hello_bench
$ cd hello_bench

新規プロジェクトを作ったあとはベンチマーク対象のコードと、一応テストコードでも書いておく。 src/lib.rsを下記のように変更。

pub fn sum(x: u8, y: u8) -> u8 {
    x + y
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn sum_test() {
        assert_eq!(sum(2, 3), 5);
    }
}

特にunstableな機能を使っていないので、stableでテストが通る。

$ cargo test
   Compiling hello_bench v0.1.0 (/Users/yamash723/Workspace/labo/rust/hello_bench)
    Finished dev [unoptimized + debuginfo] target(s) in 0.38s
     Running target/debug/deps/hello_bench-a775e998ab4d2775

running 1 test
test tests::sum_test ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

   Doc-tests hello_bench

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

ベンチマークコードをプロジェクトに追加

もしもnightlyなプロジェクトであればsrc/lib.rsに追加すれば動くといえば動くんだけども、 #[bench]属性の関数であっても#[cfg(test)]配下であればcargo test時に実行されてしまうのでおすすめできない。

そこで、benchesというベンチマークコードを配置するためのオプショナルディレクトリがRustには用意されているので、そこにコードを配置する。

$ mkdir benches
$ touch benches/bench.rs

benchescargo bench実行時にのみビルドされるので、プロジェクトのメインコードと切り分けることができる。

とりあえず先程作成した関数をベンチマークするコードをbenches/bench.rsに追加する。

#![feature(test)]

extern crate test;

#[bench]
fn sum_bench(b: &mut test::Bencher) {
    b.iter(|| hello_bench::sum(2, 3))
}

評価対象の関数の呼び出しはhello_bench::sum(2, 3)のようにパッケージ名経由で行えばよい。

なおベンチマーク実行時、benches直下のファイルはすべてビルド対象になるのでファイル名に特に決まりはない。 コード量が多くなってきたら各ベンチマークコードをサブモジュール化してbench.rsで参照するような形にするとスッキリすると思う。

そしてベンチマークを実行する際、下記のようにnightly指定でcargoを実行すればベンチマークを実行することができる。

$ cargo +nightly bench]
   Compiling hello_bench v0.1.0 (/Users/yamash723/Workspace/labo/rust/hello_bench)
    Finished release [optimized] target(s) in 0.45s
     Running target/release/deps/hello_bench-c6eaba87c0013faa

running 1 test
test tests::sum_test ... ignored

test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out

     Running target/release/deps/bench-e4ecc1d2436f81bb

running 1 test
test sum_bench ... bench:           1 ns/iter (+/- 0)

test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured; 0 filtered out**

これでプロジェクトのメインコードはstableのままベンチマークを実行することができるようになった。