考え事

変更管理プロセスと技術的負債の返済

ソフトウェア開発はリリースごとに差分を積み上げていくのが一般的なスタイルです。最初に動くものを組んで、リリースしたあとは触らずに放置されるべきものではない。周囲の環境の変化に合わせて要望があるので、ほとんどの場合は動くものをベースにして、…

答えのない問題に挑む心構え

「答えのない問題」と呼ばれる種類の問題があります。この種類の問題に取り組む仕事は、過重労働のイメージが強い。その理由が問題の構造にあることに気づいたので記録しておく。 まず答えのない問題について説明します。答えのない問題とは、明確な解決策や…

あなたの感想が聞きたい

それってあなたの感想ですよね? このフレーズは、ひろゆきの言葉として有名です。このフレーズだけ聞くと、感想だからだめだというようにも聞こえますが、感想を述べること大切だと私は考えています。 もちろん、ひろゆきが感想を持つべきではないと言って…

ChatGPT と主体性

ChatGPTが私の人間に対する価値観を変えている。人より賢いAIが実際に存在するとわかると、どのように人間があるべきか悩む。ChatGPTを使えば、大量のテキストをほとんど手間なく作成できるため、私がわざわざ文章を書く価値はないと思うが、逆にChatGPTに刺…

間違いを避ける方法

ChatGPT が出てきて、平均値なものに価値がなくなって、外れ値に価値があるか、人の役割はノイズを与えるだとか言われているのを聞くが、そんなことはないと思っている。間違い方は無数にあるが、正しいのやり方はほんの少ししかない。なにかをするときには…

いつも間違っている人への対処法

間違いを減らす方法を考えていて、ある程度以上はどうしようもないという役に立たない結論を得たのだったのだが、過激だったのか、意図せずアクセスが増えてしまった。単に苦労していますだけの内容を多く読まれても困るなと、一回取り下げて書き足しました…

ChatGPT とわたし

ChatGPT の登場には脳天を雷で撃たれたかのような衝撃が走りました。世間の多くの人が ChatGPT に驚いて興奮しているのは知っていますが、私も同じように感動を覚えています。技術的にや社会的に見て ChatGPT の何がすごいのかは、私が述べるまでもないです…

順問題と逆問題

「順問題」と「逆問題」という新しいことばを知りました。英語でいうと direct problem, inverse problem です。例えば、入出力系を考えたときに、入力から出力を求めるのが順問題で、出力から入力を推定したり、入力に対して求められる出力を実現する系を考…

論理的思考とはパターン認識である

語っていることの辻褄があっているとか、矛盾がないとか、整合性が取れている状態を論理的と言います。意思決定や問題を解きたいときなど、正しさに重きが置かれる場面では、論理的であることを求められます。論理的整合性が取れていないものは誤っている可…

やる順で仕上がりは決まる

仕事の出来栄えは、どのような順番でサブタスクをこなしていくか、考えていくかで大きく変わってくるように思います。もちろん、やる順番が唯一の説明変数ではありませんが、安定した仕事ができる経験豊かな人と、そうでない未熟な人、この二者の間では、明…

Clean Architecture と上流工程

『Clean Architecture』を読んでいて、これを実現するには上流工程の順番で開発をすればいいのではと思いました。 Clean Architecture とは上の図で説明されるソフトウェアコンポーネントの設計思想です。フレームワーク・データベース・画面などを「細かい…

オブジェクト指向は失敗だった

オブジェクト指向プログラミングは失敗だった――以前から思っていました。 okuranagaimo.blogspot.com オブジェクト指向プログラミング (OOP) が人類にとって早すぎたか、人類には OOP が向いていなかった。世の中の Java で作られたプログラムのほとんどは、…

static メソッドでよいのでは?

static おじさんと呼ばれる人がいたそうだ、あるいはいるそうです。インスタンスの生成を嫌がって、何でも static メソッド にしてしまう人のことです。static メソッドと呼ぶよりも関数と呼んだ方がよいかもしれません。 インスタンスの生成を嫌がるのは、…

具体的すぎてわからない

具体化という言葉を会社員をしていますとよく聞きます。特に企画の仕事では良く耳にします。再建策に具体性がないみたいな批判も経済ニュースではよく見ます。どうも、具体的なのは良きことで、抽象的なことは悪しきことみたいです。具体化していくのが仕事…

結合の種類と結合度

先日に発見したモジュールの結合の定義を自身でも気に入ったので、よく知られている結合の種類をこの定義に当てはめてみようと思います。 Coupling (computer programming) - Wikipedia モジュールの結合にはいくつかの種類がありまして、以下のものが知られ…

モジュールの分割点

アーキテクチャの問題とは、システムをどこで分割 (decomposition) するかという問題と言い換えてよいでしょう。分割するのは、魚を捌くのと同じようなもので、包丁を入れるべき場所というのがあります。 分割するというからには、切り分けるサイズがありま…

メソッドは関数ではないのだが

Clean Architecture を読んでいて、クラスおよびメソッドのことを、関数あるいはサブルーチンの一種としているような記述があって、やや気に障りました。 具体的には、単一責任原則の説明のところでして、 上の絵のように Employee というクラスにいろんな機…

疎結合の正体見たり

モジュールが疎結合になっているとか密結合になっているとか、業界にいますとよく聞きます。モジュール間の結合度の定義を発見したのでメモしておきます。 モジュール の モジュール に対する結合度 は以下の式で定義できます。 ここで、 は が に対して持つ…

マネージャをマネジメントする。

マネージャと呼ばれる職種の人はどこの組織にもいます。いわゆる中間管理職の人々です。個人の人格は別にして、彼らには組織上の機能の要請から、共通の行動原理があります。マネージャは例外なくこの行動原理にしたがって動きます。特に優秀なマネージャで…

オブジェクトは目的語

オブジェクト指向プログラミング言語ではメソッドを呼び出したいとき、 <インスタンス名>.<メソッド名> とインスタンスを示す変数の名前のあとに、そのオブジェクトに属するメソッドの名前を示します。このプログラミング言語の構文は、誤解も招く良くない構…

ソフトウェアの拡張と劣化

デカルトの『方法序説』に面白いことが書いてあった: たくさんの部品を寄せ集めて作り,いろいろな親方の手を渡ってきた作品は,多くの場合,一人だけで苦労して仕上げた作品ほどの完成度が見られない.たとえばよくあることだが,一人の建築家が請け負って…

ブロックチェーンについての考察

タイトルが雑だが、最近ブロックチェーンについてぼんやり考えていて、その覚書。 元の bitcoin の Proof of Work (PoW) は以下の式を満たすブロックをブロックチェーンにつなげることができる。 hash(prev, tx, nonce) < 1 / difficulty * hash_max (eq.1) …

bitcoin と ビザンチン将軍問題

bitcoin はビザンチン将軍問題を解決したとしばしば言われます。これが厳密には誤りだそうです。私もそんなに詳しくないのだけれども、確かにそうかなと思います。 ビザンチン将軍問題というのは――離れた場所にいる複数の将軍間で作戦の合意をとりたい;ただ…

bitcoin: Proof of Work の肝

bitcoin の仕組みは「ようできてる」と感嘆します。ポイントはデータベースの更新を承認する「Proof of Work」(PoW) という仕組みです。 さて、bitcoin が PoW で上手く回っているのは、PoW の特徴によるものに思います。PoW がなかったどうなるのかというの…

ディレクトリ構造のスキーマ

私はファイルシステムとかブロックストレージとかには少しだけ詳しいと思うが、現実に興味があるのはもう少し上の階層だ。RDB でいうとどのようにスキーマを設計すべきかという階層の話に興味がある。昔に書いた以下の記事でいうと「シンタックス層」が関心…

CAP定理について

CAP定理という分散ストレージシステムの設計において非常に重要な定理がある。まだ、以下の元の論文を読んでいないので、正確な理解かどうかは保証できないが、理解している範囲で考えることを記す。 https://www.comp.nus.edu.sg/~gilbert/pubs/BrewersConj…

寄付と投資

歳をとったのか世のため人のために多少は貢献できないかなと思うようになった。手っ取り早い手段は寄付をすることだ。世の中にはお金で解決できる問題は多い。ただお金を出すだけで世の中のためになるなら楽なものだ。金は命よりも重いが、負担にならない程…

『Who Gets What』

アルビン・E・ロス著『Who Gets What――マッチメイキングとマーケットデザインの新しい経済学』を読んだ。本の内容とは別に考えたことを記す。 Who Gets What (フー・ゲッツ・ホワット) ―マッチメイキングとマーケットデザインの新しい経済学作者: アルビン・…

出版業は市場データで効率化できるはず

Amazonは手に入りにくい本が簡単に手に入るのでよくお世話になっている。特に便利だと思うのは、中古本のマーケットプレイスというシステムだ。欲しい本が予め決定しているときに、Bookoffに行くことはない。非常によく出ている本はBookoffで探せば見つかる…

ソフト開発にも生産技術者が必要

製造業には必ず生産ラインの世話をする役職の人がいる。製造業においては、この役割の人は階級が高くて、会社内ではエリートがする仕事である。昔は社会的にも地位の高い仕事だったのだろう。現在だと聞かないが、かつては製鉄業の現場監督はエリートの仕事…