Home > Latest topics

Latest topics > GitHubに多数ある自分のリポジトリのデフォルトブランチをmasterからtrunkに切り替えた

宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能! シス管系女子って何!? - 「シス管系女子」特設サイト

GitHubに多数ある自分のリポジトリのデフォルトブランチをmasterからtrunkに切り替えた - Jun 12, 2020

Gitのデフォルトブランチ名は慣習的にmasterとされてるんだけど、これがmaster/slave(主人と奴隷)つまり奴隷制に由来する表現であるとして、2020年5月25日にミネアポリスで起きた白人警官による黒人被疑者の殺人事件を契機に盛り上がりを見せているBlack Lives Matter運動の流れを承けて、別のブランチ名に変更しようという動きがある、という事を知った。実際に、GitHubの公式のコマンドラインツールで既定のブランチ名がtrunkに変更された(……と例に挙げたけど、たまたまタイミングが一致しただけで、このプロジェクトでの変更は事件の前だったみたい)ほか、いくつかのプロジェクトも追従しているという。

結論から先に言えば、僕もこの判断に追従した。GitHubの僕のアカウント配下のリポジトリは現時点で186あって(hub api users/piroor | jq .public_reposで調べたらそう言われた。プルリクエスト用の一時的なforkが結構あるのでそれで多くなってる部分はあると思う)、ひとつひとつ手でやっていると埒が開かないので、それぞれローカルでは1つの作業ディレクトリにcloneされているのをいいことに、WSL1のUbuntuのbashで、GitHubのリポジトリを操作するAPIを叩けるhubを併用して以下のようなワンライナーで一気にやることにした。

export NAMESPACE=piroor;
ls | while read path;
do
  [ -d "$path" -a -d "$path/.git" ] &&
    echo "checking $path";
    (cd "$path";
     export ORIGIN_INFO="$(git remote show origin)";
     (echo "$ORIGIN_INFO" | egrep "Fetch URL: git@github.com:/?$NAMESPACE/[^\\.]+\.git") &&
     (export REPOSITORY="$(echo "$ORIGIN_INFO" | grep 'Fetch URL' | egrep -o "([^/\.']+)\.git" | cut -d . -f 1)";
      echo "updating $NAMESPACE/$REPOSITORY";
      ((git branch | grep '* master' &&
        (git branch --move master trunk;
         git push --set-upstream origin trunk));
       (hub api "repos/$NAMESPACE/$REPOSITORY" | jq .default_branch | grep master &&
        hub api "repos/$NAMESPACE/$REPOSITORY" -X PATCH -F default_branch=trunk);
       (URL_BASE="https://travis-ci.org/$NAMESPACE/$REPOSITORY.svg\\?branch=";
        git grep -E "${URL_BASE}master" |
          cut -d : -f 1 |
          uniq |
          xargs sed -i -r -e "s;${URL_BASE}master;${URL_BASE}trunk;g" &&
        git commit -m 'Migrate master to trunk' $(git grep -E "${URL_BASE}trunk" | cut -d : -f 1 | uniq) &&
        git push))));
done

まずgit remote show originでリモートリポジトリとの対応付けを調べる。移行対象のリポジトリであれば、git branch --move master trunkでブランチ名を変更して、GitHub上のデフォルトブランチもtrunkに切り替えて、Travis CIのビルドステータス画像のURLに含まれているブランチ名もついでに更新する、という感じ。他にもまだ変えないといけない所は残ってると思うけど、それは気付いた時に追々直していこうと思ってる。

同様に各リポジトリをclone済みの他の環境では、ローカルリポジトリの情報を変更するだけなので、以下のようになるか。

export NAMESPACE=piroor;
ls | while read path;
do
  [ -d "$path" -a -d "$path/.git" ] &&
    echo "checking $path";
    (cd "$path";
     export ORIGIN_INFO="$(git remote show origin)";
     (echo "$ORIGIN_INFO" | egrep "Fetch URL: (https://github.com/|git@github.com:/?)$NAMESPACE/[^\\.]+\.git") &&
     (export REPOSITORY="$(echo "$ORIGIN_INFO" | grep 'Fetch URL' | egrep -o "([^/\.']+)\.git" | cut -d . -f 1)";
      echo "updating $NAMESPACE/$REPOSITORY";
      (git branch | grep '* master' &&
       (git branch --move master trunk;
        git branch --set-upstream-to=origin/trunk))));
done

ローカルにcloneされてないリポジトリは、今の所まだ手つかず。hubでどうにかできるだろうとは思ってるので、やったらまた追記する。

(6月15日追記)ローカルにcloneされてないリポジトリも全部やるワンライナーは以下のような感じになった(whileループが二重になってまでワンライナーて……)。

export NAMESPACE=piroor;
export TOTAL_REPOS=$(hub api users/piroor | jq -r .public_repos);
export PER_PAGE=100;
seq 1 $((($TOTAL_REPOS / $PER_PAGE) + 1)) | while read page;
do
  hub api "users/$NAMESPACE/repos?page=$page&per_page=$PER_PAGE" |
    jq -r .[].name |
    while read name;
    do
      [ "$(hub api "repos/$NAMESPACE/$name" | jq -r .default_branch)" = "master" ] &&
        echo "updating $NAMESPACE/$name" &&
        (export workdir="$(mktemp -d)" &&
         echo "  workdir: $workdir" &&
         (cd "$workdir" &&
          git clone "git@github.com:$NAMESPACE/$name" --branch master --single-branch &&
          cd "$name" &&
          git branch --move master trunk &&
          git push --set-upstream origin trunk &&
          hub api "repos/$NAMESPACE/$name" -X PATCH -F default_branch=trunk);
         rm -rf "$workdir");
    done;
done

API叩いて直接リポジトリをリネームするやり方が分からなかった(そういうのはない?)ので、一時的にcloneして作業するという形で解決してみた。プルリク用にforkした物までゴソッとやっちゃうので、気になる人は除外処理を入れて使おう。

自分はこのように移行したけど、既存ツールチェインが壊れる危険とかいろいろあるし、これが本来意図された通りの効果がある変更だという確証もないので、みんながみんなやるべきとまでは思ってない、という事も書き添えておく。

以下、技術的な話から離れて、このような言い換えの必要性と妥当性について今回色々調べた事・考えた事を、記録のために書き残しておく。

Gitのmasterブランチは差別的表現なのか?

自分がmaster/slaveという言葉を知ったのは、プレイステーション版ポリスノーツにおけるパワードスーツ(劇中では「EMPS」と呼ばれていた)の解説で、人間が動かした四肢の動きをトレースする形でパワードスーツの四肢が稼働するという制御モデルのことを指す表現だった。その他にも、ATA(IDE)インターフェースで接続する機器のマスター・スレーブ設定など、いくつかの場面でこの用語を見かけていたと思う。DNSやデータベースなどの分散システムのノード間の関係を表すのにも使われていたようだというのは、割と後から知った気がする。

この用語が奴隷制を連想させるということから、primary/secondary、master/worker、source/replica、provider/consumerなど別の表現に改められていっている、ということは以前から把握していた。歴史の長い古いソフトウェアでは今でもたまに残っていて、実際OpenLDAPでも今日付けで変更が提案されたようだ7月2日追記:その後MySQLにも同様の変更が行われた

日本語で「奴隷ノード」とか「隷属ノード」とか書いてあったらたぶんギョッとする(だからだろうけど、大抵の日本語の技術文書ではこれをカタカナ語で「スレーブ」と訳してお茶を濁してる)ので、英語圏の人が見た時にもきっとギョッとするんだろう。

(6月15日追記)自分にあてはまる例で考えると、例えば何かの建物の入り口に「ジャップも歓迎!」と書かれていると、自分はたじろいで近寄り難さを感じる、つまり拒絶されたように感じる。もしそれを書いた人が差別主義者でなく、単に普段触れていた言葉がそれだったからという程度の理由でそう書いていたなら、「日本人も歓迎!」程度に言葉を改めてもらえると、より近寄りやすく感じると思う。それと同様に、自分のルーツに奴隷の存在がある人がmaster/slaveという表現を見たら、同様に近寄り難く感じるのではないか、であれば表現を改めた方がより障壁が減るのではないか、と自分には思える。実際に奴隷にルーツを持つ人がそう言っている様子を観測したわけではないので、これはあくまで想像だけれども。

そう考えると、個人的には、言い換え後の表現がそれぞれの関係性をより客観的に適切に言い表す物になっているのであれば、こういった言い換えの変更自体には異論はない。

ただ、Gitのデフォルトブランチ名のそれを槍玉に挙げるのは筋違いではないか? という事を、冒頭の話を知った時に僕は思った。

というのも、僕はここでのmasterを、奴隷に対する主人ではなく、レコードやCDのように大量の複製品を生産する場面での原版という意味だと認識していたからだ(この用法はそもそも、中世の徒弟制度において、師匠が弟子に「これと同じように作れ」と示した見本の事を「master work」や「master piece」と表現した事に由来するそうだ)。まったく異なる由来の語を、ただ字面が同じだというだけで別の語に言い換えるというのは、本来無害であった語に後から差別的な意味を強く結び付ける行為に思えるので、僕は正直、忌避感を覚える。

Blackという言葉がそもそも差別的なのか?

似た例が、blacklist/whitelistという表現の、別の表現への言い換えだ。身近な所では、Chromium(Google Chrome)でもつい数日前にこの変更が行われていたそうだabout:url-classifierを見るとFirefoxにも同様の表現が残ってるけど、そのうち置き換わるんじゃないかと思う。

個人的には、間接的な表現よりもallowlist/denylistやallowlist/blocklistのような直接的表現の方が分かりやすいのは間違い無いと思うし、そういう観点での言い換えは是非するべきだと思う。

ただ、これが「黒人に悪印象を持たせるネガティブな表現」だからというのは、自分は理由としては筋が通らないと思っている。この言葉は17世紀のイギリスの劇作家が使った表現に由来するらしく、元々黒人を意味する物ではなかったそうだからだ。

そもそも、人類の文化において白と黒という色は、光と闇、正義と悪など、ポジティブな意味・ネガティブな意味にそれぞれ対応付けられることが多いようだ。アフリカ原住民の文化圏内ですらそうだと聞いた。

「西洋で白人によって黒人奴隷の人身売買が行われていた」「その流れを承けて、アメリカでは黒人が今でも差別を受けている」というのは事実だけど、だからといって、「blackとは黒人の事で、被差別者の事で、被差別者に対してネガティブな印象を持たせるblacklistという言葉は差別的である」というのは、自分には詭弁のように感じられる。「黒」という色の(色名の)使い道は、たまたま肌が黒く生まれた人たちにだけ、あるいは、彼らを虐げてきた白人達にだけ特権的に決められるという事なのだろうか? じゃあ「白」は? 「黄色」は? どうなんだ?

また、語源の話をしだすと、「slave」という言葉自体、ローマ帝国時代にスラブ人を奴隷にしたことに由来する表現だという。スラブ人にしてみれば、自分達のことを言うだけで、奴隷として彼らを使役してきた側の人間の子孫から「差別的表現だ」と言われてしまうというのは、どうなんだ?

その言葉を見たら不快に感じる人がいたら(いる可能性があったら)、名前を変えないといけないのか?

タイミングを同じくして、Rubyのコードに対してCI的にlintをするためのツールであるRuboCop(この名前は「ロボコップ」に由来している)にも、黒人被疑者を殺した白人警官を想起させるからCopから別の名前に変えよう、という要望が出ていたそうだ。僕はRuboCop リネーム騒動の所感 - @kyanny's blogから諸々の情報を把握したけれど、ここまでいくと馬鹿馬鹿しさすら感じてしまう。

ものすごく露悪的な言い方をしてしまうんだけれども、そもそもこの一連の黒人差別に関する話自体、西洋の白人が身勝手な振る舞いを過去にしてきたツケを支払わされている、という経緯なわけで。こういう妥当性の疑わしい言い換えを今頃になって急にあちこちでやっているというのは、「現代社会、特にアメリカにおいて、人種差別主義者と見なされたら社会的な死を意味する。差別主義者と思われないために、なんとかしてポーズを取って証拠を示さないといけない。でも自分の身近な所でできる事なんて何もない。じゃあどうすればいいか? 無理やりにでも理由を付けて、それっぽい事をするしかない」と焦って、自己保身のために躍起になっているだけなのではないか? 実際に被害を受けたわけでもない自称リベラルの白人が、本質的には利己的な動機でそうしているだけなのではないか? と思えてならない(これは自分の偏見)。

話は明後日の方向に行ってしまうけど、「見て不快になる人がいる」という事で言えば、被爆国の出身の人間としては、原子爆弾を「なんかスゲー威力の爆弾」程度の扱いでホイホイ使っているハリウッド映画に、僕はあまりいい気がしない。そんな原子爆弾(atomic bomb)を連想させるatomicという言葉(データベース操作などの文脈では、依存関係にある複数の操作をトランザクションなどを用いて一度に実施し、1つでも失敗すればすべてを巻き戻すなどして、「分割不可能な物として扱う」事を、「atomicに処理する」のように表現する)を使わないで欲しいと、被爆者やその遺族が言ったとして、彼らはそれに本気で応じるだろうか? 僕にはまったくそうは思えない。まあ、自分は広島にルーツを持たない以上そもそもこういう事を言う資格は無く、文句を言いたいがために話を混ぜっ返してるだけなんだけれども。

((6月15日追記)そういえば、上下セパレートの水着を「ビキニ」と言うけど、これはビキニ環礁での核実験に由来していて、このとき使われた爆弾のように「小さくても破壊力抜群」だから、とフランスのデザイナーが名付けたらしい。被爆国出身の人として不快にならないのか? というと、見てて嬉しいので気にならないし、何なら自分でも描きます。ダブスタもいいとこですね。)

Gitのmasterは奴隷制に由来している、と言える(言えなくもない)証拠があった

仮に、言い換え後の表現がより妥当で整合性のある物になるのだとしても、移行作業のコストは少なからず発生するし、その影響は自分の手元だけでなく、リポジトリを参照している他のプロジェクトにだって及ぶ。そんな影響範囲の広い変更を、自分達の差別の歴史のツケを払わされてる連中の自己満足(何度も言うけど、これは自分の偏見で、そういう確証があるわけではない)に付き合わされる形でやらされるなんて、まったく気が進まない。

そんな風にモヤモヤしていたので、この動きに追従しようと積極的には思えず、さりとて「差別的な表現はやめよう」と普段から言っている人の一人としては、言行不一致になってしまう事の気持ち悪さもあり、僕はジレンマで大変なストレスを感じていた。

それで、「こんな気持ちを引きずったままでは仕事の能率も上がらない。やるにせよやらないにせよ、はっきりした根拠を持って判断したい」と思って、英語圏の状況を調べてみたら、Gitリポジトリのデフォルトブランチの切り替え方を紹介する記事に関するHacker News上のトピックの中に、GitのmasterはBitKeeperの用語に由来していて、そのBitKeeperでは「master」は「slave」に対応する語として使われていた、というコメントを見つけた。

Gitは元々、Linuxカーネルのソースコードを管理するために使われていたBitKeeperというバージョン管理システムの代替として開発されたことから、多くの用語をBitKeeperから借用しているらしい。そのBitKeeperのドキュメントを参照すると、確かに「slave」という言葉が登場している。このファイル自体は20年間変更が無かったようなので、最近になって誰かがわざわざ差別的な表現を仕込んだという事もない。

この語を借用した時にリーナス氏がどう考えていたかは知らないけれども、このような事実がある以上、「Gitのmasterという言葉は奴隷制に由来している」という話には一定の妥当性があると自分には思えた。であるなら、「どっかの誰かの自己保身に付き合わされて」ではなく「自分の信念に基づいて」という動機でやる根拠になるので、自分としては、後はコストの問題が解消されれば、やらない理由がないことになる。(あと、検索してみたら、Gitのブランチ名変更は意外と簡単だという情報も見つかり、まだやったことがなかったから試してみたい、という技術的な興味が出てきたというのも正直ある。)

 

以上の経緯で、僕は自分が管理しているGitリポジトリのデフォルトブランチ名をmasterからtrunkに切り替える事にした。Git本体ではないけれども、Gitユーザーに対してそれに次ぐ影響力があると思われるGitHubの、公式のツールがそうしているということは、採用事例が多くなっていくだろう、と思ったのがtrunkを移行先にした理由だ。

それに、元々、trunkはSubversion時代に開発用のメインラインの名前付けとして使われていたし、それ以前から、Mozillaのブラウザの開発ブランチ(今ではmozilla-centralと呼ばれている物)の内部名としても親しんでいた。「枝(branches)」に対する「幹(trunk)」という名前付けはメタファとして理に適っていると、自分としては素直に思える。

他の代替候補としてはmaindefaultdevelopmentなどがあるらしい。デフォルトブランチ名の流儀が複数乱立するのは煩わしいのだけれど、元々Gitは、リポジトリ初期化時に初期ブランチが存在しなくて自分で作らないといけないというハードコア仕様だと認識しているので、こういう所でみんな好き勝手にバラバラな選択がなされるのもまたGitの文化なのかな、と思っている。

「言葉狩りうぜえ」と思ったときには、それでも立ち止まるようにしたい

僕は日本で生まれ日本で育ち、今も日本に暮らしている。まだまだ男性優位の社会において男として生まれ、首都ではないにせよ「田舎」と卑下する感覚の薄い土地であった大阪で育ち、一応ホワイトカラーの労働者として、首都の東京で生活している。家系的には農家だったようで、被差別部落の差別についても当事者ではない。自分が理不尽な差別を受ける側になる事といったら「オタク差別」くらいだったけれど、世代交代もあって近年では社会におけるオタク差別の空気もだいぶ薄れた気がする。「童貞差別」についても、交際相手ができて結婚もした今では、我が事とは言えない。

という具合に、普段の生活で被差別者としての辛さを実感する機会が僕には無いので、実際に今リアルタイムで差別的な扱いを受けている人の口惜しい感覚は、本当のところは分からないのではないかと思っている。

そのように「強者側」「傍観者側」にいる人の感覚で「えっ、それくらい別にいいじゃん」「何でそんな程度のことに目くじらたててるの?」とナチュラルに思って為されるのが、差別というものだということを、僕はすでに知っている。だから、自分の感覚で「これくらい問題ないでしょ」と思えたときにこそ、自分が知らず知らずのうちに差別をしている可能性は常に考えないといけないと思っていて、こういう話題には敏感にならずにはいられない。自分がしていること・してきたことの正当性を主張することが、それ自体差別になっている可能性すらある。いかな互換性のためとはいえ、masterというブランチ名を堂々と使っていいと言える自信を、僕は今は持てないでいる。

また、今回は「確かに差別的な意味合いに由来している表現だった」と言える材料が見つかったけれど、そうでなかった場合(差別に由来していない表現について、後付けで差別だと言われた場合)に僕は一体どうするのか? という事についても、まだ答えが出ないままだ。masterという言葉には前述したようにマスターコピーという意味もあるので、もしルーツを掘った結果それを意図して名付けられたのだという明確な証拠を得られれば、それを根拠に元のデフォルトブランチ名を使い続ける判断をした可能性はあるけども。

例えば、ある日突然「地下」という言葉が差別的だということになって、行政や司法の目が届かない所で秘密裏に行われる裏取引などを「underground」と形容するのは差別だから改めろ、と言われたら、どうすればいいのだろうか?

これはまったく荒唐無稽な話でもないと思う。例えば宇宙移民時代を描くSFアニメの「マクロスF」では、「新マクロス級」と呼ばれる、渋谷やサンフランシスコ市街など地球上の都市を再現した宇宙船に暮らす人々の生活が描かれていたが、設定上は、これら見栄えのいい地上市街地は観光資源としての性質もあり、一部の人だけが居住を許されていて、そうでない人は地下に暮らしている(劇場版でランカが営業をしていた秋葉原風の街は、そのような地下市街の一角にある)のだという。地下に暮らす貧民にとって、何もしていなくても犯罪行為をしているというイメージを抱かせるから、undergroundという言葉を犯罪に結び付けて使うのは差別なのだ、と言われたら、地上で生きる特権階級の人はどう抗弁するのだろうか?

 

「差別者の側の懺悔」や「正義の代弁者を自称する者による自主的な代理執行」で行われようとしている言葉狩りには従わない、という判断は1つの基準としてありうると思う。実際に「被害」を受けて苦しんでいる人がいないのに、あるいは、明確な悪影響があると証明されてもいないのに、先回りして言葉狩りをしていってしまうと、使える言葉がなくなってしまう。

(6月15日追記)それに、肝心の当事者が「べつにそんな事は求めてないんだが?」「そんな事されても嬉しくもなんともないんだが?」と思うようなことを当事者以外が自主的に勝手にやった結果、とばっちりで当事者にまでヘイトが向かってしまっては、差別の助長にすらなってしまう。「master/slaveという表現がなくなれば奴隷にルーツを持つ人にとって近寄り難さが減じるだろう」と前述したけれど、これもあくまで、当事者でない自分の勝手な期待に過ぎない。

でも、じゃあ「当事者」が求めていればいいのかといっても、その当事者個人が当事者全体を代表するのが妥当かどうかは分からない。例えば、当事者の中でごく少数の例外的に被害者意識の強い人の被害妄想だけを代表として取り扱うのはフェアなのか? という問題は残る。そうでなくても、たまたまその属性を持っているだけで代表者扱いされても困る、という人だっている(僕は妻に、何かの話題について「女性としてどう思う?」と聞いて、「自分個人はこう思うが、それを女性の総意として扱われては困る」というふうに釘を刺されたことがある)。

どんなときでも通用する万能の判断基準という物はなく、その都度複数の当事者・なるべく広い範囲の人の意見を集めて考えるしかない。問題に直面する度に、思考停止しないで考え続けるしかない。そのようにペンディングにした上で、実際に声が上がるまでは、何事もないものとしてそれまで通りの営みを続けるしかない。という、ものすごく平凡でつまらない結論にしかなりようがないのだと、僕は今の所考えてる。

追記1:masterを継続する選択を強く非難もできない

こういう話を踏まえた上で、「自分はmasterのままでいく」と判断する人もいると思う。でも僕は、そういう人を「貴様は差別主義者だ!」と殊更強く非難するものではないと思っている。

デフォルトブランチがmasterであることを前提としたツールチェインだってあるだろうし、複数人で開発しているなら全員に手元で何らかの操作をやってもらわないといけない。「デフォルトブランチの変更なんて簡単だ」と言える状況ばかりではないということを忘れてはいけない。

自分も、歴史を掘り返さなければ、マスターコピーの意味でmasterというブランチ名を使っていると心底思ったままでいたはずで、悪意なくやっていたことを「差別だ!」と非難されれば、戸惑いもすれば防衛本能も働く。また、「こっちは何の責任も無いのに、差別者だった"あいつら"の尻拭いのとばっちりを受けて迷惑している」という捉え方をしたくなるのも、ごく自然なことだと思う。

それに、そもそもこの事を放置した所で今すぐ人が死ぬような喫緊の課題というわけでもない。むしろ、既存のツールチェインを壊して人死にが出ることの方が怖い。そんなリスクを冒してまでやることか? という問いは全然正当だと思う。

言うなれば、自分の目の前に落ちているゴミをどこまで拾うかどうかみたいな話だろう。拾える状況にある人は拾った方がいいけど、拾えない人に無理してまで拾えとは言えないし、そもそもそこまで綺麗好きじゃないしゴミが落ちてても自分は気にならないって人もいるし、綺麗好きの人でもミクロサイズのゴミまで掃除するとは限らない。

この例えでいえば、僕はなんやかやあって潔癖症レベルの感覚になってしまっていて、僕の目の届く所にゴミがあることに気付いてしまったら拾って綺麗にしておきたいし、他の人も同様に綺麗にしてくれると嬉しいけど、みんながみんな同じ感覚だとは思わないでおく、というくらいの捉え方をしてるつもりでいる。というか、それ以上の捉え方をしてはいけないと思ってる。たかがデフォルトブランチ名を変えるだけのことで、「自分はそれをやった! みんなもやろう! やらない奴は社会の敵だ!」とかドヤってマウンティングして正義の味方を気取るのは、本質を見誤っていると思う。そういう「意識だけ高い」連中がうざいから、奴らと同じことをしたくない、と「普通の感覚の人」に忌避されて、傍観者だった人までもをわざわざ敵にしてしまっては、本末転倒だ。

……ということを何度でも自分に言い聞かせないといけない、と、「この記事に対する好意的でない反応を見かけてあまりいい気分がしなかった」自分を自覚して改めて思った。

追記2:差別心がなければべつにどんな言葉を使ってもいいだろう、という意見について

この記事への反応の中に、「言葉を使った人の側に『差別したい』という考えが特にないなら、どんな言葉でも問題無いのでは」という趣旨に受け取れるコメントがあった。これについて補足する。

差別に関することについて、以下の3つのカテゴリがあると考えてみる。

  1. 差別的な(とされる)行為をすること。
  2. 差別的な(とされる)言葉を使うこと。
  3. 差別的な(とされる)考えを持つこと。

この3つのうち、1が問題だという事については誰も異論がないだろう。しかし、2と3については意見が分かれる場合がある。

  • この記事では2をやめることについて述べたつもりでいる。
  • 僕が見かけたコメントでは、3をやめることが大事で2は問題無いのでは、という事を言っているように見えた。

後者の見解の人からすると意外に思われるかもしれないけど(そしてアメリカあたりではこういう考え方は受け入れられないのかもしれないけど)、僕は3それ自体はべつに問題ないと思ってる。その人がどういう価値観を持ち何を思うかは、いわゆる内心の自由の領域であって、そこを強引に変えさせることはできないと認識してる。

というか、本人が変わる気にならない限り変わらないので、変え「させる」努力はするだけ無駄だと思ってるし、変え「させる」ような真似もするべきではないと思ってる。せめて表出する部分だけでも取り繕ってくれればよくて、この記事は、その取り繕い方が分からない場合の参考にでもしてもらえれば、という感じ。

ただ、変え「させたい」と思ってしまう瞬間は僕にもまだあって、その度に「いかんいかん」とブレーキをかけるようにしてるつもり。この記事を書くにあたっては、相当ブレーキを踏みまくってる自覚がある。


ということで、長くなりましたが、Gitでの開発に使うデフォルトブランチ名を変えましたという話でした。

「Gitではデフォルトブランチも結局ただのブランチなので、trunkと付けると『trunk branch』と訳の分からない事になってしまうのでは?」というご指摘がありましたが、アイビーのように挿し木で増やせる植物なら枝が幹になることもあるってことで、笑って許してやってくださいませ。


追記が増えてきて見通しが悪くなったので、追記した部分の趣旨だけで別記事にまとめました

分類:Web技術, , , 時刻:03:31 | Comments/Trackbacks (4) | Edit

Comments/Trackbacks

なんだかなぁ、と思う

確かに言葉の意味を考えたらmaster/slaveは主人/奴隷と解釈出来るけど、こういうの言い出したら他に幾らでもあるんだよね。

簡単な例を挙げると、日本語の「主人」(マスターではなく旦那の意味)、「奥さん」とかもそう。妻が旦那を主人と呼ぶのは主従関係が出来ていると見ることが出来るし、第三者が奥さんと呼ぶのも、女性は台所奥に籠もっているものというニュアンスがある。

もちろん普段からそんなこと意識して使ってないのは明らかで、それはmaster/slaveも同様。

Commented by Johann at 2020/06/12 (Fri) 23:47:26

no title

> こういうの言い出したら他に幾らでもあるんだよね

まったくその通りで、master/slave問題については、実際に自分が奴隷だったとか祖先に奴隷だった人がいるとかの当事者の人の見解をもっともっと聞いてみたい、というのが僕の今の正直な気持ちです。
(なんとなく、「そんなクソ下らんことで騒ぐな、もっと本質的な議論せえよ」と一喝されそうな気はしてます。)

Commented by Piro at 2020/06/13 (Sat) 00:23:39

no title

まさに件のことで悩んでいたのですが、歴史的な問題だけに文脈が多岐に渡り、その情報量に圧倒されて追うことに辟易していたところでした。大いに参考にさせて頂きます。

自分はIDEケーブルのmaster/slaveが初めての遭遇でした。この手の問題は今回のように原点に難があれども既に違和感がないほど広く使われているケースと、本来は無謬な言葉だったものが悪意ある使われ方をしてしまったケースの二通りに分かれると思います。

後者の場合はそれほど悩むこともないのでしょうが、前者の場合では物事の判断基準に意見の量・割合を加味すると往々にして少数派が蔑ろになってしまうので、その度に頭を痛めねばならないのかなと考えています。

Commented by 7743 at 2020/06/13 (Sat) 00:44:50

no title

差別的な表現を回避すること自体には意味がないと思っています。
どのような表現にせよ、誰かしらの琴線になり得るので。

私には障碍を持った家族がおり、彼を指さして「個性のある人」「大変なことも多いでしょうが」みたいなことをよく言われます。こちらからすると、大変だろうとか差別で傷つくだろうというレッテルを、初対面の人に突然貼られたという感を受けます。そうした配慮が適切な人もいますが、直截に言われても問題ない人や、私たちのように直截に言われないことで不快になる人もいるのです。

先のは障碍での話ですが、人種においても同様に言えるでしょう。実際、「ニグロ・スピリチュアル 黒人音楽のみなもと」には、ニグロという表現はアフリカ系アメリカ人にとっての誇りというような趣旨のことが書かれており、差別的になりうる表現で傷つく以外の反応をする人もいるようです。

名称の変更が「より客観的に適切に言い表す」ためなら真っ当だとは思いますが、傷つく傷つかない云々のためというのは詭弁だと思います。

Commented by at 2020/06/15 (Mon) 20:04:28

TrackBack ping me at


の末尾に2020年11月30日時点の日本の首相のファミリーネーム(ローマ字で回答)を繋げて下さい。例えば「noda」なら、「2020-06-12_migrate-default-branch-from-master-to-trunk.trackbacknoda」です。これは機械的なトラックバックスパムを防止するための措置です。

Post a comment

writeback message: Ready to post a comment.

2020年11月30日時点の日本の首相のファミリーネーム(ひらがなで回答)

Powered by blosxom 2.0 + starter kit
Home

カテゴリ一覧

過去の記事

1999.2~2005.8

最近のコメント

最近のつぶやき