0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

なぜ`gofmt`は成功し、設計標準化は失敗するのか ― 「人を変える設計」と「構造を変える設計」

0
Posted at

エンジニアの人たちの「標準化がうまくいかない」という嘆きを横で聞いているうちに、これは歴史上、国家が何度もやらかしてきた失敗とまったく同じ構造だと気づきました。その話をします。専門用語は、その都度かみ砕きます。

エンジニアの人たちを見ていて、不思議だったこと

エンジニアの人たちの話を聞いていると、こんな光景があるようです。

  • インデントや改行のスタイル(コードの見た目の整え方)→ gofmt などのツールを入れたら、フォーマットの議論そのものが消えたそうです。最初は「勝手に変えるな」と文句も出る。でもツールが保存のたびに問答無用で整えてしまうので、そもそも議論する意味がなくなる。気づけば、あれだけ Slack を消費していたインデント論争が、誰の口にものぼらなくなる。
  • 設計の流儀(どう部品を分けるか、どう名前をつけるか、といった作りの方針)→ 立派な「規約」をドキュメントに書き、説明会もする。そして誰も読まない。 半年後、やり方は相変わらず人それぞれ。

同じ「揃えたい」なのに、片方は秒で片付き、もう片方は永遠に終わらない。そして多くの現場は、その差から目をそらして「次こそはちゃんとした規約を作ろう」と同じことを繰り返すそうです。

ここに、身も蓋もない法則が隠れています。

「機械的に答えが決まること(見た目・書き方)」はルールで強制できます。でも「経験や価値観が出ること(設計)」は、何ページ規約を書こうが縛りきれません。

当たり前に聞こえますか。だとしたら、なぜ世の中の標準化は、今日もこの当たり前を無視して進んでいるのでしょう。実はこれ、国家レベルでも延々と繰り返されてきた話です。歴史を3つ眺めると、その理由が嫌でも見えてきます。

歴史の「3つのたとえ話」

国が「自国の言葉のルールを上から決めてやろう」とした例が3つあります。理屈はいりません。誰が勝って誰が負けたか、そしてどうやって勝ったのかを見てください。

たとえ① トルコ:文字を変えた → 反発はあったが、押し切れた

1928年、トルコはアラビア文字を捨ててラテン文字に切り替えました。「明日からこの文字で書け」という、控えめに言って強引なやり方です。

そして実際、ことは「すんなり」とは進みませんでした。「アラビア文字は聖なる文字だ」とするイスラム勢力からの反発はありましたし、改革は意図的にオスマン的・イスラム的な過去との縁を断ち切る道具として進められたので、人々のアイデンティティを正面から削るものでもありました。旧文字の文献は読めなくなり、国民は読み書きを一から学び直す羽目になります。プライドも痛みも、しっかりありました。

📝 厳密にはこの改革は、言語純化運動や国家建設とセットの大がかりな政策でした。

それでも定着しました。理由は2つです。ひとつは、法律で旧文字の効力を失効させ、国家権力で押し切ったこと。もうひとつ、そしてこちらが本質ですが、変えたのが「話し方」ではなく「表記」だったことです。文字をどう書くかは、痛みこそ伴っても、最終的には「ルールが変わったから従う」で済む層でした。話し言葉そのものを変えろという話ではなかったのです。

👉 エンジニアの世界に置き換えると → 見た目・書き方の統一。最初は「俺のスタイルが」と文句も出るそうです。でもツールが問答無用で整え始めると、結局みんな従う。書き方は、ゴネても最後は「ルールだから」で飲み込める層なのです。

たとえ② 明治の日本:外国語を「翻訳」してこっそり取り込んだ → 定着した

明治の日本は、西洋から大量の新概念を輸入しました。一部には「いっそ英語を国語にしよう」という威勢のいい案(森有礼が唱えたとされます)もありましたが、これは採用されませんでした。賢明にも、です。

代わりにやったのが翻訳でした。society を「社会」、economy を「経済」と訳語を作り、中身だけ輸入して表面は自国語に着せ替えます。正面から「これからは英語だ」とやらず、こっそり自分たちの言葉に化けさせて飲み込んだわけです。だから抵抗なく根づきました。

👉 エンジニアの世界に置き換えると → 外部の道具を、自分たちの使いやすい形に「一枚かぶせて」取り込むこと。外から来た便利なツールを生のまま全面採用するのではなく、自分たちの形に翻訳してから使う。「全部、外の流儀に合わせろ」と号令をかける人ほど大体うまくいかず、「中身は借りるが、顔は自前」のほうが静かに定着するそうです。

たとえ③ シンガポール:話し言葉を直そうとした → 押し切れなかった

シンガポールには「シングリッシュ」という、英語に中国語やマレー語が混ざった独特の話し言葉があります。語尾に "lah" を付ける、あれです。

政府は2000年から「ちゃんとした標準英語を話そう」と国民を啓発しはじめました。意気込みは立派でした。結果は、みごとな空振りです。シングリッシュは今日も元気いっぱい使われています。政府は最終的に「撲滅」を引っ込め、「標準英語も使えるようにして、場面で使い分けようね」という、ずいぶん物分かりのよいトーンに後退しました。

ここがトルコとの決定的な違いです。トルコは反発を強権で押し切れました。なぜなら相手が「表記」だったからです。ところがシンガポールが手を出したのは話し言葉でした。話し言葉は本人のアイデンティティそのもので、ここは法律でも啓発でも押し切れません。「お前のしゃべり方は間違っている」と言われて、はいそうですねと直す人間はいないのです。

👉 エンジニアの世界に置き換えると → 設計や名前のつけ方のクセ。これは「技術的な正しさ」であると同時に、その人の経験と美意識がにじむ部分だそうです。だから正面から「お前のやり方は間違っている」と規約で否定すると、技術的にはどうでもいいことで人が本気で怒り出す。揉めるのは頭が悪いからではなく、そこにプライドが乗っているからです。

日常のことに置き換えると

身も蓋もなく言うと、両極の2つの対比に尽きます。

  • トルコ=書き方の統一は、人感センサーで電気が消えるようなもの。 最初は「勝手に消すな」と文句も出ますが、仕組みが淡々と消しつづければ、結局みんな慣れて従います。最後は「ルールだから」で飲み込める層です。
  • シンガポール=設計のクセは、「電気は手で消しましょう」という貼り紙のようなもの。 人の善意と努力を当てにするやり方です。みんな普通に消し忘れますし、毎日言われれば「うるさいな」と反発します。だから永遠に定着しません。

同じ標準化でも、仕組みで押し切れる層(表記・書き方) と、押し切ろうとすると総スカンを食う層(アイデンティティ・設計) があります。世の中の標準化の大半は、後者を前者だと勘違いして突っ込んでは負けています。

(なお明治日本の「翻訳」は、この2つとは毛色が違って、外から来た家電を変換プラグをかませて使うようなイメージです。「強制するか/しないか」ではなく「外のものをどう自分の形に化けさせて飲み込むか」の工夫なので、対比の本筋からは少し外れます。)

3つを並べると、きれいな1本の線になります

 強権でも押し切れる               押し切ろうとすると総スカン
 ────────────────────────────────────────────────────►
 書き方・表記      外から取り込む中身    判断・経験・プライド
 (最後は「ルールだから」で飲める)      (本人のアイデンティティそのもの)

 トルコ:文字      明治:翻訳語      シンガポール:話し言葉
 反発はあったが定着   こっそり定着      強権でも空振り

トルコは反発を押し切って文字を変えられました。日本は言葉をすり替えて飲み込みました。でもシンガポールは、人のしゃべり方を変えることだけは、強権をもってしてもできませんでした。

エンジニアの世界の言葉に直すと、こうなるそうです。

見た目はツールで押し切れる。外部の道具は翻訳して飲み込める。でも「プライドが出る設計判断」だけは、規約を何ページ盛ろうが押し切れない。

もう一つ:新しく作るのは楽で、古いものの作り直しが地獄な理由

ついでに、時間軸の話も同じオチです。

トルコや明治日本がうまくいったのは、「これから新しくする」という上り坂だったからです。みんなが前を向いて高揚しているときは、新ルールも勢いで通ります。

逆にシンガポールが苦労したのは、すでに完成して回っているものを後から直そうとしたからです。馴染んだものを否定されると、人は全力で抵抗します。

👉 エンジニアの世界でも、ゼロから作る新規プロジェクトは比較的すんなり進み、長年動いている古いシステムの作り直し(大規模な刷新)は高確率で揉めるそうです。技術が難しいからというより、「すでに馴染んだやり方」を後から正面否定しているから。技術の問題というより、心理の問題なのです。

まとめ:自分が今、どの層をいじっているか

標準化やルール作りに着手する前に、せめてこれだけは見極めるとよさそうです。

いじろうとしているもの エンジニアの世界での例 現実的な落とし所
書き方・表記(最後はルールで飲める) 見た目の整え方、フォーマット ツールで淡々と強制する。会議で議論しはじめた時点で負け
外から取り込む中身 外部の道具・新技術 自分たちの形に「翻訳」して飲み込む。生のまま全面採用しない
判断・プライド 設計の方針、名前のつけ方、仕事のクセ 規約で押し切ろうとしない。指針+対話で諦めずに付き合う

一言でまとめます。

「これは表記(=痛みを伴ってもルールで押し切れる)なのか、それとも話し言葉(=正面から否定すると総スカンを食う)なのか」
これを見分けるだけで、無駄に死ぬ標準化の取り組みは、だいぶ減るはずです。

そしてこの記事の、身も蓋もない裏テーマは、たぶんこれです。

人を変えようとするより、構造を変えるほうが速い。そして大抵の人は、わかっていてもまず人を変えようとして失敗する。

「ルールを作って人に守らせる」のは、要するにシンガポール政府と同じ賭けです。だいたい負けます。でも「仕組みの側で勝手に揃う」ようにすれば、人は抵抗する暇もなく従ってくれる。標準化の成否は、結局人の善意を当てにしたか、仕組みで吸収したかの差でしかない、というのが、横で見ていた非エンジニアの正直な感想です。

もちろん、教育や話し合いに意味がない、という話ではありません。
ただ、うまくいった標準化を振り返ると、たいてい「人ががんばった」のではなく「がんばらなくても勝手にそうなる仕組みがあった」だけ、というのが正直なところのようです。


⚠️ 補足:トルコのアタテュルクがやったのは「英語の導入」ではなく、自国語の文字をアラビア文字からラテン文字へ変えた改革です(言語純化・国家建設とセットの大きな政策の一部)。また、この改革は決して無抵抗で進んだわけではなく、宗教的・文化的な反発や、識字の学び直しという大きな痛みを伴いました。本記事はその理解に基づいています。歴史の評価には諸説あるため、深掘りされる場合は専門資料をご確認ください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?