直出直帰という言葉は確かにそこにあった

この記事は某所のスレッドのメモを参考にNotebookLMにまとめてもらいました。わたしが書くより断然エモい(けどわたしらしさはない)。
mikit, yuhara, K-ZOさん、皆さんありがとうございました。

社会人としての歩みを始めた頃、当たり前のように使っていた言葉が、いつの間にか世間の辞書から零れ落ちていることに気づくことがある。一般的に使われる「直行直帰」という言葉の陰で、かつて特定の場所で確かに息づいていた言葉、「直出直帰」もその一つだ。

今、この言葉を検索エンジンに投げかけても、返ってくるのは「直行直帰ではありませんか?」という無機質な問いかけばかりである。しかし、かつてPF研という研究所に身を置いていた者たちの記憶には、この四文字が鮮明に刻まれている。当時、日々の業務を管理していた勤怠管理システムを開けば、そこには「直出直帰」という選択肢がプルダウンメニューの中に確かに存在していたからだ。

この言葉を口にする時、その読み方は「ちょくでちょっき」であった。本来の漢字の読みを意識して「ちょくしゅつ」と発音しようとすれば、どこか硬く、言い淀んでしまうような不器用さがあった。そのため、現場の空気感に馴染んだ「ちょくで」という響きが選ばれていったのであろう。ある者は「ちょくで」という言い回しにどこか居心地の悪さを感じ、頭の中でわざわざ「ちょくしゅつ」と律儀に変換して唱えていたというが、多くの者にとって「ちょくでちょっき」というリズムは、オフィスや喫煙所での会話に自然と溶け込んでいた。

この言葉が使われていたPF研は、ソフト研やNS研、そして通網研といった異なる背景を持つ組織が再編されて誕生した場所であった。それぞれの組織が持っていた流儀や文化が混ざり合い、新しい日常が編まれていった時代である。

ふと思い出されるのは、かつての8階エレベーター前の情景だ。どのエレベーターも止まる便利なその階には、かつて喫煙所があった。紫煙の向こう側で交わされた「明日は直出(ちょくで)です」という何気ない報告。当時はエレベーター待ちの行列に悩まされることもなく、時間は今よりも少しだけ緩やかに流れていたように感じる。

数年の時を経て、この言葉を「脳から揮発してしまった」と語る者もいる。今では喫煙所は消え、居室の場所も移り変わり、当時の面影は少しずつ遠ざかっている。それでも、「直出直帰」という響きを耳にする時、かつての静かな廊下や、若き日の研究の日々が、懐かしい風景として胸に蘇るのである。

RustのプロジェクトでDockerfileを書かなくてもよくする話

この記事はもともと「2025年も暮れだけどまだDockerfileで消耗してるの?」というタイトルを思いついたのだけどちょっとさすがに煽ってるなと思えるくらいにはなったらしい。さて何かちょっとしたマイクロなサービスをHTTPなりgRPCなりで作ったあと、手頃なインフラ(Cloud Runとか、まあKuberentesでも)コンテナで動かしてサービス公開したいとなったときに、たったひとつのExecutableを入れるのにこんなDockerfileを書くことは多いと思う。

FROM rust as builder

RUN mkdir /build
WORKDIR /build
COPY . .
RUN cargo build --release

FROM debian
RUN mkdir /app
COPY --from=builder /build/target/release/your-server /app/
ENTRYPOINT ["/app/your-server"]

で、これを .github/workflow/ci.yaml でコンテナイメージに焼いてこれを docker push していくわけだ。
だがちょっと待ってほしい。毎度毎度同じようなDockerfileを書いて、しかもプログラムが大きくなったり、テストが複雑になっていけばビルド時間が延びていく。キャッシュを効かせる工夫をどうのこうのとやっていかないといけない。ランタイムで必要なライブラリができたら、このファイルに apt-get install -q -y libhogehoge3u4 みたいなことを書いていくことになる。Dockerfile がどんどん大きくなって、細かいところまで目が届かなくなり、チームには退職者も新規参加者もありノウハウは失われていく…

そうしてこのDockerfileを使ったコンテナ、ある日突然起動に失敗するようになったりする。私が某所ではまったケースだと、 Rust 公式イメージlatestは debianベース になっており、これの更新サイクルは debian:latest と必ずしも一致しないことがある。そうするとライブラリの互換性が保証されず、ランタイムでいきなり落ちる…といったことになる。もっと我儘をいうとUbuntuイメージを使いたい。そうすると依存ライブラリによっては rust イメージがそのままでは使えないことがある。

もっと我儘をいうと docker コマンドがなくてもコンテナをビルドできるようになりたい。そもそもOCIという共通仕様があって、コンテナイメージのフォーマットは決まっているわけだから、実行ファイルをコピーするだけでイメージつくれないか。Goなら Ko というツールがあって、しかもSingle-binary executableが作れるので実行ファイルポン置きしただけのコンテナイメージをつくり、しかも ko apply と打つとそれをKubernetesにデプロイまでしてくれたりする。Dockerいらず!

Rustでもこれをやりたい。ということでどうやるかを考えた。残念ながらRustではSingle-binary executableを作れないので一筋縄ではいかない。幸いRustでもOCIイメージを読み書きするクレートがすでにあるので、これをゴニョれば案外簡単にいけるんじゃないか。と思った時代がわたしにもあった。いろいろ調べたメモは
OCI にある。

Here's the smallest container image ever with a Rust program inside.

kuenishi (@kuenishi.bsky.social) 2025-03-02T15:13:27.520Z
bsky.app

でもこのプロトタイプのコードは結構汚いし、実行ファイルを解析して依存ライブラリをビルド環境からコピーしてくるみたいなハックがかなり多くて汚かったのでやめた。そう。一旦だるくなって離脱した。

仕切り直し

ところが、このあと cargo-chef で作るイメージと実行時のイメージの依存ライブラリでABIが合わずコンテナが起動しなくなる問題に当たった。これは一旦ワークアラウンドできたが、もっと楽になんとかしたい。まずはインターフェースから考えよう。そう、やりたいことはこうだ(例)。

$ cargo container build
...(building container)...
$ cargo container push
Pushed image example.com/kuenishi/your-server:0.1.0
$ kubectl apply -f ./manifests/

まずはこの使い心地を試すために、内部的に定型的なDockerfileを生成して docker コマンドを呼び出すことでユーザー体験を試せないかというわけで、試験実装を作った。結構体験がよかったので、じゃあ crate にするか・・・となったところで「かぶってるやん」となって、ここからはリンクしないが、名前を考えるのに結構時間を使った。

さんざん悩んだ挙げ句、最終的には cargo-stow という名前に決めた。stow は詰め込むみたいな意味で、コンテナイメージにビルドされたブツをしまい込むといった意味イメージである。

リンク

これは、 Cargo.toml にいくつかレシピを書くだけでcargoからコンテナイメージを作ったりアップロードしたりできるものだ。相変わらずDockerをインストールする必要はあるが、それ以外のことは全部やることを目指している(といいつつ、 cargo-chef のような複雑な最適化はしていない)。具体的には、 Package metadata を書くだけで簡単なコンテナならビルドできるようになるものだ。レポジトリのExampleから例を引用すると、

[package.metadata.container]
target_image = "registry.example.org/directory/greeter:latest"
base_image = "ubuntu"
build_deps = ["libssl-dev"]
runtime_deps = ["libssl3t64"]

いまのところ設定する項目は4つだけで、それぞれイメージ名、ベースイメージ(これは暗黙にUbuntuにしてもいいかもしれない)、ビルド時の依存ライブラリ(ヘッダとか)、ランタイムの依存ライブラリ(動的ライブラリとか)である。これを定義すると、あとは内部的にDockerfileを生成してコンテナイメージをビルドしてくれる。ためしにcargostow に含まれているExampleをビルドすると、以下のように Buildkit のログがそのまま出る。

$ cargo install cargo-stow
    Updating crates.io index
  Installing cargo-stow v0.0.1
    Updating crates.io index
     Locking 63 packages to latest compatible versions
   Compiling proc-macro2 v1.0.103
   Compiling serde_core v1.0.228
   Compiling quote v1.0.42
   Compiling unicode-ident v1.0.22
   Compiling memchr v2.7.6
(snip)
  Installing /home/kuenishi/.cargo/bin/cargo-stow
   Installed package `cargo-stow v0.0.1` (executable `cargo-stow`)
$ cargo stow build
[+] Building 0.9s (20/20) FINISHED                                                                                                                           docker:default
 => [internal] load build definition from tmp-dockerfile                                                                                                               0.0s
 => => transferring dockerfile: 768B                                                                                                                                   0.0s
 => [internal] load metadata for docker.io/library/ubuntu:latest                                                                                                       0.0s
 => [internal] load .dockerignore                                                                                                                                      0.0s
 => => transferring context: 2B                                                                                                                                        0.0s
 => [internal] load build context                                                                                                                                      0.0s
 => => transferring context: 918B                                                                                                                                      0.0s
 => [builder  1/13] FROM docker.io/library/ubuntu:latest                                                                                                               0.0s
(中略)
 => exporting to image                                                                                                                                                 0.0s
 => => exporting layers                                                                                                                                                0.0s
 => => writing image sha256:10846c3f4d2e516b7625ecaf01f164d23351669098418af69ff2c1b1c0597961                                                                           0.0s
 => => naming to registry.example.org/directory/greeter:latest
$ docker run registry.example.org/directory/greeter:latest
Hello, world!

cargo stow push は今のところ docker push の雑ラッパーなので特に例示はしない。 cargo stow run は何ならまだ作っていない。
将来的には Docker バックエンドを投げ捨ててYoukiベースのフロントエンドを何か作り込めばDockerを捨てられるのでは・・・と期待しているが、それは次にやる気が出たときにしようとおもう(結構やることがある)。

結局現状やってることは、みんな似たようなDockerfileを再発明して苦労しているのを代わりにやったろうってだけなのだが、案外スッキリしたなと個人的には思っている。このままPoC作り捨てて終わってもよいし、使ってみようという方がいたらもうちょっとOSS業を趣味として続けてもいいかもしれない。

まとめ

  • ちょっと面白そうなツールを業務外で久しぶりに作った
  • めんどくさい拘りが出発点だけど、へんなプライドとかこだわりを捨ててまずは簡単にいこうとしたら案外簡単に作れた
  • これはPyspaアドベントカレンダー2025の記事です
  • これを作るにあたって結構探して調べたのですが、「そのツールならもう3年前からあるよ」といわれても凹まない程度には成長した自負があるので、もしあったら教えてください
  • CNCF Buildpack をこの記事を見たトンプー先生に教えてもらった。これは高機能で便利そう。

思想を追記

思想なので無視してもらってもよいが、もうちょっと思想を書いておくと、コンテナはこれからあって当たり前の時代になるのだから、プログラミング言語や処理系ごとにコンテナイメージのビルドがネイティブでサポートされていく時代になってもいいと思っている。Node, Python, Go, Rust といったメジャーな言語・処理系をコンテナに詰めるときには気をつけることややること、キャッシュすべきものが全然異なるのだから、それぞれのエコシステムで最善のプラクティスを実装して提供するほうがよさそう。Pythonもwheelに詰めるじゃなくてコンテナに詰めたらいいし、GoはKoがあるからいいけど(それでもKustomizeとかとちょっと組み合わせにくい)。

それはそれとして、一方でBazelのように、全てをビルドできる閉じた世界を作るというアプローチもあるとおもう。でもちょっとBazelは自分にはむずかしすぎるのと、各言語の全ライブラリからbzlmodが標準で提供されているのが当たり前みたいな世界にならないとちょっと難しい気がしており、一時期Bazelにハマってはいたものの、そういう世界は来ないんじゃないか・・・という気がちょっとしている。

まあこんなことしなくても全部エーアイがやってくれるから人間はDockerfileなんて書かなくていし何なら読まなくてもいいんだよという時代が来るかもしれない。ちょっとわからない。

ちなみにcargo-stowはエーアイなしで全部Emacsで書いた。趣味なんだからエーアイに書かせたら勿体ないよね!

自作デスクトップのブートSSDをNVMeに換装しました(ふるさと納税で実質0円)

全国2000万人のPCジサカーのみなさん、こんばんは。前回の自作報告は
10年ぶり?くらいにデスクトップを新調しました - kuenishi's blog
でしたが、気づけばもう4年近く同じ環境だったわけですね。SSDが壊れて足して・・・みたいなのを繰り返していたのですが、業務上NVMe SSDをさわる機会が増えてきたり、実はこのとき組んだマシンのマザーボードにM.2のインターフェースが生えていることにあとから気づいたりしていました。

どんどんM.2がほしくなってくるわけです。ドスパラのサイトを開いては逡巡する日々が続きました。昨年末ごろだったとおもう。年末に駆け込みで大量のふるさと納税をして「ハァ疲れた・・・」とかなっていました。また後日書きますが、ふるさと納税で買える食べ物っていつ来るかわからないし、量は多いしで計算できないんですよね。脂身多めのスライスばかりで、うちが好みの塊系はすくないし、ただでさえ冷蔵庫も冷凍庫もキャパいっぱい*1 なのに急にキロ単位で肉がくるわけです。なので正直肉とか食べ物ばっかりでは厳しい。こまった・・・となっているところに、すごいものを見つけてしまったわけです

www.furusato-tax.jp

これ見つけたときの興奮をおぼえておきたいのでスクショもはっておきます

これまでもふるさと納税でパソコンやカメラが手に入る自治体はあったわけですが、「ホントにその返礼品はそこの特産品なの??」と思えるようなものが多くうんざりしていたわけです。パソコンの返礼品はロースペックだし、GPUがあるわけじゃなし、日本でDRAMやCPU作ってるところもあるわけじゃないし・・・とおもったらおるやん!日本で作ってるパーツ!
そう!!!NANDメモリ!!!!マジの四日市市特産品!! 泣く子も黙るグローバル・外貨貿易黒字・カンパニー。

これはもういくしかないです。ただ額が大きいしキャッシュフローに影響があるので、できれば年末近くいったほうがいいやつじゃ・・とか1ヶ月くらいは逡巡しました。1ヶ月しか我慢できなかったともいいます。結局2TBの上位モデルいっちゃいました。まあ還元率でいうとそんなによい方ではないと思いますが、ふるさと納税だから実質0円でPCパーツが入る機会は他にないと考えることもできます。そういうわけで2月に寄付をいたしたわけですが、おそらく年末の注文がたまっていたせいか届くまですこし時間がかかり、先週やっと届きました。

M.2のセットアップはSATAも電源もケーブル不要なのがいいですよね。そういうわけでセットアップはサクッとできました。

設置

NVMe SSD を使う全国2000万人の同輩につよくオススメしておきたいのは、ブロックサイズを4KiB にしておくことです。
これはOSに関わらずやっておくとよいです。
デフォルトではなぜか512になっていますが、これを8倍にするとIO命令数が 1/8 に減るのでCPUの負荷をかなり下げることができます。
NVMe が速すぎてCPUがボトルネックになりがちな状況だとこれはかなり効きます。

$ sudo nvme format -lbaf=1 /dev/nvme0n1
You are about to format nvme0n1, namespace 0x1.
WARNING: Format may irrevocably delete this device's data.
You have 10 seconds to press Ctrl-C to cancel this operation.

Use the force [--force] option to suppress this warning.
Sending format operation ...
Success formatting namespace:1
$ sudo nvme list
Node                  Generic               SN                   Model                                    Namespace  Usage         Format           FW Rev
--------------------- --------------------- -------------------- ---------------------------------------- ---------- -------------------------- ---------------- --------
/dev/nvme0n1          /dev/ng0n1            2(redacted)P         KIOXIA-EXCERIA PRO SSD                   0x1          2.00  TB /   2.00  TB      4 KiB +  0 B   EIFA10.3

ブロックサイズを 4KiB にしたらあとはすきなように使います。わたしは / の領域にして、 /home を subvolume にして、これまでつかっていたSATA SSDからスナップショット転送して /home をそのまま移行しました。 /oldhome がこれまでの /home だとすると以下のような感じです。

# btrfs snapshot subvolume snapshot /oldhome /oldhome/snapshots/home-backup-20250419
# btrfs send /oldhome/snapshots/home-backup-20250419 | btrfs receive /
..
# mv /home /oldhome2
# mv /home-backup-20250419 /home

で、このとき注意しといたほうがいいのは、スナップショットをreceive した時点ではreadonlyになっているのでそれを外してやる必要があります(
linux - How to make a btrfs snapshot writable? - Unix & Linux Stack Exchange )

# btrfs property set -ts /home ro false

これで普通に以前の home を持ち込むことができます。
あと既存のArch環境があれば、ブートUSBなしでいろいろ簡単にOS領域作れたりします(
Arch Linux - arch-install-scripts 29-1 (any) を入れればブートUSBで起動したのと同じ状況になるから)。


その他

  • 四日市市のふるさと納税、ほかにもSDカードはSATA SSDが普通にあるのでオススメです
  • 皆さんもたくさん寄付して実質無料ハッピー自作ライフ
  • 予備パーツどうしよっかなあ・・・

まとめ

  • SSDが古くなってなんかプチフリっぽくなっていた
  • FactorioをやるなどしてSSDが埋まり気味になってきた
  • 毎年ふるさと納税のネタに困っていた(食べ物は飽きがち
  • ふるさと納税で買えるSSDが!あるんです!!
  • 実質無料で皆さんもハッピーSSD生活

おまけ

SSDに同封されていたチラシ
工業都市とふるさとがない混ぜになっていて風情があります


*1:理由はまた後日の記事でかくかもしれません

新卒採用または就職活動について

年齢が年齢で体のあちこちに衰えがきているのですが中でも厳しいのが視力。Google Docsの表示は必ず125%にする。この下書きもまず125%にしてから書き始めたこの頃みなさんいかがお過ごしでしょうか。所属先で新卒採用に関わることが多くあったので、思うところなど書いていこうかと思う。まずこの記事は職場の方針や選考とは関係がない一般論であることを明言しておく。一般論というと大げさかもしれない。IT業界では〜くらいの話だと思ってほしい。

「最近の若い奴は〜云々」といった前時代的テンプレート言説があるが、自分はこういった場面に遭遇したことがない。何ならこれまでみてきた若者の中で自分が一番ダメなやつだった自信がある。学生だけでなく職場の若手をみていてもそうだがみんな努力しており優秀だ。セレクションバイアスだと言われたら否定はできないが、こういった前時代的テンプレートに汎用性などなく、むしろ都市伝説なのだと私は思っている。大きな主語で若い人の自信を挫いて自分の言うことを聞かせる洗脳の初手といってもいいかもしれない。

ここからはこれから(これまで?)就職活動をしたわかものに対する親父の小言のようなものだと思ってほしい。

企業と学生は対等

自分の学業や経験に自信がなく、いくつかの会社からお祈りを受けて自信をなくしている人も多いと思う。個人の尊厳の問題でもあり簡単に「まけるな」とか「がんばれ」とか言えるものでもないが、世間の大原則として、学生と企業の採用担当者は対等である(自然人と法人の法的関係はわからないが多分自然人のほうが偉い)。どちらかが偉いということもないし、どちらかが媚びなければいけないということもない。売り手市場、買い手市場どちらの年もあるが学生であっても企業と学生は絶対に対等なので自信を持って対等に企業の担当者と接してほしい。自分が偉い人間だと勘違いしているような担当者がいたらその企業はやめておいたほうがいい。

レジュメは盛るとよいが情報量が大切

新卒で応募するにはまず書類を書くことになる。テンプレートの履歴書で書く人もいると思うが、あのテンプレートはやめておいたほうがよい。顔写真、住所、電話番号、経歴など無駄な情報が多い。住所・電話番号などは個人情報保護法がなかった時代の遺物で、現在は連絡手段や連絡先の管理方法が発展しているので素直に技術やシステムを使ったほうがよい。住所は面接などの段取りを考えるのに必要なこともあるが、○○県在住くらいで十分だ。
次に困るのが顔写真だ。本人確認に使える可能性があるが法的には役に立たない(要出典)。また、顔写真は性別・年齢・人種など選考に不要な情報が入る(不要どころかバイアスになって嬉しくない)ことになる。正直なところ氏名は人種性別などのヒントになってしまうので何かしらブラインドにしてほしいと思うこともある。経歴も大学からで十分だろう…と思ったが、高専か普通科くらいの区別はあってもいいかもしれないからやっぱり書きたい人は書いたらいいのかもしれない。でも大学名もバイアスになるからいらないかもしれない(Publicationみたら所属研究室まで分かっちゃうけど)。

応募書類のなかでも一番大事なのはいわゆるレジュメというやつで、A4 数ページくらいにフリーフォーマットで経歴や持っている技能、これまでの実績を書くものがある。これが個性が出るので一番情報量がある。レジュメで大切なのは適度な長さで必要十分な情報が含まれていることだ。長すぎてもよくないし、短すぎてもよくない。

レジュメのなかでもっとも大切なのは本業の学業だ。学校で規定されたカリキュラムをきちんとこなしたことが分かるようになっているとよい。大学であれば研究までやるので、発表した学会や論文などがリストになっているものが望ましい。ベストペーパーなど賞がとれたのであれば是非書いてほしい。学会の賞は個人の箔付けのためのものなのでどんどん利用すべきだ。

他によく書かれる内容としてはインターンやアルバイトの経歴だろう。首都圏のインターンシップカリキュラムは数が多く、学生にも選択肢が多いが選考も厳しい場合がある。インターンシップの面接に通るためのレジュメに書くインターン経歴が必要で、「インターンのためのインターンに行かなければならない」といった皮肉冗談をわたしも毎年話している。こういった状況は個人的には苦々しく思っており、前述したとおりレジュメでは学業を最も重視することにしている(ここは一般論ではなくてかなり個人の嗜好)。ただし研究室配属などで運がなく学業が芳しくない場合もあるだろうから、一概にインターンシップの成果を無視するべきとも思わない。

これは業界によるとおもうが、もうひとつレジュメで効く内容として趣味がある。単に「読書、ゲームなど」と書いても大した情報量ではないしプライベートを詮索したいわけでもない。しかしながら、個人が持っている熱量を判断するのによい材料になる。もし好きな(コンピュータ関連の)趣味があってどこにも発表していないということがあればそれは勿体ないと思うので、OSS活動、ブログ、IT勉強会などで積極的に発信してほしいと思う。趣味を仕事にしたいかどうかは人によると思うが、それができたらやってみたいという人は、これまでやってきたことを是非書いておくべきだ。

レジュメに書くことがないと思っちゃう場合は…

わたしはこっち側の人間だった。学業を特に真面目にできたわけでもないし、わたしが就職活動をしていた頃はインターンシップカリキュラムを公開している企業はそんなになかった(いや私が能動的に調べなかっただけかもしれない。それだけやる気がなかったということ)。なので履歴書をいざ書く段になって何も書くことがなくて驚いたことを覚えている。当時はレジュメを出すといった習慣がわたしの周りにはなかったが、当時の年齢で社会人みたいなレジュメを書ける気がまったくしない。なので、今の時代に当時の年齢で転生したら生き残れる気がしない。

企業は自分たちがほしいと思っている技能を候補者が持っているかどうか知りたいので、それが判断できない内容のレジュメは基本的に見ない。なので、候補者がやるべきことは以下の2点だけだ。

1. 企業がほしいと思っている(いそうな)技能・潜在能力を調査する
2. 自分にその技能・潜在能力があれば、それがあるということをレジュメで紹介する

レジュメに書くことがないということは、 1.2. のどちらかが足りないということなので、それを身につけるなり調べるなりしよう。多くの場合は単に言語化できていないだけだと思うので、ハッタリでもいいので何か書こう。分量が足りないと思った場合は情報密度が高いと思うので、情報密度を下げて関連情報を書き足すとよい(というと抽象的すぎてわからないかもしれないが、そういうものだと思っている)。

志望動機

これはこまりますよね〜いや本当に。「初任給高いから」「儲かりそうな業界だから」「かっこいいから」「ラクそうだから」みたいなのがあるだろうと思う。で、そういうことを正直に書いてきたり、オトナ語でそれっぽく書いてくる人もいるが、ご推察の通りこういう汎用性の高いことを書いても情報量が少ない。
なので、志望動機は汎用性を下げて業界なり企業にフィットしたことを書くのがよい。中の人が志望動機をみることによって、入社してから楽しくやれるかどうかを判断したり、やりたいことがあったときにこれは叶えてやれる、これは叶えてやれない、みたいなことを考えるための欄や質問だ。なので自分の経験でいうと「自分はパソコンいじるしか能がないんです」「チームで仕事してみたいんです」的なことを言ったと思う。

やる気のないやつはゴメンだぜ!俺たちは社畜がほしいんだ!みたいなことを試すところもあるかもしれないが、そういうところは単純にやめといたほうがいいだろう。

GitHub

個人の GitHub に草を生やすのはとても効果的だ。ただやっぱり天然芝と人工芝は見たら結構わかるものである。私は細かいところまで気になっちゃうので、実際にコードやコミットログを漁ったりしちゃうのである。昔Joel on Softwareで紹介されたビル・ゲイツのエピソードの中に「マネージャーに対して不必要なまでに現場のディテールを細かく聞き出そうとする」というものがあった。これは適当な細かいトピックをチェリーピックすることによって、マネージャーが現場をどれくらい細かく把握しているか調べるテクニックの応用だ。また、綺麗な天然の芝生が生え揃っていなくても、濃い緑のマスがあったら期待して見に行ってしまう。それくらい情報量が多い。

「GitHubに出せるようなプログラミングをしたことがない」という人もいるだろう。別にGitHubが全てではない。プログラミングができることをどこかで証明できればよい。AtCoderのレートでもよいし、学会発表のコード公開でもよい。選考過程でプログラミングのテストをする会社もある。

中途と新卒採用の連続化

就職活動を続けても全然内定がでず自信をもてない人もいるかもしれない。「〜なところはやめたほうがいい」と何度か書いたが、人によっては自分は選べるような立場じゃない、と思う人もいるかもしれないが、人間扱いされないような会社にいくくらいならやめたほうがいいと思っている(とこんなことを言うと Voluntas の声で「お前は底辺を知らない」が脳内再生される)。就職浪人という選択肢もあるだろう。卒業後もアルバイトしながら就職活動を続ける人もいるかもしれない。それでも全然いいんじゃないのと思うし、ブランクがあっても特に気にされない時代になったんじゃないかと思う。今後しばらくは少子化に伴う売り手市場が続くと思うのでなおさらだ。
といっておきながら売り手市場ってなんだ??となった。売り手市場ではなく二極化である( 「売り手市場」?「二極化」?キャリアセンターの視点で見た23卒の就活 ) という説もあるが、単にキャリアの多様化でいいだろうと思った。

まとめ

この記事はPySpa Advent Calendar 2024 の記事として書かれました。明日はWetとDryでモードを使い分けるという考えがうまい、 id:otiai10 です。

何でもやるということ

今年はなんだかとても忙しかった。といってもみんな忙しいんだから自分だけ忙しいなんてことはない。年の瀬だからとかじゃないとおもう。あと2時間でこの文章を上梓しなければアドベントカレンダーに遅刻してしまう。楽しみにしている全国一千万人のファンに申し訳がない。

adventar.org


さてわたしはこの職業について15年以上になってしまった。やっている事柄からしてソフトウェアエンジニアを自認していた。最初の一社は下積みといった感じであったが、ソフトウェア開発をしたり、ちょっとした研究会で発表をしたり、かとおもえば開発プロジェクトでペーパーワークをしたり、プロジェクトで使うサーバーやソフトウェアライセンスを買ったりもしていた。ソフトウェアを書いて何かに使うという時間は本当に短かったように思う。
二社目でようやくソフトウェアエンジニアというタイトルがついた。外資になってタイトルがついたと思ったが、小さな会社だったのでProfessional ServiceやPresalesもやったし、いわゆるロードマップを見て機能開発をするソフトウェアエンジニアリングもやった。顧客のシステムで自分たちのソフトウェアが問題を起こしたときはサポートもやった。

現職はもっとよくわからなくなった。1stではないものの国際会議に論文を書いて出したりもしたし、OSS開発もやった。社内システムの運用もやったし、なんなら大規模にサーバーインフラを打つといったこともやった。ベンダーやメーカーと付き合ってハードウェアのロードマップを見ながらいつどのハードをいくら買うか、予算はいくら必要だからと見積もるようなこともやってきた。なんならこれまでのキャリアの大半でソフトウェアエンジニアを自認していたくせにソフトウェアエンジニアリングをしていた期間は思っていたよりも短いとすら思う。

天職の図

不惑を過ぎて自分はこの仕事が好きなんだろうかと自問することは少なくなった。必要だと思ったことは何でもやるつもりだ(もちろん優先度や、自分が得意かどうかをみつつ仕事を選ぶ)。やるつもりだけど、好きかどうかでいったらFactorioやスプラトゥーンしていた方がずっと楽しい。今年は430時間プレイしたらしい。平日夜や土日は基本的に疲れているので論文やエディタを開くことはほとんどなくなってしまった。ちょっとした職業病みたいなもので、「そのプログラム書いたらどれくらい得なの?」とか「その小便利なホームハックしたってうちで運用するの基本的にダルいよね?」みたいな感じになってしまった。

ソフトウェアエンジニアは最新技術にキャッチアップしなければならない、みたいなのはプロフェッショナルならどの職業でもそうだと思うのだけど、これは結構元気が必要。本職で昼間は火がついているのに夜ノホホンとインターネットを眺めていてうっかりプログラミングの話が目に入ってこようものなら、昼間に見かけた負債やToilのことを思い出してゲンナリすることもある。
業界事情は常にキャッチアップしないとなあと思う反面、昔勉強したことはいつまでも覚えているもので、昔話をすることが増えてしまった。自分の思考が昔のことに囚われているような気がしたり、他人に自分の偏見や成功(失敗)体験を押し付けているような気がしてくるので昔話はあまり好きじゃないのだけども、それでもやっぱり自分が知っている経験をなるべく歴史にして忘れないように(同じ失敗をしないように)してほしいという気持ちもあるので、義務感と感情が衝突して心苦しい。
これは時効だと思うのだけど、わたしがまだ20代の頃にストレージメディアとしてSSDがようやく出始めで、Seekが必要ない画期的なデバイスで研究をしようという話が近くの同僚と持ち上がったものの、当時50代であったろう部長が磁気カードだったかの開発体験をもとに「フラッシュメモリはダメだ、ありゃあ消えるしウソをつく」みたいな苦労話を15分ほど聞かされて話がシュンと立ち消えになったことがあった。SATAだろうがNVMeだろうが出始めでもSSDメディアは内部でファームウェアコントローラがエラー訂正なりデータ冗長化なりをしていて、HDDとほぼ同様もしくはそれ以上の信頼性が出るという知識があっても(今では常識だが当時はそこまで分かっていなかった)、そんなことはないと歯向かえるようなこともなかった。彼は若いわたしたちに失敗(デスマ)させまいとおそらく善意で昔話をしたのだろうけども、まあ善意だから結果的によかったということでもない。力不足ということでもあったのだろう。

蒸発の図


昔はパソコンを触るのが好きだったはずだ。すべての問題が杭に見えていたこともあったが、勢いはあったとおもう。パソコンさわってるだけで仕事になるなんて最高じゃあないか、趣味を仕事にするのは幸せなことだ。それは一面ではそうだろう。まあでも最近はプログラムを書かないで問題解決しようとすることの方が多くなってしまい(なぜなら書いているヒマがないetcで108個くらい理由はある)、自分は果たして好きなのだろうか、みたいなことはここに書くのも実は恥ずかしいのだがよくわからなくなってしまった。これは単なるBurnoutと考えることもできるし、名人伝でいうところの弓をとらなくなってしまったあたりなのかもしれない。あれも解釈は正直よくわからない。

仕事として価値があることは何でもやるように心がけているし、価値のありそうな仕事はソフトウェアエンジニアリングであろうがなかろうがモチベーションはあがる。その反面、プログラムを書くときに「これは金になるだろうか?」みたいなことを反射的に自問するようになってしまって、そのプログラムが面白いかどうかを考えることが少なくなった。腕前が落ちてプロトタイプが動くまでたどり着かなくなってしまったのかもしれないし、腕前が上がってすぐに飽きるようになってしまったのかもしれない。

何でもやるという気概を持っていると、だんだん何もできなくなってしまうのかもしれない。あとすこしでFTL Driveができるので、それができたら何か仕事もパソコンも関係ないことしてみようかな。自己研鑽。

あと少しでFTL Driveが作れるようになるの図

明日は @hajimehoshi さんです。

岡山の記憶 その1

歳のせいか昔のことを思い出したり語ったりするようになってしまった。みっともないのでこういうところに書くだけにしてなるべくリアルには人の耳に触れないようにしておきたい。

高校時代はJR線を使って電車通学をしていた。はじめは自転車で岡山駅に行って西口の地下駐車場に停めて電車に飛び乗っていた。光景としてはこのブログそのままであった。

happipop.blog90.fc2.com

ひとつだけ画像を転載する。

岡山駅西口旧駅舎内部の改札
岡山駅西口旧駅舎内部の改札 ☆楽しい毎日2☆より転載

ここが自動改札になったのは高校時代の途中からだったと記憶している。それ以前は駅員が立っていてスッと定期入れを見せて走り抜けるのが朝の通例であった。

もうすこし大きい画像はこちらから。

yufuki.cocolog-nifty.com

資料的にはっきりしている記事はこちら。最近の姿も出ているが、なんにしろゴツい・・・それだけ利用者が増えたということなんだろうか。都心の駅と変わらない大きさであるが、岡山の経済規模もこれに合わせて賑やかになっているといいな。

ekisya.net

西口旧駅舎。昭和63(1988)年3月改築。再開発のため平成19(2007)年11月に閉鎖、平成20(2008)年3月に解体されました。
跡地には広場・バスターミナルが整備され、平成22(2010)年4月末に使用開始されました。

と時系列も明示されている。この駅舎かわいくて好きだったし、古いと思っていたがそこまで古いものでもなかった。国鉄時代の姿も掲載されているが、思っていたより味気ない昭和であった。

実は岡山駅西口を利用していたのは高校時代も途中までで、そこから津山線でひと駅進んだ法界院駅の方が通学しやすいことに気がついて途中からはそちらを利用していた。その姿も ekisya.net に収められている。

ekisya.net

岡山市街の住宅密集地にある駅。幅の広い島式ホームの駅です。岡山大学津島キャンパスの最寄り駅で、この駅で折り返す通学列車が運行されています。
明治41(1908)年6月開業時の駅舎ですが、駅舎の右側の一部が解体され、コンパクトになりました。(2001.10撮影)

なんとあの駅舎にそんな歴史があったとは知らなかった。中は磁気カードの定期を入れて通るタイプの自動改札であったように思う。この向かいに私営の駐輪場があって、自分で自転車を停めなくても入口に置いてサッと電車に乗るとおっちゃんが奥にしまってくれるシステムであった。鍵もそのまま預けてしまうのである。あれは本当に便利で好きだった。

当時はあの光景がなくなるなんて想像もしなかったけど、毎秒姿を変えていく東京に住んでいるとそういう感覚もすっかり忘れてしまった。デジタルカメラを買ったのは21世紀に入ってからだし当時の写真がまるで残っていないので記憶で語るばかりになってしまった。

オチも〆もない。

我が家の生活物資事情コストコ編

この記事は PySpa Advent Calendar 2022 の13日目の記事です。前日はしろうさんのFactorio記事でしたね。 

実は2019年末に自家用車を購入していました。たまたま今のコロナ禍が始まる直前だったのは本当に運がよかったとしか言いようがなくて、ワクチンが出るまでは電車に乗ることが本当にためらわれてしまうところだったのが本当に助かっています。このことで移動の自由が、実は人間の精神の安定に大きく寄与していることに初めて気付かされました。このタイミングで自家用車を手に入れたことによって生活が大きくかわりました。それまで近所のスーパーマーケットに(妻が)ほぼ毎日徒歩で行って両手に大荷物を抱えて雨だろうが雪だろうが帰ってきたり、物資が切れたタイミングでヨドバシカメラに補充品を追加注文して管理しきれなくなっていたところでした。小さかった子供がどちらも小学校に入ってみるみる成長し、我が家の食糧がかつてないスピードで消費されていくようになりました。自家用車がなければ本当に詰んでいたところでした(今は自家用車の維持費と教育費(プラス各種補助の所得制限)で財政が厳しい以外は何とかなっている)。

自家用車を手に入れたことによって、遠方の大型商業施設にも足を伸ばせるようになりました。ららぽーと、イトーヨーカドー、IKEAなど。その中でも重要な位置に躍り出たのがコストコです。コストコは「倉庫店」というネーミングからもわかるように、倉庫をそのまま店舗にしてバルクでものが買えるようにした小売店です。小売店といいながら倉庫がそのまま店舗になっておりSKUの単位が大きく、流通、棚卸、品出しとレジのコストを大きく削減できる一方で客単価を大幅に増やしたことによって強力な収益力を手に入れました。一方客にとっては必要なものをまとめ買いすることで生活物資の調達を効率化し、なおかつ全てをお徳用で買うことによって生活費の削減も期待できます。しかも日本にはあまりないアメリカの生活物資が並ぶ上にアメリカンスタイルのフードコートも併置されており、アメリカンライフを疑似体験できるという付加価値までついています。あまりに大人気で、連休や土日はどの時間帯にうんざりするほど混みますが、それでも人はコストコに集まります。

取材班はその謎を明らかにすべく、関東近郊のコストコ巡礼を始めた・・・

店舗紹介

遠い店舗もありますが、休日はドライブがてら遠くに行くことが多いです。高速代はかかりますが、そこはドライブなので実質無料。コストコでひとつだけ注意が必要なのは、VISAのクレジットカードが使えないことです。十分な現金かMasterCardのどちらかを持っていく必要があります。

幕張倉庫店

都心から一番アクセスがいいのが幕張倉庫店です。首都高にのってもいいですし東京の東側からなら下道でもすぐです。ただ初期からある店舗だけあって建物も小さめで混みがちです。売り場が2フロアにまたがっていて特殊な配置になっているので、慣れないと必要なものがどこにあるかわかりにくいです。

新三郷倉庫店

次に都心からアクセスがよいのが新三郷倉庫店です。ここは常磐道からのアクセスもよく、都内ナンバーの車もよく見かけます。店舗や駐車場もほどよい広さですが、アクセスがよいだけあって休日は混みます。店内の配置はコストコの標準的な配置になっていて、適当な順路でグルーっと廻ると必要なものが網羅できる感じです。ただ混んでいるので品物の回転が早く、特に人気の生鮮食品は品切れがあったりします。店内が一番空くのは平日の夕方から夜にかけてですが、夕方に都心から下り方面で移動するとラッシュに巻き込まれて移動時間が読めない場合があります。
幕張店よりもオススメ度が高いのはもう一つ理由があって、ここにはガソリンスタンドが併設されています。通常のガソリンスタンドよりもリッターあたり10円程度安いので、自動車での移動が多い人や燃費のよくない車に乗っている人はここで給油することがオススメです。ガソリンスタンドは現金決済ができないので、MasterCardが必要です。

近くにIKEAとららぽーとがあり、荷室が大きな車を持っている場合はまとめて買物を全部済ませることができるので便利です。

つくば倉庫店

新三郷倉庫店ではちょっと物足りないなあ、というときに行きやすいのがここです。新三郷インターで降りずにそのまま常磐道を20〜30分ほど北上するとすぐに着きます。ここは新三郷などの都内近郊店よりもさらに店舗が広くガソリンスタンドもあり、来客数が落ち着いているので品切れが少ないという点でオススメです。近くに筑波山もあるので、そこで少し山道のドライブを楽しんで来るのもよいかでしょう。
ただしここで野菜を買うことはオススメしません。つくば中央ICに向かう途中にあるみずほの村市場 に野菜の直売所があり、そこでよい野菜を多く買えるからです。


金沢シーサイド倉庫店

すこし趣向を変えてこんどは南方に行きます。ここは海沿いにあって、湾岸線をブワーッと走っていくと終点の少し先にあります。ここはコストコとしてはこれといった特色があるわけではないのですが、近くにある横浜南部市場 でうまいランチを食べて野菜を買ってから行くのがよいでしょう。

壬生倉庫店

壬生倉庫店は最近開拓したところです。東北道に乗って1時間以上かかりますが距離の分の価値はあります。とにかく店舗が広いです。休日に行くと混みがちなのは栃木唯一のコストコだからでしょうが、混んでいるのは駐車場だけ。店舗はとにかく広いので中でストレスを感じることはほとんどありません。巨大な冷蔵室の中に入って「サム〜〜〜」となるのを楽しみましょう。
壬生倉庫店の魅力はもうひとつ、途中の北関東自動車道壬生PAにある壬生ハイウェーオアシスです。サイトは「ハイウェイパーク」になっていたり、単に「道の駅」となっていたりでよく分からないですが、ここにも野菜の直売所があります。ここには壬生産のネギ、白菜、大根などの野菜が出ますが、どれも大きくて安いです。コストコではなくここで野菜を買って帰りましょう。60~70センチほどもある大きな白菜がゴロゴロ置いてありました。

オススメ商品

コストコに求めているものは食糧や生活物資であって、物珍しいものを買うことはありません。とにかく車のトランクに満載して、トランクに積みきれない場合は後部座席に詰めて帰ります。じゃあ何をそんなに買うの???ということで一部ですがよく買うものを紹介していきます。多分オカシイんじゃないかって言われそうな気がしています。どの店舗行ってもそうなんですが、うちだけカートに山積みになっていて買ってる量がおかしいんです・・・

とにかく肉です。近所のスーパーマーケットで数百g単位に切り分けられた商品は、切り分けた分のコストが入っています。どうせすぐに食べてしまうのに小分けにしてしまうのは勿体ないのですが、コストコではkg単位で肉を売っています。我が家の消費量の目安でいうと鳥の唐揚げは一回の食事で1kgです。豚汁は500gからです。餃子は300gです。メンチカツは冷凍保存にもまわしますが一回1.8kgで仕込みます(全部妻がやってくれます)。なので大きいことが正義です。
まずカナダ産三元豚ロースしゃぶしゃぶです。写真だと2.3kgくらいあります。写真だと89円/100gですが今は少し値上がりしましたね。これがコスパよいです。これを家庭用のブレンダーにミキサーアタッチメントをつけてひき肉にしたりします。すぐに使わない分は小分けにして冷凍します。

costcotuu.com


次は 100%ビーフパティです。脂が入っていなくてタンパク質効率がよく、12枚にいい感じに小分けにされているので調理もしやすいようです。メンチカツやロールキャベツに使います。タネだけ作っておいてハンバーグにもしたりするようです。これも2kgくらいあって胃袋を満たしてくれます。

macaro-ni.jp

これがこうなります


USAビーフ肩ロースカタマリはロースがほしいときに使います。これも1.5kg くらいあってコスパがよいです。妻がステーキ用と煮込み用に切り分けて使います。煮込み用は肉ゴロゴロカレーとかシチューになります。ステーキは主に私が食べます(焼いてもらいます)。

costcotuu.com


イチボブロック はAnovaで低温調理してローストビーフにします。脂肪が多すぎず少なすぎず食べ方も応用が効くのでよいです。

maz-style.com

だいたいこの4種類の肉から家で在庫が切れているものを選んで買います。ストックが切れるタイミングをみて買いに来たりするので、多いときは合計で6kgとか買います。レジに出すときにデカい肉を何度も運んで「ホントにこれ食うんか・・・?」と思いますが、しばらくして気づいたら「もうないよ」って妻に言われます。




衛生的な観点とポータビリティから我が家では外出時に水筒ではなくペットボトルのミネラルウォーターを持って出かけることが多いです。在宅時も2Lのペットボトルでは運用性が悪いので500ccのペットボトルの水を飲みます。
このサイズの水はロクサーヌウォーターカークランドシグネチャのもの をどちらか選んで買います。サイトでみるとすごい値段ですが店舗にいくとすごく安いです。

その他食品

スイスデリス ダークチョコレート 1.3kg もオススメです。ふつうの板チョコは砂糖や脂肪分が多くて非常に食べづらいですが、このダークチョコレートは脂肪も砂糖も少なく、かといって苦くならない程度に入っているので食べやすいです。個包装になっていて雑に手づかみでわしっと掴んで卓上に運んで、こいつをガリガリやりながら仕事したりします。3000円未満の袋にとにかくアホほどチョコレートが詰まっていてコスパもよいです。これはなくなるのに結構時間がかかるので、数ヶ月に一回買う感じです。

好き嫌いのある子供に栄養分をとらせるのは難しいです。バランスがどうとかいってられません。とにかくカロリーを与えるのです。そのときに有効な手札として、チーズのフライです。これで二翻です。二翻あれば食べてくれるしカロリーもそれなりにあります。モッツァレラチーズスティックは二翻の冷凍食品です。で、量が多いので困ったときはこれを揚げます(妻が)。子どもたちはこれが大好きで、争って食べています。

ultimate-setsuko.com

雑貨

ペーパータオル は、他の日系店舗では買えない量と厚さがあります。分厚くて丈夫なのでどんなところでも拭けます。何なら使い捨て雑巾の代わりにしたりします。窓を拭いたりとか。汎用性高いです(オンラインだといい値段ですが店舗だと安く買えます)。

トイレットペーパー は少し厚めで肌に優しい感じがありますが、一方で厚いので一度に使いすぎると詰まりがちです。これは日本の便器メーカーがJIS規格(JISP 4501というそうです)のトイレットペーパーをベースに便器を開発しているのに対して、このトイレットペーパーはJIS規格よりも(たぶん)厚めになっているからです。だから売れてるんだと思いますが・・・それに加えて1SKUに60ロール入ってて、紙の消費量が多い家庭でもこれひとつ買っておくだけで当分トイレットペーパーを買わなくていいというのも我が家で採用している理由です。

最後に紹介するのはプラスチックケース です。よくホームセンターにあるプラスチックケースとちがって、フタと容器を分けて重ねることができるので使っていないケースの収納性が高いです。我が家ではこれを常にいくつかストックしておいて、片付けたいものがあったらこれに放り込んで積む運用をしています。A4の書類やコミック誌などあらゆる小型〜中型の雑貨をこのケースに収納することで、ある種の標準コンテナとして運用して収納効率やケースの相互運用性を高めています。

我が家のルーチンとしては、だいたいここに紹介したような品物を月に1~2度、どこかの店舗に補給しに行くイメージです。在庫管理にはGoogle KeepのItem Listを使っています。不足しているものをまずこんな感じでチェックボックスリストにします。




店舗でカートに入れたらリストのものをチェックすると下にまわって消化済になります。ストックがラス1になるとかでそろそろ補給が必要だなとなったら、Keepのページを開いて、チェック済みの品物のチェックを外します。そうすると未チェックになってリストの先頭にまわります。ある種のカンバン方式かなと思います。

いかがでしたか? 以上、我が家のコストコ・ハックでした。明日の担当はデスマ部顧問こと佐藤太一さんです。

二月の戦い 実践編

Pyspa Advent Calendar 2021 , 9日めの記事です。

まだ戦いは先の話なので気軽に書いています。二月の勝者は未読です。私自身は中学受験はしていませんが、祖母は神戸で私塾を営んでいて、小学生の頃は家族で帰省する度に食塩水の問題を解かされたりしていました。ネットではタワマン文学と併せて茶化されるサピックスですが、今まさに長男が通っているので、父親として見聞きできる限りの実態を赤裸々にお伝えしようと思います。

基本的なサイクル

サピックスでは毎週、4教科(理科、社会、算数、国語をひとコマずつ)の授業があります。その授業1回につき一冊のテキストが配られます。どれもだいたい10〜20ページくらいあって、教科ごとに構成が違います。

  • 算数…その週の知識確認問題と、復習用の問題、発展問題、計算力コンテスト
  • 国語…その週の文章題。物語文、説明文など週によってまちまち。
  • 社会…その週のカリキュラム内容の解説が前半にまとまっている。後半には知識確認問題→応用問題→先週までの知識確認問題
  • 理科…その週のカリキュラム内容の解説が前半にまとまっている。後半には知識確認問題→応用問題→先週までの知識確認問題
  • 6年生になると、4教科に加えて志望校の対策授業がみっちり入る。

その週のカリキュラムは配られたテキストに書かれています。授業で解説されて授業中にテキストの問題を一部練習で解きます。残りは持ち帰って全部やります。これを親が採点して復習させます。翌週には、理解度をチェックするテストが各教科であります。ウィークリーで理解度を厳しくチェックして、これがよくない子は集中的にケアがされるようです。ケアの度合いは上位のクラスほど丁寧であったり厳しかったりします。
この「上位のクラス」というのを規定するために、ほぼ毎月組分けのテストが行われます。いわゆるマンスリーとか組分けというやつです。組分けのテスト範囲は、それまでの授業範囲を指定したテストの場合と、範囲を特に定めない実力テストの場合があります。このテストの点数によって厳密にクラス分けされます。クラス分けは、いわゆるαグループ(上位1〜2割)と、アルファベットで分けられる通常のグループに分けられます。クラス数はその教室の生徒の人数によって変動しますが、マンモス校だと26クラスとかあるようです
また、子供の学校の休みに合わせて春季、夏季、冬季の講習があります。これらの講習ではサイクルが一週間よりちょっと短くなりますが、短くなるだけで授業→復習→小テストのサイクルは変わりません。1,2,3学期に加えて春夏冬の講習があって、ざっくり年間で6セメスターある感じです。とはいえ1,2日連続した授業日の合間に1,2日あきますし、盆暮れは休みになるので、その合間を縫ってで旅行や帰省をすることになります。ここ2年はたまたまコロナ禍で旅行帰省をしにくくなっていたので、幸か不幸か好都合でした(ToT)。

これに加えて、半年に一回サピックスオープンという全国?模試があります。これで自分の位置取りをテストして、偏差値から志望校に対する合格率を確認することができます。といっても、20%, 50%, 80% といった大まかな値しかわからないようになっていて、そもそもテストの成績は正規分布に従うようにはなっていないのだからあんまり当てになるものでもないです。なんとなく、近い中くらい遠いくらいが分かる程度のものです。

というわけで、基本的なサイクルとしては、以下のようなものになります。

  • 毎週は授業→復習→小テスト
  • 毎月はマンスリーテスト→組分け
  • 半期ごとにに組分けテスト
  • 半期ごとに全国模試→志望校を考える

これに対して月謝がだいたいN万円で、毎週の授業時間もNに比例して長くなる感じです。高学年になるほどNは大きくなりますが基本的には一桁です。サピックスにかかる月数万円が教育格差というのは確かにそうですが、サピックスに入る目的は中学受験で、都内の私立中高一貫校に入るためです。サピックスの月謝はこういった学校の学費と大体同水準なので、私立校を目指すのであればそれくらいの経済力が必要になるということです。ただ、そういった私立校の多くは奨学金の制度があるらしいので、それを目当てにするのであればサピックスにかかる金はわりと高いということになるでしょう。
実際には、サピックスに通える地域に住んでいること、サピックスの復習を採点できる程度の親の教育と余暇も要求されているので、これも加味して考えれば大きな格差といえるかもしれません。わたしも地方の公立中出身なので、都内にいることのアドバンテージが非常に大きいことを知っています。

クラス分けについて

サピックス都市伝説として、クラス分けが子どもたちのカーストを形成していると言われます。地方出身のわたしにはまだ信じられないことですが、どうやら都会ではそうらしいのです。運動が苦手でも子供が自信を持てるのは素晴らしいことですが、どうやらそれがマウンティング要素にもなっているようです。そもそもマウンティングするような子供に育てるべきではないですし、マウンティングされたからといって自信を失わないようなメンタリティを育てていきたいところですね。子供の誇りの扱いは難しいと思いますが、いろんなことをやらせて、勉強以外でもとにかく自信をつけさせるようにしてやりたいですね。
サピックスで上位に入るために家庭教師をつけるという話を聞いたことがあります。どうも上記のようなサイクルを親子だけで回せないような場合に、サピックスとしてもこれを推奨しているようです。子供の成績が上がってサピックスで結果が出るようになるのはいいことでしょうが、我が家では家庭教師をつけるほどの余裕(時間、金銭、場所)はないので、子供のためにそこまでできるのは本当にすごいことだと思います。でも実際に家庭教師をつけているという話はうちの子供の周りでは聞かないので、やっているとしてもごく一部なのでしょう。

我が家でも、もちろん成績を少しでもよくしようと努力をしています。ただ物量的な負担はかなりのものになるので、理科と算数はわたしが、国語と社会は妻がみています。親の負担はこうして分担できますが、勉強する本人はどうやっても分担できないので本当に大変だと思います。家庭での指導は、基本的には授業でもらってきたテキストの残った問題を解いて採点する、解けるようになるまで繰り返すというスタイルをとっています。ただこれがどうやっても量が多いです。天才タイプの子供であれば1教科1時間程度で済ませられる量ですが、普通はわからない問題があったり、授業で解き方を教えてない問題があったり、先生の教え方が曖昧(or子供の理解が曖昧)なものがあって、1教科数時間かかるのが普通だと思います。
ここだけの話ですが(といいつつインターネットに書く)、テキストの問題や回答例もたまにすごく完成度の低いものが混ざっていて、曖昧だったり意味不明だったりします。そういうときのために、先生に質問する機会が設けられている(休み中は電話もできる)ので、それは積極的に活用すべきです。テキストにあることをすべてを金科玉条のごとく信用するのは危険ですし、そのときに親の教養や知性が問われます。心を強く持つ必要がありますが、9割以上のケースではよくできているので疑い過ぎることのないようにします。

中学受験そのものについて

では、そもそも中学受験とはいかなるものか?基本的には、小学校のカリキュラムの範囲内か、中学校のカリキュラムに触れない範囲で学校が入試問題を作成して入学者を選抜します。塾としては、そういったテストで高得点をとれるように子供を訓練することになります。

この「中学校のカリキュラムに触れない」というのが曲者で、いわゆる植木算、旅人算、鶴亀算などが典型ですが、サピックスの問題はさらにそこから少し広めにカバーしてきます。見たことのない問題で子供が戸惑わないようにしているのだと思いますが、わたしが見る限りでは順列組み合わせ、等差数列、幾何学などの内容がガッツリでてきます。さすがに微積分や線形代数は出てきませんが、鶴亀算なんかは複雑で連立方程式なしには解けないようなものが出てきます。算数が得意な子供は脳内で鶴亀算を変数なしで展開して連立方程式を解くのに相当することをやってのけるようですが、そこまでいくと親(と塾講師)の能力を超えてしまうので、結局代数学もどきを教えてしまうことになります。□や△を変数にしたり、比率も必要な場合は③とか⑤といったよくわからない記号をつかって代数的に解いていきます。ここまでくると何を教えているのかわからなくなってしまい、果たして中学受験とは何だったのか?みたいな気持ちになります。

理科だと典型的には百葉箱だったり日時計、星座の問題がでてきたりします。星座や天体運行なんかは脳内に太陽系の配置と天球を三次元的に理解させるのである程度直感でなんとかなりますが、百葉箱についてはpyspa内でも議論になりました(私が一方的にキレていただけともいう)。つまり、果たして百葉箱は真に気温を測れているのか?なぜ白いのか?なぜ芝生の上でなければならないのか?これらはさまざまな物理現象の複合で、知識があればあるだけそれを動員して答えることができます。わたしが特に???となったのは、百葉箱が芝生の上に立っているのは「地面から熱が伝わらないようにするため」という回答例があったときでした。字句通りに読むとこれは熱伝導という現象を前提にしていることになりますが、気体を介した熱拡散を熱伝導と呼んでよいのか?流体も含むため熱拡散方程式では記述できない複雑な現象なのではないか?という疑問があたまから消えませんでした。地面からの黒体放射はどの程度影響するのか?等々議論の結果、どうやらいわゆる一般の模範解答でいいらしいのですが、まあ明らかに小学生が理解すべき範囲を超えているわけです。

他にも、古典力学でいう回転モーメントのことをテキスト中で「回転させる力」と定義していたりで、とにかく中学以降の範囲に触れないように言葉を選んだ結果わけのわからないものになっている、というのが中学受験競争の実態だと思うようになりました。まあ実際には十分な時間教育を受けたわけではない子供の先天的、後天的能力を公平に測って比較選抜するという超絶無理難題に対する試行錯誤の結果だとは思うのですが、それにしたって比較選抜される側は大変です。

仕事柄、そういった選抜に子供時代に勝ち残った人たちと接することがありますが、皆一様に人格者であったり、なんかしら優れた能力を持っていたりするわけで、どちらが因果かははっきりしないですが(そして生存バイアスかもしれませんが)、社会のシステムとしてはよくできているのだなと思ったりもします。

親が子供に教えるということ

なぜ人類は有史以来、子供に習い事をさせたり、家庭教師をつけたりするのか?これは親にその能力や時間がない場合も多いですが、もうひとつ大きな強い理由があることははっきりしています。親と子の関係に加えて、教師と生徒という関係を併存させるのはとても難しいからです。親は子供に期待をします。子供はもちろん期待に応えようと努力します。でも、どちらも完璧にはできません。子供の能力を超えて親が期待することもありますし、親の全ての期待に子供が応えられることはほとんどありません。そのギャップが大きいほど親子それぞれが苦しむことになります。「どうしてこんなこともできないんだ」「そんなのできるわけないよ」「どうしてサボるんだ」「サボってない(こんなに沢山できないよ)」といったやり取りを経験した人も多いと思います。
子供に甘くしすぎると成績はあがりませんし(小学生なのでself-motivateするのは難しいのが普通です)、かといって厳しくしすぎてもだめです。親子に埋められない溝ができたり、子供を深く傷つけたりすることになります。いくら受験に勝利してもそうなってしまっては元も子もないですから、そこにはなるべく注意を払いますが、それでも感情的になってしまうことはあります。ままならないものですが、これをうまくやらないとそもそもスタートラインに立てません(勉強する姿勢にならない)。

子供をいわゆる「いい学校」に入れるのは、教育の一環です。親が幼少時の育児を終えたあと子供に最後に贈ることができるのが教育です。教育とはつまり、子供が経済的に自立するための能力を与えてやることで、これは実際には学歴や専門知識である必要はないです。結果的に自立できるのであれば、音楽やスポーツ、芸術であってもいいと思います。実際勉強するのが一番コスパがいいとは思っていますが、塾に入れて勉強させるのは親がそういう選択をしたということであって、まあ私の場合は他がサッパリダメなのでそれくらいしか教育をできないということでもあります。なので、子供が本気で「勉強したくない」と言ったのであれば認めて受験をやめるべきです(ここは議論のあるところだと思いますが、原則論はこうです)。なので、上から「勉強しなさい」と頭ごなしに叱ったり脅したりするのではなく、方便を尽くして説得することになります。もちろん大人対子供なので、どうディベートしても大人が勝ちやすいのが実態ですが、なるべく誠実に自分の人生で知る限りのことを解説します。勉強ができるといろんな知識や技能が身につく、知識や技能が身につくと年収があがる、年収があがると不幸を減らすことができるし漫画やゲームだって大人買いできる・・・等々。読者諸君はどうやってお子さんを説得しているでしょうか。

その上で、親は子供の横に立って一緒に問題を解いたり、学校見学に行ったり、テストや勉強を応援することが大切だと思います。中学受験も侮れないもので、理科や社会の知識問題では親よりも博識になっていますし(山に行ったらあの花はなんだ、あの葉っぱはなんだと解説してくれます)、理科の問題では親の理解が曖昧なところを復習できたりします。わたしのおすすめのテキストは「よくわかる初等力学」です。サピックスのテキストでなあなあで済ませているところを、古典力学で解析的に問題を解いたり暗黙の前提をうまくすべて言葉にしてあったりします。微積分が出てくるので子供に直接読ませるのは難しいのですが、これを見ながらサピックスの理科で出てくる物理の問題を自信をもって子供に解説できるようになりました(そしてサピックスのテキストがかなりきっちりと要点を押さえていることにも気づきました)。


著者の前野先生は同様のシリーズを理科の他分野でも出しているようなので、こちらもおいおい買って読んでいこうと思っています。

話を戻すと、中学受験はいわゆる二人三脚(両親なのでうちは三人四脚ですが)で、子供の学力を上げる息の長いプロジェクトをやっているようなものです。うちでは親子に加えて師弟という関係を追加することにしました。このプロジェクトの過程でよくも悪くも子供のいろんな面をみて学ぶことができました。まだ終わってないけど。単なる養育とは違う、一緒に何かを頑張るという新しい関係を息子とは構築できたような気がしています(向こうはしんどいとしか思っていないかもしれないけど)。まだ終わってませんが、そういう建設的で新しい関係を築けただけでもよかったなあと思って、日々息子を「勉強やろうぜ」と煽っているところです。

Tips

うちで実践していて上手くいってる(上手くいかなかった)取り組みを順不同で紹介してみようと思います。子供をけなしているような表現が多くみられますが、これは筆者の子供時代の経験や記憶を振り返っても真実だと思っているので異論は認めません。そして息子はびっくりするくらい父親に似ます。びっくりするよホント。

Bad

  • 勉強用の個室を与える・・・人目がないとずっと遊びます。自室には誘惑が沢山ありますが、子供という生き物はなんでもオモチャにするので監視の目が必要です
  • 居間で勉強させる・・・人目がありすぎても集中できなくなります。弟が大声で歌ったり母親が料理をしていたり、在宅勤務の父親が母親と雑談したり。
  • 夜遅くまでやらせる・・・「夜の方が集中できる」ダメです。俺みたいになるな
  • 勉強計画表を作らせる・・・計画は破るためにある
  • 目標達成したらご褒美・・・子供という生き物は何があっても勉強したくない生き物なのでご褒美は特に効果はありません
  • 毎月のKPT振り返り・・・親が主導してできるかと思ったけど、そもそも親が普段やってないことを子供にやらせるのは無理だった

Good

  • スタバとかに連れ出して一緒に勉強する・・・家の雑音から隔離して適度に人目のあるところに置けて、なおかつ外出で気分転換にもなる
  • 毎日言葉で応援したり煽ったりする・・・小学生男子の記憶力はトリ並みなので毎日思い出させてやる必要があります。今風にいうとモチベーションマネージメントというやつです。
  • テストの結果だけでなく内容を一緒に見てほめたり対策を考えたりする・・・テストはいわゆるシステムからのフィードバックなので客観的な目でもレビューして言語化してやると、数日くらいはモチベーションアップに貢献するようです
  • 気分転換の外出・・・ごく稀に公園にテーブルを持ち出して勉強したり、プロバスケットボールの試合を観に行ったりします。旅行は難しいですが日帰り程度なら気分転換になるようです。なっていると思いたい。
  • ブラタモリと鉄腕DASH・・・夕食時に家族で観ます。このときだけは勉強のことは忘れて、家族みんなで楽しく観ます。それ以外はほとんどテレビはつけません。
  • 運動系の習い事・・・本当はもっと運動させたいのですが、なんか親に似て運動嫌いみたいなので、本人が楽しいと言ったやつに週二つ行かせています。

まとめ

二月の戦いについて我が家の現状をまとめてみました。まだ終わってないからこそ書けることばかりでしたが、いかがでしたか?