こまぶろ

技術のこととか仕事のこととか。

祝・横浜DeNAベイスターズ26年ぶりの日本一!南場智子オーナーの「コトに向かう」話

この記事は「株式会社エス・エム・エス Advent Calendar 2024」の12月2日分の記事です。

qiita.com


2024年11月3日、横浜スタジアムで開催された日本シリーズ第6戦で横浜DeNAベイスターズが勝利し、横浜ベイスターズ時代の1998年以来、26年ぶりの日本一になった。

私は2001年からプロ野球をみはじめ(同時期に少年野球チームに入り)、当時からベイスターズを応援してきた。千葉県在住だったのでハマスタに足を運ぶようになったのは大学に入った2011年からで、ちょうど現在の親会社であるDeNAによる買収前夜の時期だった。

当時のハマスタは本当に客が少なかった。チームも弱かった。そんな状況から、DeNAが球団を買収し、チームの強化に留まらない改善を進めていった。ハマスタは綺麗になり、イニング間や試合後の企画も盛りだくさんになり、YouTubeやSNSもうまく使いながら、ベイスターズは人気を取り戻して行った。その一つの到達点が、今回の日本一だと思う。

綺麗なオレンジ色(空席)してるだろ、試合してるんだぜ、それで。(2011年8月2日、広島東洋カープ戦)

一人のベイスターズファンとして、見事にチームを立て直してくれたDeNAには特別な思いがある。ありがとうDeNA!


DeNAといえば、今回のベイスターズ日本一でも大きな脚光を浴びたのが、ポジ◯◯の母南場ママこと南場智子さん(DeNA創業者、ベイスターズオーナー)である。私自身はDeNAで働いたことがあるわけでもないし、(『不恰好経営』こそ読んだが)南場ウォッチャーというわけでもない(経団連での南場さんの仕事についても特に詳しくない)のだが、ひとつ定期的に思い起こしている話がある。

それは、2013年の「グローバル・ウーマン・リーダーズ・サミット」での南場さんの講演のなかの「コトに向かう」話だ。講演の内容は以下のnoteに記録されている(以下、引用は全てこのnoteからの引用になるため、実際の講演での発言と異なる可能性があることはご承知いただきたい)。

note.com

私はこの講演を生で聴いたわけではなく、2020年になってから知った(当時はまだ録画が公開されていたのでそれも見た)。全体的に面白かったのだが、特に印象に残っていて何度も読み返しているのが以下の箇所だ。

それで、あっと思ったのが、自分のことすっかり忘れて、自分のバリューとかすっかり忘れて、仕事にだけ集中したらこんなにのびのび仕事ができる。楽しいんです。そして成果もついてきます。これを私は感じて、それからもう解放された人になりました。

(中略)

私はその時から、あまり自分に意識がいかない方がいいなと思いました。

それと同時に、あまり誰についていくとか、アイデアの帰属とか、あるいは評価だとか、ポジションとか、マネージメントとか。そういったことをすっかり忘れて仕事に打ち込むと、本当に良い結果がついてくるなと感じました。

(中略)

人とか、それから自分に向いすぎずに、仕事に向かう。コトに向かう。コトを成すことに精一杯取り組む。そうするといろいろなものがついてくるのかな、と感じたりします。

当時の南場さんはマッキンゼーのコンサルタントで、私はコンサル業界の雰囲気をよく知らないのだが、手前の部分で書かれているような「バリューを出せ」という圧力があり、それが仕事に悪影響を及ぼしていたという話だ。

私はソフトウェア開発者で、チームで成果を出すという雰囲気があることもあって、仕事をしていて「バリューを出せ」という圧力を感じることはないのだが、ともすると自分に意識が行きがちだなとは思う。開発者として働いていく上でスキルを広げたり深めたりしたいとかのキャリア上の欲みたいなものはあるし、何かを議論する際には自分なりに考えた意見は遠慮することなく主張する方で、そこには純粋な「仕事をうまく進めたい」という気持ち以外に自分の考えを仕事に反映したいという欲も関わっていると思う。

また、日本一になった後の南場さんのインタビューでも「コトに向かう」の話が出ていたのだが、そこでは以下のように語っていた。

仕事のやりやすさとか誰かの機嫌とか評価とかヒエラルキーとかですね。そういうことではなくて「こと」に向かおうよっていう約束事をすごく大事にして。


www.youtube.com

考え方や利害の異なる人と仕事をしているときなどに、「あー、仕事やりづらいなー」と思うことがある。自分はその「やりづらさ」を組織やプロジェクトの課題だと考えてそこにアプローチするように心がけてきていたが、一方で言い訳にしてしまうこともあるなーとこれを見ていて感じた。「やりづらさ」を解決可能な課題として捉えることと、それを一旦脇に置いて「でもやるんだよ!」と突破していこうとすることは両立するはずなのだが、一度前者の頭になってしまうと後者の頭に切り替えるのに時間がかかってしまうのだ。

周りの開発者と話していると、自分自身に意識がいっていないなと感じる人は魅力的に感じるし、いい仕事をしてもいるなと思うことが多い。南場さんの場合、マッキンゼーを辞めようとしていたことで職場での評価などを気にせずに仕事に向かえたというのがきっかけだったわけだが、まだまだ自分はそういう境地に至れていないというか、自分に意識が行くことが多いなと感じる。

「コトに向かう」ことができていないなと感じるときというのは、仕事の進みも悪いし、なにより自分自身の気分が悪いので、定期的にこの話を思い起こすようにしている。


(余談) 上掲の動画の中で、南場さんも今年の6月までは相手の先発が好投手の場合などに「今日は勝てなさそうだな」と「心の保険」をかけていた、という話をしていたのが面白かった。日本シリーズが始まるときに「ソフトバンクか〜勝てる気しないな〜まぁ日本シリーズに出られただけでもラッキーだったよな!」と思っていた自分が恥ずかしくなりました。これからは勝者のメンタリティで生きていこうと思います。

勤務先のポッドキャストにゲスト出演してきました

先日、勤務先である株式会社エス・エム・エスのプロダクト開発組織の対外発信の一環として配信されているポッドキャストに出演してきました。

open.spotify.com

入社して半年くらいの時期からかれこれ丸4年ほど関わっている会社の技術ブログを中心に、会社の対外発信やそれの背後にある文化、私自身がどのような思いでそれに関わっているかを話しました。ぜひ聴いてください。


久しぶりに収録された自分の声を聴いていて、ふと昔ポッドキャストに出演したときと比べてみたくなり、成し遂げたいamのep.7, 8を聴き直しました。録音環境などの違いや体調の違い(今回の収録時は病み上がりでした)もあるとは思いますが、5年半前となると流石に声が若いかな?と感じました。

5年半前のものを改めて聴き直してみると、話している内容が青臭いなぁとか色々思うところもありますが、まだ業界2年目(の終わり)のころの気持ちを思い出しました。

このブログも週に一度更新するということがなくなって久しいですが、初心に戻るべきところは戻って、前向きにまた頑張っていこうと思います。

以下は、5年半前のポッドキャスト出演時のブログ記事。青臭いですねえ……

ky-yk-d.hatenablog.com

ky-yk-d.hatenablog.com

『つくって、壊して、直して学ぶ Kubernetes入門』を読んだ

『つくって、壊して、直して学ぶ Kubernetes入門』を読んだ。

※翔泳社の直販サイトSEshopでは5/9までPDF版が50%ポイント還元で買える。

www.seshop.com

著者の方のブログ。

blux.hatenablog.com


Dockerは業務でも日頃から使っているが、Kubernetesは使ったことがなく、ちゃんと勉強したこともなかった。「Kubernetesが必要になるようなシステムは稀」という言説をしばしば目にすることもあり、まぁ必要になったら勉強すればよかろうというスタンスでいたのだけれど、何も知らないのもあれだよなという思いもないではなかったので、TLで話題になっていて(前述の翔泳社の50%還元もあり)読むことにした。

全体像〜Part 1 つくってみようKubernetes

この本の想定読者は、「Docker は触ったことがあるものの、Kubernetes を全く触ったことがない方」であり、自分はまさにこれに当てはまっている。最後まで読み進めても、知らないのはKubernetesエコシステムの話がほとんどで、書籍の狙い通りの学習をすることができたと思う。

内容としては、タイトルの通り、Kubernetesクラスタを作成し、(誤った設定をapplyして)壊し、kubectlなどを駆使しながら調査し、設定を間違いを修正して直す、というのがメイン(Part 2)で、Part 1ではその前段としてのKubernetesの入門の入門(Docker入門を含む)、Part 3ではKubernetesの仕組みやエコシステムを構成する周辺ツールの解説などやや発展的な内容が扱われている。

自分は前述の通り、Kubernetesの知識はほとんどなく、PodとかServiceっていう概念があるんでしょ、という程度のところからスタートしているので、Part 1の内容から役に立った。Dockerの入門も一応あるので、「Dockerを使ったことがある人」でなくても読むことはできると思う。

Part 2 アプリケーションを壊して学ぶKubernetes

本編ともいえるPart 2では、Kubernetesの最も基本的な単位であるPodから始まって、ServiceやConfigMap、各種probe、リソースに関する設定項目、スケジューリングのための設定などを学んだ。Kubernetesを使ったことはないが、AWS上でコンテナアプリケーションをECSなどを使って運用していたりはするので、「Kubernetesではこういうふうに扱うのかー」と思いながら理解した部分も多かった。

ハンズオンでは、トラブルシューティングの際に問題の切り分けを行うためのアプローチの仕方やそこで使う基本的なコマンドが説明されており、わかりやすかった。とはいえ、この本のトラブルシューティングの例は実際に起きるものよりはかなり単純化されたもので、この本を読んだだけで実践までできるようになるわけではないとはレビュワーの方も述べているので、本格的に実践していくにあたってはChapter 12で紹介されているようなより発展的な書籍やリソースが必須になるのだろう。入門者の立場からすると勉強になったしわかりやすかったと思うが、その先まで見据えたときに本当に入門書としての役割を果たせているかの評価は今の自分にはできない。

ハンズオンパートについてよかった点を1つ挙げておく。今回自分はMacでハンズオンの部分を実践したが、ローカルクラスタを作るツールとして本書で主に使われているkindのおかげで環境が汚れることを気にせずにクラスタを作っては捨てるのを繰り返すことができたのが快適だった。ハンズオンの類では書かれている通りに動かなかったり、うっかりミスでローカル環境を汚してしまって進められなくなるというのが起きがちだと思うのだが、その心配がなかったのが著者の意図した学習体験をスムーズに実現する上で役に立っていたと思う。

Part 3 壊れても動くKubernetes

Part 3は、Kubernetesのアークテクチャ、Kubernetesを利用する際の開発フローやオブザーバビリティについてで、開発フローの章ではHelmやKustomize、オブザーバビリティの章ではGrafanaやPrometheusの使い方の説明をしていた。個々のツールについての解説はそこまでボリュームが大きいわけでもなくあっさりとしたものだったとは思うが、詳細については別の書籍や公式ドキュメントを参照すべきだろう。

個人的に印象に残ったのは、Pull型とPush型の違いが複数の箇所で出てきたことだ。まず、Kubernetesのアーキテクチャとして、Control Planeから個々のWorker Nodeに指示を与えるのではなく、Worker Nodeが Control Planeを参照して動作するという話。また、CIOpsとGitOpsの違いとして、前者がCI側からのPush型であるのに対し、後者はCIに対するPull型であるという話。そして、DatadogとPrometheusのデータ収集の仕方について、前者がPush型であるのに対して後者がPull型であるという話が出てきた。Push型とPull型の違いというのは様々な場面に出てくる設計上の違いで、どちらを採用するかによってシステムが持つ性質が変わってくる。これは日頃のソフトウェア開発でもよく出てくる設計判断のポイントだと思うが、この書籍の中だけでも上記の3つが出てきていたのが印象に残った。

おわりに

前述の通り、自分は本当に入門者であるので、この本が入門書としての役割を適切に果たせているかどうかの判断はできない。しかし、総じて読みやすかったとは思うし、つまずいてしまって先に進めないとか、書籍の説明が前提としている事柄がわからなくて困るという場面がなかったことは確かだ。本番の運用に足る知識を得られたとは思わないが、概要の理解はできたと感じるので、読む前に感じていた「Kubernetesは当面は使う機会がないけど、全く知らないのもなー」という漠然とした問題関心には十分に応えてくれたと思う。

続:Keynote で作成したスライドを Speaker Deck にアップロードすると Transcript が文字化けする問題への対応

Keynote で作成したスライドを Speaker Deck にアップロードすると Transcript が文字化けする問題があり、その対処法を以下の記事で紹介していた。

ky-yk-d.hatenablog.com

最近のMacはPostScriptをビルトインでサポートしなくなった

しかし、記事の中で言及していたMacの「プレビュー」がPostScriptファイルのサポートをやめてしまったため、現在ではPostScriptからPDFに変換する部分は別のツールを使って行う必要がある。

support.apple.com

代わりのツールの一つ:Ghostscript

この記事では、代替の方法のひとつとして、Ghostscriptを紹介する。

www.ghostscript.com

Macの場合、Homebrewでインストールするのが簡単だろう。

$ brew install ghostscript

GhostscriptでPostScriptからPDFに変換する

Keynoteから「プリント」→「PostScriptとして保存」として作成したPostScript(ps)ファイルを、Ghostscriptの ps2pdf を使ってPDFに変換することができる。

$ ps2pdf input.ps output.pdf

こうして作成したPDFをSpeaker Deckにアップロードすれば、文字化けを回避することができる。

補足

手元の環境で作成したpsファイルでは、 ps2pdf では以下のようにエラーになり変換できなかった。

$ ps2pdf input.ps output.pdf
GPL Ghostscript 10.03.0: PDFDocEncoding ad is undefined

@toshimaru_eさんの手元では ps2pdf でも変換ができているようなので、ファイル側に問題があるように思われる。

なお、原因は特定できていないのだが、同じファイルもPDF 1.3を用いる ps2pdf13 を使えば変換することができた。

$ ps2pdf13 input.ps output.pdf

謝辞

以前書いた記事の方法が現在では一部使えなくなっていること、Ghostscriptで代替できることを指摘してくださり、 ps2pdf での動作の状況も教えていただいた@toshimaru_eさんに感謝します。

MacでDocker Desktop4.27.0に上げたらMySQL 5.7(amd)のコンテナが動かなくなった場合の対処法

追記

Docker Desktop は runcの脆弱性対応で2024/2/2現在の最新はv4.27.1になっています。

www.docker.com

環境

事象

Docker Desktopのバージョンをv4.27.0に上げたところ、これまで使用できていたmysql:5.7のDockerコンテナが起動できなくなった。

エラーメッセージは、以下のようなもの。

2024-02-01 17:38:46 2024-02-01 17:38:46+09:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.43-1.el7 started.
2024-02-01 17:38:46     qemu: uncaught target signal 11 (Segmentation fault) - core dumped

対処法

MySQL 5.7の公式Dockerイメージにはarm版が存在せず、amd版をApple Silicon上で動作させていたが、バージョンが上がったことでqemuでは動作しなくなった模様。

qemuではなくRosettaを使うように設定を変更することで、動作するようになった。Docker DesktopのSettings > General から、"Use Rosetta for x86/amd64 emulation on Apple Silicon"にチェックをつけて再起動すればよい。

SettingsのGeneralタブで、Use Rosetta for x86/amd64 emulation on Apple Siliconにチェックがついています

なお、macOSがMonteleyではこの設定項目が表示されずRosettaが使えないようなので、その場合はVentura以降にOSバージョンを上げればよい。また、macOS 14.1以降でDocker Desktopを動かしている場合はデフォルトでqemuではなくRosettaが使われるようになっているとのこと。

Rosetta for LinuxはAppleシリコンを搭載したMacのmacOS 13.0以降で使用可能。macOS 14.1以降ではデフォルトで有効になっているとのことです。

www.publickey1.jp

良い子のみんなは早くMySQL 5.7を脱却して8.0に行きましょう