1. 雨宿りとWEBの小噺.fm
  2. Season 4-5. コンピュータサイ..
2025-01-06 09:44

Season 4-5. コンピュータサイエンスにおける難しさのジョーク

spotify apple_podcasts youtube

はい!シーズン4-5では,コンピュータサイエンスにおける『2つの難しい問題』というジョークについて触れた,とあるブログについて取り上げ,特に名前付けの難しさを例にお話してみました 💁


2つの難しい問題

https://bliki-ja.github.io/TwoHardThings

リファクタリング(第2版): 既存のコードを安全に改善する (OBJECT TECHNOLOGY SERIES)

https://amzn.asia/d/ftTpKje


ではでは(=゚ω゚)ノ


ーーーーー

📧 お便りはこちらから

https://forms.gle/utkE7JBKSReSdArPA


♫ BGM・SE

Anno Domini Beats「welcome」

https://youtu.be/947vwtHPFn4?si=Q7eeO_T3G-Bv_0rs

ユーフルカ「雨」

https://youfulca.com/2022/08/06/environmental_sfx/

See Privacy Policy at https://art19.com/privacy and California Privacy Notice at https://art19.com/privacy#do-not-sell-my-info.

00:03
みなさんこんにちは。雨宿りとWEBの小噺へようこそ。
ポッドキャスト配信者のkeethこと桑原です。
この番組は、日々降り注ぐ情報の中で、ちょっと雨宿りしながら、
様々なWEBテクノロジーの成り立ちや裏話を小噺としてお届けする番組です。
今回の話題は、インターネットの複雑さに関するジョークについてお話ししようと思います。
今回は、ソフトウェア開発の世界で重要な影響を与え続けているマーティン・ファウラー氏について取り上げていきたい。
ファウラー氏といえば、アジャイル開発やリファクタリング、エンタープライズアーキテクチャなど、
現代のソフトウェア開発の基礎となる多くの概念を体系化するなど、
ソフトウェアアーキテクチャにおいて多くの功績を残された人物として、皆さんもご存知かと思います。
彼は、1963年にイギリスのウォルソウルという町で生まれまして、
ロンドン大学で工学を学んだ後、コンサルタントとしてキャリアをスタートさせました。
厳密に言うと、コンサルタントを営んでいる会社にジョインをしたということです。
その後、ソートワークスという会社のチーフサイエンティストとして、
世界中の開発者たちに影響を与えるような数々の著作や記事を執筆しております。
特に、1999年に出版されたリファクタリング、
Improving the Design of Existing Codeという書籍を執筆されまして、
読まれた方も多いんじゃないかと思いますけど、
いまだに名著ということで、長く長く読まれ続けている書籍ですね。
コードの品質改善に関する体系的なアプローチを示した、
革新的な著作として、今でも多くの開発者に読み継がれているというものです。
こちらは和訳も出ておりますので、
興味ある人はぜひ一度読んでみていただければと思います。
またソフトエンジニアなら一度は聞いたことがある、
Dependency Injection、依存性の注入という言葉の生みの親でもあったりします。
今回は彼が執筆されているブログ、ブリキというものがあるんですけど、
こちらから2つの難しい問題というライトな記事について触れてみようかなと思っております。
とても短いブログで、いわゆるタイトル通りジョークに関するお話ですね。
一旦、記事の中から引用しますね。
コンピューターサイエンスで難しいことは2つだけ。
キャッシュの無効化と名前付けだ、というふうな、これXの投稿ですね、が引用されていて、
Phil Carltonという方がおっしゃっていると。
これ一見するとすごい簡単そうに見えるんですけど、本当に難しい課題なんですよね。
03:06
ちなみに、Phil Carlton、ファルカールトン、どっちでしょうね、読み方。ちょっとわからないですけど。
この方はですね、ネットスケープの開発者の一人でもあります。
話を戻して、キャッシュの無効化と名前の付け方ですね。
この課題を経験したことある方は、これがいかに難しいかというのは本当に共感はあると思います。
ただもちろん難しい問題は他にもあるんですけど、
これは2つも本当に難しくてですね。
両方難しいんですけど、例えば2つ目の方、名前付ける方ですね。
こちらはプログラミングの世界において長年ずっと議論されていたり、
いろんな意見が活発に出されていて、毎年誰かしら名前に関するブログを公開しているようなイメージがあります。
名前付けにおいての難しさということですけど、
いろいろ理由はあるんですけど、難しさっていうのは。
一つは意味の明確さとか簡潔さのバランスというのが難しいと。
その名前をパッと見てわからないと、名前が付いている関数とかのコードの前後をしっかり追わないと、読まないといけなくなってしまって。
長すぎると具体的で名前はわかるんですけど、過読性がどんどんどんどん下がっていくんですよね。
なのでこれどちらもバランスが悪いと開発者の生産性への足枷になってしまう。
他の難しさというと、ちょっと似通っているんですけど、抽象化の難しさというのもあります。
具体的に過ぎる名前だとやはりさっきと同様、過読性に加えて再利用性も損なってしまう。
モジュール化できないよねっていう話が浮上したり、
具体的にしすぎるとそもそもそんな必要性ないんじゃないのっていうような話も出たりします。
逆に、じゃあ抽象的にしよう。
でも抽象的すぎるとですね、その名前が付いた変数とか関数の用途がわからない。
そうなるとやっぱりコンテキストっていうところに依存しなきゃいけないので、
それを使っているプログラムコードの前後を読む必要があったりもするし、
もしくはもうわからないのでこれには触れないようにして、
新たに変数を作ったりとか関数を作って無駄にメモリーを使う可能性も出てきたりするというような問題もあります。
また、重複とか衝突もあり得るんですよね。
これはある程度リンターを使ったりとか、独自にそういうのをチェックするスクリプトを組んでしまえばある程度防げるんですけど、
それでも開発している途中ですぐに気づけるかというと怪しいですよね。
あとはですね、命名規則とか文化。これはチームの文化です。
こちらもリンターで防いだり、開発前にチーム内でコミュニケーションを取って、
06:00
ある程度のルールを定める、規則というのを定めることで回避はできるんですけど、
決めないと基本的にはカオスになりますよね。
自分たち個人の基準で名前を付けたりしていったりするし、
名前を付けるにしても英語の文法に沿って単数形、複数形どっちにするみたいなのをしっかり分けたり、
知らない名前が付いたりとかあったりしますし、
人によっては母国語に合わせるか英語に合わせるかみたいな議論もありますね。
英語と言ってもしかもアメリカ英語とイギリス英語で違ったりしますね。
例えばですけど、ユーザー名とかを管理する変数名。
日本だと生命ってありますけど、
生命のせいだと、英語ですると何になるのというと、
苗字、名前をそのままアルファベットにするみたいなケースもあったりします。
結構イケてないんですけど、いまだに見たりしますね。
いや本当イケてないなと思いながら見てます。
それをちゃんと英語にしようかといったときに、生命のせいですね。
それを英語にすると、ファーストネーム、もしくはギブンネーム、
あとはフォアネーム、あとクリスチャンネームみたいなのもあったりしますね。
生命の名、名前の方ですね。
こっちはラストネームとかファミリーネームとかっていう風に候補が挙げられていて、
英語圏とか文化に合わせるとしても、どれにするのっていうような議論もあったりするので、
名前一つ取ったとしても考慮しなきゃいけないものがたくさんあって、
一概に決まるものじゃなかったりするんですね。
例えばこんな形のものがいっぱいあって、名前って。
チリツモではあるんですよ。
一個一個を取ると本当チリツモのようなお話なんですけど、
ほんと積もるんですよ、こういうのって。
ちょっと安易に付けた名前が、
結局後で開発チーム内でコミュニケーションを取らなきゃいけなかったり、
認識の底が生まれてしまって、別で時間を取られてしまって、
やっぱり生産性のダメージが生まれてしまう。
ほんと難しいんですよね。
というところで、今回ジョークのお話ではあるんですけど、
全然ジョークじゃないっていうのが笑えるようで笑えないお話だったなっていうので、
面白いというか興味深かったので今回取り上げてみました。
こちらに関してですね、
もう一個だけ記事内で引用されていたXのポストがありまして、
これがまた面白かったので、これを引用して終わろうと思います。
コンピューターサイエンスには二つの難しい問題がある。
私たちにとってこのジョークはたった一つだけだから、笑い事ではないと。
はい。
これほんと言えてみようとなって思いました。
それにしても海外の方ってほんとジョークが上手いなってずっと常々思っていまして、
プログラミングアーキテクチャーとかの設計のスキルも、
技術者として身に付けたいと思ってるんですけど、
それ以上に最近はこのジョークスキルが欲しいなと私は思ったりしてます。
09:01
はい。
というところで、そろそろ今回もエンディングに行きたいと思います。
この番組面白かったよという方はぜひチャンネル登録もお願いします。
もし聞いていて気になることや話してほしいトピック、感想などありましたら、
概要欄のフォームやXでハッシュタグウェブ小話でつぶやいてください。
ウェブはアルファベット、小話は漢字でもひらがなでも大丈夫です。
それではまたアマヤドリにしに来てください。
今回もお聞きくださりありがとうございました。
アマヤドリとウェブの小話、お相手はキースでした。
さようなら。
09:44

コメント

スクロール