二月の戦い 実践編

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・・・夕食時に家族で観ます。このときだけは勉強のことは忘れて、家族みんなで楽しく観ます。それ以外はほとんどテレビはつけません。
  • 運動系の習い事・・・本当はもっと運動させたいのですが、なんか親に似て運動嫌いみたいなので、本人が楽しいと言ったやつに週二つ行かせています。

まとめ

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

役職定年と定年延長について

川田耕作 on Twitter: "大企業勤務で30歳台後半で妻子持ちで能力は普通だがTwitterでキラキラした外の世界に少し憧れて転職に興味を持ち始めた人達へ贈る言葉… "

大企業勤務で30歳台後半で妻子持ちで能力は普通だがTwitterでキラキラした外の世界に少し憧れて転職に興味を持ち始めた人達へ贈る言葉>考えるな!大企業にしがみつけ!!

学生や子供で、「いい大学に入っていい会社に就職して、一生安泰で暮らすんだよ」と親に言われてその気になっている人は多いと思う。大企業に就職して定年(今だと65歳)まで勤め上げたらきっと幸福になれる!という幻想は、確かに貧困にあえぐことなく暮らして、多少のストレスがあったとしても衣食住に困ることはなく生きていきたい人にとってはそうだろうと思う。ドロップアウトや就職浪人の恐怖に怯えながら学業をこなすことは大変なプレッシャーだ。そういう人は得てして就職に成功すると、働きながらも僅かに現状に不満をもつようになり、ちょっとしたステップアップを望んだりするものだ。その人間の希望を喰らって成長する怪物に食われてしまうことを、元のTweetは強く戒めるものである。

そういう人(わたしもそうだった)が就職活動をしているときに知らず、就職して数年経ってから気づくシステムが役職定年というシステムだ。前置きが長くなったが、大企業に就職して一生安泰というステレオタイプなイメージは実は幻想であり、この幻想を潜在的に破壊しうるう要素は不正会計や倒産、人員整理などいくらでもあるが、この幻想を確実に否定するもののひとつが役職定年である。

役職定年を簡単に説明すると、企業が年齢層の高い社員を高い職位から適当な理由をつけて外すことによって組織内での人材の流動性を高めると同時に人件費を削減することができる、とても都合のよいものだ。具体的かつ典型的には、50歳を過ぎると課長級、50代後半からは部長級に役職定年が来て同じ職場に残るわけにもいかないので、同社の一般職員になって転籍したり、出向してグループ子会社の管理職や幹部になることが多い。給与は7割程度に下がり仕事内容も部下の管理や教育になる(いわゆる一線を退くというものだ)。
また、人間の能力は年齢が上がるにつれどこかでピークを迎え、下り坂になる。能力がピークを過ぎる前に職位を下げることによって、個人の能力低下の会社へのインパクトを抑えるという効果もある。見方によっては、一足早い定年制である。副次的な効果として、企業が同時に雇用できる社員の人数を増やすことができるので、社員(つまり自分)の雇用が維持されやすくなるというメリットがないことはない。

企業へのデメリットとして語られるのは、役職定年を迎えた人間のモチベーションの低下によるモラルハザードや、高齢の一般社員が若年層の一般社員に与える悪影響などがある。これをどうマネジメントするかが、企業の人事施策の腕の見せ所であるかと言われている。

それでは、個人にとって、役職定年はどういうものだろうか?上記の通り一線を退き内容が一変し給与が変わる。場合によっては、元職場とのコネクションを活かして元職場への営業係となる場合もある。グループ子会社に出向した場合は、グループ親会社からやってきた偉かった人(オジサン)となり、子会社の社員からすれば自分が昇進したかもしれない課長や部長職のポストを上から天下ってきて奪われたと思うかもしれない。幅広いコネクションを活かして案件をとってきたり、売上に貢献するような立場になれるのであればよいが…

いずれにせよ、わたしが某大企業を退職したのには、このように役職定年を理解していたせいでもある。

役職定年のここまでの歴史

立命館大学の講義資料 (定年制と平均寿命) によれば、

記録に残っている最古の定年制は、1887年に定められた東京砲兵工廠の職工規定で、55才定年制でした。民間企 業では、1902年に定められた日本郵船の社員休職規則で、こちらも55才定年制でした。上のグラフからわかるように、この時期の男性の平均寿命は43才前後で した。

とあるから、1980年代に60歳定年化されるまで数十年間は日本は55歳定年だったのである。この間に終戦があり神武景気があり戦後日本のシステムが構築されていったことを考えると、55歳が典型的な定年年齢として普及したのだろう。

また、こちらの人事院の資料によれば、

1980年代から行われた55歳定年制から60歳定年制への移行に際して、主に組織の新陳代謝・活性化の維持、人件費の増加の抑制などのねらいで導入されたケースと、1990年代以降に職員構成の高齢化に伴うポスト不足の解消などのねらいから導入されたケースが多いとされている

とある。同時期に日本人の平均寿命は大きく伸びて70歳を軽く突破していることを念頭に入れてこれを平たく主観的に解読すると、お上としては「寿命延びてるし年金の受給年齢を延期して節約しつつ労働市場の供給もキープできて、しかも定年後ヒマヒマ問題を解決できるし(労組系からの組織票もとれるし)一石N鳥じゃない?」という意図が見えてくる。

一方で経営側の立場からすると、人が足りないので定年の延長自体は歓迎したいが、かといって55歳を越えた人の中でもいらない人はクビを切って組織を健全化したい、特に組織で上の方の人間は適当に入れ替えてポストをあけたりしたいけど、若い人に技術を教える熟練者はキープしたい(けどパワーはないし給料はカットしたい)という事情がある。このときおぼろげながら経営側の頭に浮かんできたのがそう「役職定年」である。上の方のポストについている人間は高齢高給の人間が多いので、そこだけをいい感じに切り捨てたい気持ちを役職定年という言葉で見事にシステム化したのである。55歳というリミットを維持したまま、お上の意向(高齢者にも雇用をあげてね、放り出さないでね)を完璧に汲み取っている。

定年が60歳に引き上げられたタイミングで役職定年を導入した企業は多いのではないかと思う。また実際にこの数十年はそういう会社が生き残ってきたのだろう。労働者にしてみれば給料は減らされて仕事はそのままでたまったもんじゃないが、雇用者にしてみればボーナスステージみたいなもんである。65歳定年が導入された2012年改正高年齢者雇用安定法における高年齢者雇用確保措置のときはそのシステムを維持して、55〜60歳の5年間だったボーナスステージを合法的に10年間に延長することができたのである。さらに、2020年改正2021年施行の高齢者雇用安定法によって、そのボーナスステージは55〜70歳の15年にまで延長されたのである。努力義務がどうとか労基が入ってくるかも、とかそういう心配は普通にしていれば不要だ。なんせボーナスステージだから。69歳の人間はヨボヨボだから使えないかっていうと、経産省によればそんなことはなくて健康寿命がそもそも伸びているから大丈夫だろう(リンクP14〜)。


役職定年の今後

たぶん100歳くらいまで働かされるんじゃない?どうせ俺らなんて定年アガリしてもすることなくてインターネットみてるだけだよ。せいぜい認知能力と体力が落ちないように鍛えておこう。

でもわたしの雇用主はまだ若い企業なので、役職とか役職定年のようなシステムはまだない。そんなに変なことにはならないはずだから、今後どうなるか要チェックやで。

定年制は年齢差別か?

一定の年齢に達したときに双方の合意なく雇用関係が終了するようなシステムとしては、定年制は年齢差別なので違憲(14条、法の下の平等)だと思っている。が、平均寿命が短くて職業選択の自由がなかった時代にはそうではなかったのだろう。( なぜこの国には「定年」があるんだろうか 日本だけの"年齢差別"の慣習なのに | PRESIDENT Online(プレジデントオンライン) とかの律令の引用を見るとそういう感じがする、本当はそういった研究を探してくるべきなのだろうが、カロリーがたりなかった)。つまり本来は「長年のお勤めご苦労さまでした」と、定年に達した者を労うものであった(独自研究)。労働者が労働を辞めることを許されていなかった封建時代にキャリアを合法的に円満に終わらせる手段だったのである。だからこそ定年は祝福するべきものだったのである。
労働者が合法的に辞める唯一の手段としての定年は、近現代になって職業選択の自由が導入されたタイミングで制度的には無実化していたといえるだろう。しかし戦後しばらくは経済発展が続いて、労働市場が基本的に売り手市場だったためこの慣習は続いた。定年の日にオジサンが花束を渡されるのはそういうことだ。しかし、バブル崩壊後の数度の不景気で慣習を維持できなくなり、意味合いが「体よく組織の古い人間を合法的に降格させるためのシステム」に徐々に変わったのである。つまり、封建時代のレガシーが年齢差別となって現代に残ったのだ。

まとめ

  • 安定を求める人にはいいかもしれないけど役職定年は罠
  • 役職定年は雇用側にとってボーナスステージ
  • 定年制は封建時代のわるいレガシー

www.youtube.com

参考

令和2年3月13日、「国家公務員法等の一部を改正する法律案」が閣議決定され、第201回国会に提出された。同法案においては、令和12年4月1日に定年が65歳となるよう、令和4年4月1日から2年ごとに1歳ずつ定年を引き上げることとされるとともに、60歳に達した管理監督職の職員は原則として管理監督職以外の官職に異動させることとする管理監督職勤務上限年齢制(いわゆる役職定年制)、60歳以降の職員について多様な働き方を可能とする定年前再任用短時間勤務制等を新たに設けることとされている。

「民間の場合、役職定年制という独特のものがある。これは組織の活性化のために導入している企業が多いと思う。やり方次第では、役職への就任を定年のようにストップすれば、本人のモラールは低下するかもしれないが組織の活性化は維持できる。」

10年ぶり?くらいにデスクトップを新調しました

デスクトップで使っていたマシンが壊れた。このときに買ったやつである。

kuenishi.hatenadiary.jp

この時点で2年経っているらしいので、2012年に組んだマシンらしい。ドスパラの購買履歴をみると 2012/09/17 となっているので、今日の時点でほぼちょうど9年経っている。構成は

1. マザーボード ASRock Z77 Extreme4(Z77 1155 ATX DR3)
2. CPU Intel Core i7-3770 BOX(1155/3.40/8M/C4/T8)
3. メモリ TRJ JM1600KLH-16GK(DDR3 PC3-12800 8GBx2)
4. メモリ TRJ JM1600KLH-16GK(DDR3 PC3-12800 8GBx2)
5. ドライブ(内蔵) Pioneer BDR-207MBK BULK(SATA BD12X ソフト無 黒)

みたいな感じになっている。GPUは当時はなくてオンボードだった気がする。そのあと ELSA GD750-1GERX(GTX750 1G GDR5) を2014年に買ったらしい。マザーボードのHDMI端子につなぐとディスプレイが映るので、どうやらGPUが壊れたらしい、と切り分けてGPUをまず捨てた。

f:id:kuenishi:20210914231837j:plain

で、使えなくて半年ほどノートパソコンで暮らしていたのだけど、ひょんなことから知人にGPUを譲ってもらえることになった。でそいつを代わりに刺してみたところ、起動しない・・・ああ電力がたりないのかな・・・ボコボコ刺さっているHDDを全部外してみよう・・・C少し経ったらやっぱり落ちる!ということで改めて電源を買い直しました。

www.dospara.co.jp

適当に選んだやつ( Corsair CP-9020196-JP (RM850 2019 850W) )。でこの電源を刺して動かしてみても、やっぱりChromeとSlackで落ちるやんけ!と、これ以上9年モノのマシンの故障箇所切り分けに時間を溶かしても無意味なので、諦めて残りを新調することにした。
Ryzen比較表【2021年最新】世代や種類別にRyzenのCPUを比較 をみるとAMD Ryzen 5 5600Xあたりがスペックがよい。Ryzen 7 5800Xもいい感じのコスパだったが、まあバチバチにゲームするわけじゃなし誤差やな・・・ということで安い方を選んだ。

www.amd.com

ちょうどドスパラでマザボと組み合わせセールをやっていたので適当にペアになっていた
ROG STRIX B550-F GAMING | ROG Strix | Gaming マザーボード|ROG - Republic of Gamers|ROG 日本 を選択。メモリは適当にDDR5 16GB x4 でちょっと奮発して64GBにした。CPUでちょっと節約したもんね。SSDは今回はSATAの在庫があったので流用。

1. Corsair CMK32GX4M2A2666C16(DDR4 PC4-21300 16GBx2)
2. メモリ !Corsair CMK32GX4M2A2666C16(DDR4 PC4-21300 16GBx2)
3. マザーボード N !ASUS ROG STRIX B550-F GAMING (B550 AM4 ATX DDR4)
4. CPU N !AMD Ryzen 5 5600X BOX (AM4/3.7GHz/35M/C6/T12/65W)

それが届いて…

こうして…

こうじゃ!

Arch Linux にSteam入れてゲームできるようにしたら、今はかなりのゲームがLinuxでもできるようになってた、ってのはまた別の機会に。

Old Brains

そろそろ歳も40近くなり、老いについて考えることが増えてきた。たとえば10ヶ月も続く在宅勤務の中で少しでも運動をサボると左膝がすぐに痛みだしたり、うっかり水分を摂り忘れたりすると頭痛がきたりする。もちろん体重は史上ピークを記録し続けている。身体の老いについては、まあそういうものであるし、特に外見などに気を遣って生きてきたわけでもないからそんなには気にしていない。しかしながら、人間の人間たる由来はその精神や振る舞いにあると思っているから、そちらでの老いの方が問題だ。

前職までは大抵、わたし自身は年齢が1番か2番めくらいに若い職場で仕事をしていることがほとんどであった。ほとんど同年代か、10から20くらい上であることが多かったように思う。単に物理的な年齢もあるが、職業経験も私より長い人たちばかりであったので、教わることの方が多かったから、物事の考え方が揃っていたことが心地よかったということには、後から気付いたのであった。親切な先輩ばかりであったから、自分が一番の下手であるような職場に慣れてしまっていた。Erlang/OTPがすごいんですよと話したら「昔○○という技術があってね…」と諭されたり、分散ファイルシステムの歴史をまとめた資料を作ろうとしたら「SunOSのファイルシステムは・・」と昔話を聞いたこともあった。SSDが市場に出てき始めた頃に「SSDをやりましょう」といったらICカードに組み込もうとしたフラッシュメモリの辛い話を聞いたりと、比較的歴史の浅いと言われているコンピュータ産業に限っても、私の知らない歴史を無限に教わることができた。Javaで知らないことを聞けばすぐに誰かが教えてくれた。

ところが現職になって多くのことが変わった。周囲の同僚は全員が私よりも年下で、職業経験もわたしより浅い。だからといって能力的に劣っているということは全くなく、Ph.Dを持っていたりそのキャリアで成功していたりするわけだし、分野が違うこともあって私の知らないことを多く知っている。というか、何なら同僚だけじゃなくて、インターネット上で観測される多くの人が VSCode をコンテナプラグインやover SSHで使っているし、 Dockerfile や docker-compose.yml なんかは息を吐くようにサラサラと書いたりする。もちろんシェルプロンプトは何か絵文字が沢山出ている、簡単なPythonは全部 Jupyter Notebook 上で書いていたりする。 peco や ghq やらを使いこなしているし、 AWSやGCPもお手のものだ。何か問題があると「それAWSの○○でできるよ」みたいな趣旨のことを言う(わたしは理解できていない)。フロントエンドの話になるともうSappariで Vue とか Flutter とか React とか…あれ、こないだまでTypeScriptの話してなかった?え???みたいな状態である。

f:id:kuenishi:20201214221059j:plain
若者と技術的な話をしているときの私

一方で若者たちと話をしていると、ウォーターフォール開発について知らなかったり、Plan9という単語を聞いたことがなかったり、Docker以前のコンテナ技術について何も知らなかったりということがあるので、そういうときは聞かれたら知る限りの歴史をかいつまんで答えるようにはしていた。うーん世代差…だからといって仕事でやることが特に変わるわけじゃないし、ホモソーシャルな空間で仕事をしたいというわけでもない。まして古いものを押し付けたりすることはないけど、新しいことに日々挑戦しなくなっているという実感があった。むしろ軽い危機感だった。新しい技術に飛びつくことがいいわけじゃないけど、全く関心を持たないのはよくないんじゃないかと悩んでいたのだ。

ところがある日、GVRの "Really I don't recommend Emacs to new developers. It just exists for old brain compatibility." という一言を見かけた。

わたしの中のEmacs教原理主義者なんかは「ホラ見ろ!!Emacsでいいんだよ!」と一瞬思ったけれども、日を追うごとに、わたしの中の穏健派はこれで救われたような気がしていった。別に新しいものに無理やり挑戦することはないんだ、互換(≒できることが変わらない)なら無理にやり方を変えることもない、というわけだ。だからEmacsも使い続けるし、1stでないとはいえ2年連続で国際会議に論文を通すことができてしまったし、会社からも悪くない賃金を得ている。今までなんとなく持っていたちょっとした功名心というか自己顕示欲のようなものは徐々に満たされつつ薄まってきて、現状に満足し始めてしまったのかもしれない。

こういう風に満足してしまった状態は直感的によくないと感じていて、知らないうちに増長して同僚たちに迷惑をかけてないかどうかが不安になってしまう。例えば何か新しい要素技術Xが登場してきて、それはやってみる価値があるかどうかという話になる。私は昔の技術Yに似ているという第一印象を持つが、概要だけだと何が違うのかよく分からない。そのときにすぐ「昔のYと何がちがうの?」みたいなことを悪しざまに言ってしまうと、これはいわゆる老害というやつで、Xに挑戦しようとする若者の足を引っ張ってしまうことになるわけだ。妙な偏見のない状態で実際にやってみれば成功するんじゃないか?わたしが変なことを言って偏見を植え付けてはいないか?となるのである。こういうとき、どういう風にリアクションするのがよいだろうか?

新しい技術や製品はどれも、この歳になると最初に聞いたときは脊髄反射で「それオモチャじゃね?」となってしまうわけだ。わたしはこの言葉をいろんな人から聞いたが、自分でもそう思うようになってしまった。例としては、

  • TCP/IPが登場したとき「電話(回線交換)に比べたらオモチャ」
  • オープン系システムが登場したとき「MFに比べたらオモチャじゃん」
  • Linux が登場したとき「Solarisに比べたらオモチャじゃん」
  • MySQL が登場したとき「トランザクションないじゃん」
  • MacOS 10 が登場したときの「Windowsじゃないと仕事では使えない」
  • Gitが登場したとき「Mercurialでいいじゃん」
  • OpenvSwitch をはじめとするホワイトボックススイッチが登場したとき「そんなのオモチャじゃん」
  • AWS が登場したとき「たけえじゃん自分たちで買えばよくない?」
  • Hadoop が登場したとき「GCのある処理系で高信頼なミドルなんて作れるわけないじゃん」
  • 深層学習が登場したとき「ネコ判別してどうすんの?」
  • Kubernetes が登場したとき「Mesosでよくね?」

などなど、キリがないわけである。どれも最初に登場したときはオモチャなのだけど、これを面白いと思った人たちが集まってエコシステムが成長してビジネスになり始めると、それはオモチャを卒業していくわけだ。実際に大切なのはオモチャかどうかよりも、可能性があるかどうか、人が集まるかどうかの方が大切なわけだ。オモチャかどうかというのは極論すると見る側の主観にすぎないし、既存の技術の焼き直しであるかどうかもどうでもいい。重要なのはリソースが投下される価値があるかどうか、人々の問題を解決するかどうかだ。

その価値を見極めるために、過去の歴史を知っておくことは副次的に必要だけど、もっと重要なのは現在の技術やソフトウェアで何ができないかを知っておくことだ。現代の人たちがどういう問題を抱えているかを何かのきっかけで知ったときに、それが技術的に解決できるかどうか、解決できるとしてどれくらいの手間がかかるのかを即座に偏見なしに判定できるようになっていると、勢いはなくてもオッサンとしての価値は下がらないんじゃないか。いやいや偏見なしって、そんなことが簡単にできるならそもそも悩んでない・・・と思って今日もゲームに励んでいる。

Splatoon 2 (スプラトゥーン2) - Switch

Splatoon 2 (スプラトゥーン2) - Switch

  • 発売日: 2017/07/21
  • メディア: Video Game

これじゃダメだ。互換性がなくなったらゴミなんだからもうちょっとなんか勉強しようよ。ホラあんなに積読たまってるよ。と私のなかの真面目君は主張するのだけど、私のなかの怠惰君は「えーでも今日も疲れたよ・・・ビール飲みたい・・・」と言う。不惑とは何だったのか。ねえ孔子さん何とかして。

f:id:kuenishi:20201221105326j:plain
nikuyoshiさん@フリー素材

いかがでしたか?

この記事は pyspa Advent Calendar 2020 - Adventar の21日めの記事として書かれました。

Hiroki Uchida on Twitter: "(この画像はフリー素材です… "

NextDNSというサービスは子持ち家庭のインターネットを安心安全にする

tl:dr;

  • 子供にも安全にインターネットさせたいが、なるべく親がコントロールしたい
  • いままで /etc/hosts を工夫して狭い範囲でブラックリスト管理していたが運用が辛かった
  • NextDNS.io というサービスがやりたいことを全部実現していたので課金した

我が家には小学生と幼稚園の男児がいて、どちらもラップトップを持ってネットサーフィンをする。分からないことは自分で調べさせたりScratchでプログラミングさせたりして遊ばせれば、これが結構な時間潰しになる。わたしの古いMacBook Airを使わせたりしていたが、予算に余裕が出たタイミングで上の子にはMacBook Proを買い与えた。いちどそのMacにMinecraftをインストールしてやったらすぐに廃人になったので、さすがにそれはアンインストールして禁止した。おおよそ自由にネットサーフィンはさせているのだが、インターネット上での出会いは禁止したい。小学生や幼稚園児には早すぎるし、そもそもインターネット上のSNSなんてロクなもんじゃない。

基本的なリテラシー教育は「学校では教えてくれないこと」シリーズの 学校では教えてくれない大切なこと(12)ネットのルール | 旺文社 をいくらか読ませたら大体は理解するようだ。

学校では教えてくれない大切なこと 12 ネットのルール

学校では教えてくれない大切なこと 12 ネットのルール

  • 発売日: 2016/07/15
  • メディア: 単行本(ソフトカバー)

とはいえ放っておくとやっぱりYouTubeであれやこれやのサイトを見に行ってしまうので、ある程度コントロールしたいという要求がある。で、どうやっているかというと

1. OSの管理者権限は与えない、必要なアプリは親がインストールする
2. アクセスさせたくないドメインは /etc/hosts でloopbackを向くようにする
3. ChromeにはFamily linkで作ったアカウントでログインさせる
4. CloudFlareの 1.1.1.1 for Families を使って(親にとって)未知の怪しいドメインもブロック

という方針で管理していた。これには技術的にいくつかの問題があって、アクセスさせたくないドメインをいちいち /etc/hosts に前部下記並べないといけないのが面倒だった。ワイルドカードであるドメイン以下は全部禁止( e.g. *.youtube.com のような指定)はできない。

- name: Set up /etc/hosts, blacklist
  become: true
  lineinfile:
    path: /etc/hosts
    state: present
    line: "::1	{{ item }}"
    regexp: "::1	{{ item }}"
  loop:
    - twitter.com
    - mobile.twitter.com
    - youtube.com
    - www.youtube.com
    - ...

こういう感じのPlaybookを書いていつも実行するという、面倒なことをやっていた。

ChromeにFamily link 済のアカウントでログインすると言ってもSafariを使えばそういった問題は全部回避できるし、適当なブラウザをインターネットからダウンロードしてユーザーランドにインストールしてしまえば何だってできる。しかも子供がほしいといったアプリをいろいろインストールするのはとても面倒であった。mac OS のペアレンタルコントロールである程度アクセスを制御できるといっても、しかもこのペアレンタルコントロール、OSをアップデートすると設定が全部飛んだことがあった(Screen timeに切り替わったタイミングだったように思う)。泣きたかったが、儲なので涙をこらえた。

困っていたところに id:ymotongpoo に教えてもらったのが NextDNS だ。

nextdns.io

いわゆるフルスペックのDNSサービスで、Googleの8.8.8.8やCloudFlareの1.1.1.1のような存在に近い。しかし大きく異なるのは、サービス側でユーザーを認識して異なる設定に基づいたクエリ返答をすることができる点だ。

ほしかった機能

1. MalwareやPornなどぁゃしぃインターネットをドメインでブロックする
2. どういうドメインがブロックされたのか知りたい
3. ブロックされるドメインのリストをいい感じに賢くメンテナンスしたい(してほしい)
4. うちにある多様なOSのサポート: MacOS, Android, iOS, Linux
5. 大人と子供で異なる設定にしたい(端末毎に設定を変えることができる)

いままでAnsibleのPlaybookを書いて流すことで、上記のうちいくつかは実現できていたが、まあ面倒だ。SSHで入れるように設定しないといけなかったのもそうだ。

感動したところ

メジャーなOSをカバーしている

おうちの野良ハックで済ませるのが難しい iOSとAndroidに対応していて、アプリのインストールが簡単にできた。Mac, Linuxがどちらも使えるし、ソースアドレスを設定すればルーターにも適用することができる。家のトラフィックのほとんどのケースをこれでカバーできる(家庭内ユーザーが自分で他のDNSを使うとかはさすがにできない)。

さらに、OSだけじゃなくFirefoxやChromeなど、メジャーなブラウザにも設定することができる。

SNSをリストから選んでブロック

子供にはFamily linkでGMailのアドレスを与えているので、その気になればFacebookやTwitterで親の知らないアカウントが作れてしまう。しかも新しい趣向のSNSは次から次へと生えてくるので、それを簡単にブロックできるようにしたかった。その理想的な実装がNextDNSにはあった。設定画面にメジャーなSNSがリストされていて、それをポチポチを選ぶだけでブロックできる。

f:id:kuenishi:20200606111527p:plain
適当に選んでブロックしたSNSのリスト。トグルスイッチもついていて、一時的にサイトを選んでブロックを解除することもできる。

DNSクエリの統計情報

GAFAM率とかが出せる。端末ごとに統計を見ることができる。

f:id:kuenishi:20200606111339p:plain
統計情報の一部

f:id:kuenishi:20200606111237p:plain
GAFA Dominance

いろいろなフィルタを選べる

インターネットにはさまざまなドメインリストが落ちているので、それをポチポチと選んで使うことができる。しかしながら、個々人の要件を完璧に満たす禁止リストなんてものは落ちていないので、どうしたってブロックされては困るドメインもある。例えばうちだと子供がなぜかUnityを使うので、 "id.unity.com" にアクセスできないと困る。「このサイトは見れません」とブラウザに拒否されたら、DNSクエリのログ(しかもブロックされたものだけ)を見て、ドメインを禁止してるフィルタを選んで外すことができる。こうやってDNSのポリシーを要件に合わせてデバッグしていくことができるのは嬉しい。


個人用でも使える価格設定

無料枠は30万クエリまでで、それを超えると普通のDNSとして振る舞うようになるらしい。無料枠以上でも普通に使うためには 1.9USD/mo, or 19.90USD/y で、日本円だと250JPY/moという価格になる。年間2500円で適切にコントロールした家族の安全なインターネットが手に入るので安いと思って課金した。

ちょっとした不満点

  • ログインにMFAを設定できない
  • Macでの設定アプリはユーザーごとにやらないといけなくて、ユーザーが自分でEnable/Disbleを切り替えられてしまう
  • 野良のブロックリストをいくつか設定できるが、使いたいアプリが失敗したときに「ネットワークにつながりません」みたいなエラーしかでないので、いちいち管理画面でドメインがブロックされたログを探して原因になっているリスト設定を見つけないといけなくて面倒
  • ブロック可能なSNSにWhatsApp, Skype, ZoomがあるのにLINEがない

雑感

さて一週間使ってみたところ特に不満なく、これで家庭が平和でマルウェアもトラッキング広告も踏まないし、ニュースサイトをみていたら広告があったスペースに何も映らなくなる。広告はインターネットにとって重要な資金源だが、Webサイト利用者の有限のアテンションをとって思考をどうしても妨げるものだ。それがないと本当に快適になる。画像は asahi.com の見え方だ。→ 🔗

f:id:kuenishi:20200606110345p:plain
広告の映らない新聞社サイト( (C)asashi.com )

どこもそうだと思うのだが、ISPが提供するDNSはチラホラ遅かったり落ちていることがあって、そういうときにGoogle Public DNSとかCloudFlareのDNSを使うようにしていた。しかしまあDNSくらいISPにあるものが近くて速いだろうということで使っていたのだが、さすがにこれだけ付加価値のあるサービスがでてきたらもうISPのものを使っていられない。実際NextDNSはIP Anycastを使って世界中のASと接続しているので世界中どこでも似たような性能が出ると思う。NextDNSのCo-founderは凄腕のハッカーでNetflixの偉い人だったりするので、ビジネス面(サービスの継続性)でも割と大丈夫なんじゃないかって信用できると思う。

LinusがZFSにLKMLで言及した件

先日Linusが盛大にZFSを非難したことがインターネット・カーネル界隈の噂を駆け巡った。これをタイトルだけみたり本文をちょっと読んだら「ああ、LinusはZFSが嫌いなんだ」とか「LinuxでZFSを使うべきではない」といった理解をする人が非常に多いだろうと思う。Linusは当然Linuxユーザーにとって大きな影響力を持つ人物であり、多くのLinuxユーザーがこの理解のままでいることになりかねない。公私ともにZFSに頼りっきりになっている私は特にそういう状況は非常に困るし、Canonicalは19.10からUbuntu LinuxでのZFS rootを標準にしようとしているくらいだからもっと困るだろう。複雑な状況になっていると思うので、このニュースの深層を探ってみよう。

まず元スレ

元になったLinusのレスによると、そもそも最近カーネルにドライバのインターフェース変更があってZFSがこれで大きな影響を受けたとのこと。カーネルのFPUのインターフェースがGPL-onlyと宣言されたことでZFS on Linuxは非常に困っている。これについてLinusに「どう思う?」と質問があったという流れだ。

  • 「ユーザーに影響を与えない」ポリシーはユーザー空間のアプリと、私が見ている範囲のカーネルについての話だ
  • 外部のカーネルモジュールは対象外で、その面倒までは見きれない
  • Oracleの法務かLarryがサインした書類がなければZFSに関するコードは一切マージしない
  • それどころか、shimみたいなのも一切入れる気はない、Oracleのインターフェース著作権(Javaのアレとか)のことを考えればライセンスに関して落とし所はないだろう
  • ZFS使うなよ。バズワードでしょ。ライセンスの問題がある限りは一考に値しない
  • ベンチマークもそんなにいいと思わないしそもそもメンテされてないんじゃね

という要旨で、まあZFSのことそんなによく知らないのかな?と思ったら、これに対する反応はだいたい次のような感じ。

  • カーネルモジュールのことは仕方がない、サードパーティだしね
  • マージされるとかshimがあり得ないとか、それも当然そうだと思う(より安全だしね
  • VM動かす系のユースケースだと使いやすい類似のファイルシステムはBtrfsしかないんだけどちょっとね…
  • VDO+thinp+XFSみたいなので頑張れなくはないけどそれでも機能がたりない
  • わたしのワークロードだとARC?が効いてページキャッシュがめちゃヒットして性能出る
  • いやOpenZFSむっちゃアクティブだよ!!!

これに対して、OpenZFSについてLinusから返事が(わたしの超訳です)。

  • ZFSといったらOracleのやつに決まってんじゃん!メンテされてないでしょそっちは
  • OpenZFSがアクティブなのは知ってる。でも著作権リスクについては同じことだよね

ここでスレは終わっている。つまりOpenZFSについては法的リスクだけを懸念しているわけで、他のことについては何もいってない。まとめると、ZoLユーザーは法的リスクを理解した上でZoLを使っているということになる。OracleのオリジナルのZFSについては、ZoLユーザーは関心はないだろう。

ZoLの法的リスクについて

これについては、Canonicalが一応の結論を出している。今年の8月にUbuntuがこれからZFSやっていくぜと宣言したときに、2年前に大丈夫だという結論を出したとかいている。ここは簡単に結論を引用しておこう。

While the CDDL and GPLv2 are both “copyleft” licenses, they have different scope. The CDDL applies to all files under the CDDL, while the GPLv2 applies to derivative works.

The CDDL cannot apply to the Linux kernel because zfs.ko is a self-contained file system module — the kernel itself is quite obviously not a derivative work of this new file system.

And zfs.ko, as a self-contained file system module, is clearly not a derivative work of the Linux kernel but rather quite obviously a derivative work of OpenZFS and OpenSolaris. Equivalent exceptions have existed for many years, for various other stand alone, self-contained, non-GPL kernel modules.

私もこれで大丈夫だと思うんだが、まあOracleが何をやってくるのか分からないということに関しては同意しておこう。ただまあOracleが訴えたのはクラウド事業で競合関係にあるどころか数歩先を行く先行者のGoogleで、かつGoogleは基幹の事業ではめちゃくちゃ儲かっているとか、いろいろ条件が揃ってこうなったんじゃないかというのが私の推測だ。Javaのアレはこちらの解説が詳しいので深くは踏み込まないが、あのときはDalvikがすでに標準化が進んでいるJVMの仕様について、それの実装を作って利益を得たという状況だった。ZoLだと少し違って、LinuxがOpenZFSをライブラリ(VFSのひとつ)として利用している形態になる(しかも配布は別々で、ユーザーは自分でくっつける)。

まとめると

  • Linusが非難したのはOracle ZFSであってOpenZFSではない
  • とはいえLinuxにZFSがマージされることはないだろう
  • Ubuntuはライセンスは問題ないと3年以上前に宣言している

あたりが事実。

ちなみに、Oracleが公開しているZFSのドキュメントはLinuxの他のどのファイルシステムよりもよく書かれている。個人的には、ZFSはLinuxが標準で用意しているどのファイルシステムよりも必要な機能が揃っていて安定していて使いやすい(それゆえにシステム管理者から絶大な人気がある)ので、このまま使い続けられる状態であってほしい。FreeBSDみたいに標準でROOTにできるようにしてほしい。ZFSは割と無茶なオペレーションもやり遂げられるので安心感が違う。

(追記)見返したらタイトルが煽りっぽかったので変えました

(追記2)より詳しい解説が出ていた:
Linus Torvalds says “Don’t use ZFS”—but doesn’t seem to understand it

コードを書いて金を稼ぐ

初めてまともに携わったシステムはNTT研究所で作られていたCBoCといわれるものであった。内容について詳しくは述べないが、国内では割と先進的でありながらとにかくNTTの事業会社(割と稼いでいる)で使えるものを作ろうというものであった。この時期は研究所は研究だけしていればよいというものではなく事業貢献が求められており、論文になるような研究を生み出すだけでなくそれをどうやってビジネスにするかが重要視されていたのだと思う。このとき作ったものは実際に事業会社で使われ、退職の前後には年間数万円が口座に振り込まれるようになっていた。なお収入なので税金の扱いを間違えないように。しかし特許といえばガッポガポ…というイメージだがそんなに当たることはない。わたしが携わったそのソフトウェアは確かに使われていたが、事業会社のビジネスの中核を支えていくようなものにはならなかった。ならなかったのでメンテナンスフェーズというやつに暗黙に入っていき、投資は徐々に細くなっていった。これから金と人を投入してさらにスケールさせていくというタイミングでそうなったのには諸事情があるがとても口惜しかった。

さて開発に携わったとはいえ、大きなソフトウェアを大人数でスクラッチから開発するには多くの分業が必要になり、その多くの職種のうちわたしは最上流のアーキテクトのような立場になった。要求条件と仕様をまとめて、背景にあるベース設計を考えて伝えて、基本設計書をまとめてもらい、さらに詳細設計をレビューしたりコードをレビューしたり、協力会社が常駐できる環境を整えたりするのだ。何とかSubversionまでは用意したが、HudsonやBuildbotまでは用意できなかった。コードを書いたりコンピュータを動かす以外の仕事が沢山あり、それらを順番にこなしつつ、Subversionを監視しながら日々追加される大量のソースコードに圧倒されていた。

 

次に関わったのはJubatusというソフトウェアだ。これは小規模なスタートであったから、最初の学習器のベース実装を確かOさんとUさんに作ってもらってサーバーに乗せて分散化する設計と実装をやった。今度はうって変わって精鋭たちとサクッと実装してサクッと動くものができた。このときTさんとペアプロして、まともなC++の書き方を初めて学んだ。大学の研究室でつくるようなのりだ。これで稼ぐソフトウェアが作れたのだろうか?という疑問の通り、実装はしたもののなかなか実用化には至らなかった。これは理由がいくつかあって、まずはそもそも先進的過ぎたということと、機械学習でしかもオンライン学習でなければならないアプリケーションは実は世間にはあまりなかったのだということが、あちこち営業して廻って気付いたことだった。

技術開発には大きくわけてシーズベースのものとニーズベースの方法論があるが、どちらもビジネスや社会の現場の知識や経験がないと、最終的ては金にならないという当たり前の話である。当たり前の話であるが、とにかくモノがなければ始まらないので、作ったこと自体は間違いではない。それでもJubatus自体はニッチでもユースケースを見つけ、いくつか?のサービスで使われたらしいとは退職後に聞いた。10年近く経った今でもメンテナンスされているようだ。

 

転職して次に関わったのはRiakというソフトウェアだ。これはErlang/OTPで実装された分散データベースであり、これもまだ市場には普及していない新しい技術を実装したものであった。アメリカ東海岸のスタートアップであり、アメリカに多くの顧客を抱えておりこれから日本にも進出するという。今度はある程度実績のあるソフトウェアに関われるということで興奮していた。これなら日本でも多く使われるようになって、自分の書いたコードが稼ぐようになるんじゃないかと思った。実際に顧客からの要望を受けて機能開発をしたりしていた。途中からRiak CSというファミリー製品のテックリードとなり製品にある程度責任ある立場となり、ますますコードを書くようになった。CEOが日本にやってきて外国の某社に数億円でライセンスが売れたと聞いたときはとても嬉しかったことを覚えている。結末は皆さんご存知の通りで、少し売れたくらいではソフトウェア作って食っていけるわけではなく、数年かけて最終的にその会社はなくなってしまった。

 

次に作ったソフトウェアはRetzというApache Mesosにジョブスケジューラの機能を追加するものだ。今でこそKubernetesが全盛だが、先発のソフトウェアが必ずしも覇権をとるわけではないしそもそもあるソフトウェアが永遠に使われ続けることなんてないのだ。当時はMesosが最新で、データセンタースケジューラーが市場で必要になると踏んでMesosに足りないものを補完するソフトウェアとしてRetzを作った。このRetz(とMesos)は金を稼いだか?まず単体ではNoだ。当時はクラウドネイティブという言葉がやっと出始めたばかりの頃でコンテナで全てのサービスを運用するなんて先進的すぎたし誰もやっていなかっただろう。今だってちゃんとできているサービスは少数なんじゃないかと疑っているくらいだ。未熟なソフトウェアで未熟な市場に切り込むのはハイリターンが期待できるが、ハイリスク低確率なのである。しかもバッチ処理というエンプラど真ん中のニッチな用途では尚更である。結局RetzとMesosが本番環境でみんなに使われたのは2例しかなかった。
ソフトウェアそのものを売って金にする時代はわたしは終わったと思っている。Sunが買収されMicrosoftもOracleもサービスを売り始めた。こういう例は枚挙に暇がない。ビジネス応用とデプロイメントが多様化しており、ユーザーに求められる能力や知識がどんどん高度化しているためだ。OSSじゃないといけないとか、エコシステムを育てるとかそういった問題ではない。

 

転職して次に開発することになったのはChainerだ。これは既に会社を支える最先端のソフトウェアであり、わたしが入社したときには十分に稼ぐソフトウェアになっていた。しかも、Chainerそのものを販売しているわけではなかった。これは日本ではなく世界で最先端のソフトウェアであったし、ビジネスで使えるアプリケーションをすでに生んでいた。わたしは書いたコードが使われることにとても満足していたが、論文の執筆に少しだけ関わってKDD著者にもなることができた。Chainerは獲得したユーザーからは厚い支持を受けたものの、その数には限界があって結局世界的な潮流に飲まれてしまった。

 

コードを書いてソフトウェアで稼ぐには、稼いでいるビジネスをコンピュータの力で支えるか、コンピュータやソフトウェアの力で新しいビジネスを生み出すかのどちらかしかない。これができている人を本当に尊敬するし、わたしにはビジネスは全然分からないし、コンピュータもよく分からない。できるのはそういう人に後ろからついていってちょっとお助けするくらいのものだ。コードを書いて家族を養うのはとてもとても難しい。

とても難しいが、キャリアを通じてそういう場所にだんだん近づいていってる実感はある。今までもそういう期待を持ってやってきたし、今作っているもの、これから作ろうとしているものもそういう期待があってやっている。先のことは分からないけど、どうやらそれしか能がないのかな?

りんごチャレンジ

先日都内某所で行われた秘密の会合の目的は、有志が一年間の進捗を共有するというものであった。私は減量を終えてから一月近く経過しており、しかも最悪なことに11月はほとんど怪我でトレーニングができていない状態だったため増量に入れておらず、特に報告できる進捗もなくトボトボと参加したのであった。みんなが進捗を確認しつつ談笑している中で @yuitowest が持ち込んだ秋映が机の上にゴロっと無造作に転がっていたのだが、いかんせん会場が会場なだけに特にナイフやまな板があるわけでもなく、どうやってリンゴを食べたものかと逡巡…していなかったのだが、リンゴを握りつぶすことで有名な @hiroki_niinuma がいきなりパカッと真っ二つに素手で割ってかじり始めたのだった。そこからは早かった。彼のように片手でリンゴを握りつぶすことはできなくても、両手を使えば割れるのではないか。そんな希望が湧いてきた。のでやってみた。


りんごチャレンジ day 0 (秋映)

そうできなかったのである。ワイワイ盛り上がっていたが、一緒にいた友人たちは次々とパカパカ割っていくではないか。私は焦った。焦っていくつもリンゴに挑戦し、その度にヘタの辺りを妙に凹ませたりベタベタにしたりするが結局割れなかった。そのとき割れなかった人も他に何人かいたが、全員が翌日までに「帰ってやってみたら割れた」というではないか。なんということだ。私はクソザコのままなのか。更に焦った。というわけで、翌日からトレーニングメニューを一新してリンゴを割ることにフォーカスした。主なメニューは

  • CoC G 親指ピンチング: 普段は親指の付け根で握るが、親指の第一関節と手のひらを使って握る。これは案外力がよわく、全然閉じることができなかった。
  • ケトルベル親指ピンチング: たまたま自宅に4kgのケトルベルがあったので、親指だけで持ち上げる。

である。これを数日間毎日続けた。とくに筋力が上がるわけではないが、日々神経が通っていくことを実感していた。「これならいける!」私は確信して今日、先日の会合の折に頂いて帰った秋映最後の一個を手にとった。


りんごチャレンジ Day 4 秋映

・・・

そうまたしても割れなかったのである。本当にクソザコだ。このままではダメだ。死ぬしかないそう思ったとき、撮影していた妻がおもむろに別室から別のリンゴを持ってきて私に手渡した。どれ、む、少し小さいな。手が余る。うーん割れるのかといいながら、また握った。


りんごチャレンジ Day 4延長線 シナノスイート

ええーこんな簡単に割れんの?!?!?!?まあいいやとにかく大勝利!!!!大勝利だ!!!111

私は上がりきったテンションでリンゴをかじる。シャクっと音がする。リンゴが好きな妻は家に大量のストックを持っており、その中のひとつがシナノスイートという品種だそうだ。こちらは秋映よりも小ぶりで軽め、さっぱりとした味だ。うんうまい。こうして私は大勝利をおさめ、今ここに筆を執ったのである。

…いや思ったよりサクッと割れたのでもう一回秋映に挑戦したのだが、こちらはどんなに頑張ってもダメだったので、妻に頼んで切り分けてもらい、家族で楽しく食べましたとさ。なお動画から音声を抜くのに使ったコマンドは次の通り。 "-an" オプションが、オーディオについては何もしないという意味になる。

$ ffmpeg -i VID_20191203_201430.mp4 -vcodec copy -an akibae.mp4

アドベントカレンダーは以上だ。今年は肉体に進捗なく、他に特筆することもまだなく、いよいよ不惑が近くなったが人格は特に成長せず、仕事でも進捗がなく、うーん…来年こそはいいことがありますように。明日はPythonの良心こと @aodag 先生だ。