天才プログラマー・オードリーさんがたった200行で効果的なアプリを作れる秘訣
1: 2021/02/02(火) 21:58:20.73 _USER

 IQ 180の天才プログラマーで有名な、台湾のデジタル担当大臣オードリー・タンさんへのインタビュー。今回はかなりギークかつ実務的な質問をしました。

石井:今回の私の質問は少し技術的なことです。オードリーさんは天才プログラマーとして有名です。GitLab Taiwanのエンジニア友人から伺ったのですが、オードリーさんはわずか200行のコードで、驚くほどパフォーマンスが高いアプリケーションを作成したことがあるそうですね 。

軽量で効果的なコードを書くための秘訣があれば、3つほど教えていただけますか?

オードリー・タン:1つ目は、デザインやグラフィックやアイコンなどを除外した、コアとなる機能のみが書かれたコードをコミュニティと共有することです。

私はコードを公開する時、「このコードは暫定版なので、プルリクエストをお送りください。」と言います。そうすれば、他の皆さんが(修正時の心理的ハードルが下がるため)貢献しやすくなります。

本当に重要なことは、単独で作業するのではなくクラウドで作業することです。

2つ目は、社会的に良さそうなプロジェクトかどうか初期段階で見極めることです。コードを書き始める前にreadme.txtの文面を考え、プロジェクトの企画全体を想像し、プロジェクト名とハッシュタグを考え、不特定多数の人が社会的意義を認めて開発に参加するように動機付けるには何をするべきか、といったことを考えるのです。

3つ目ですが、相手を多くの同意書で縛る代わりに、相手に活躍の場を与えることを大切にしています。これは「Radical Trust(徹底的な信頼)」と呼ぶ方法論です。相手は、GitHubで自分が実施したcommitに問題があると分かったら、自らrevertすることができます。

注:commit=GitHub等で変更を反映する操作
注:revert=GitHub等で変更を取り消す操作

許可を得ることは謝ることよりずっと難しいことです。だから、取りあえず進めてもらい、もし間違ったら一言ごめんなさいと言って修正してもらえば良いのです。

私自身もこれまで、誤字脱字を含め、些細なミスをいろいろしてきました。 しかし、もし皆があなたの許可がないと動けないとしたらどうでしょうか。その場合、それがプロジェクトのボトルネックになってしまい、あなたの負担が減ることもありません。あなたがその気になれば、あなたは他の人に委任することさえも委譲することができます。

石井:その通りですね。ありがとうございます。

オードリーさんが言及された「Radical Trust」に大変興味を持ちました。

「Radical Trust(徹底的な信頼)」と「Trust(信頼)」の主な違いは何でしょうか?

オードリー・タン:「Radical Trust」の意味するところは、参画する権利の委譲です。例えば、Rakuというプログラミング言語を使いやすくするために、最近私はPugsの実装を行いました。その際、私は共有リポジトリへのプッシュ権が必要だったので、PerlやHaskellの関係者だけでなく、Pythonの生みの親であるグイド・ファンロッサムにもそれを伝えました。

ご存じの通り、Perl 6を巡ってはフォーラムに(Perl 5の正統な後継でないという)批判的なコメントが書かれますが、私達は大抵「権限があります」とだけ返信します。

あなたも開発に参加して、より良いものにすることが出来ます。進化が続くのは、元のバージョンから改良版を生み出す人のおかげです。直前に変更が行われたばかりであっても、もっと良い案が見つかったなら直ちに改良を施すべきなのです。これはWikipediaと同様で、IPアドレスを持っている人なら誰でも改良することが可能です。もし間違った変更をしてしまったら、 後から謝ればよいのです。
以下ソース
https://ascii.jp/elem/000/004/040/4040504/

20: 2021/02/02(火) 22:39:46.81
>>1
おいUSB大臣読んでこい

 

54: 2021/02/02(火) 23:33:34.78
>>20
知能指数が100違うとどうなるんだろうな

 

34: 2021/02/02(火) 22:54:54.66
>>1
200行の殆どはreadme.txtってことか

 

94: 2021/02/03(水) 00:44:33.28
>>1

どのプラットフォームのどういうアプリを書いたのか、誰か分かる?

 

190: 2021/02/03(水) 14:41:11.21
>>94
英語でググると一発で出てくる話なんだが
そこにたどり着けないお前にその話しても無駄

 

214: 2021/02/03(水) 18:44:56.66
プログラマーってみんな>>190みたいに口も性格も悪いのか?

 

217: 2021/02/03(水) 19:24:21.46
>>214
そんなおかしなこと言ってるか?

 

229: 2021/02/03(水) 23:03:44.78
>>214
口や性格が悪かったらどうだっていうんだ?
知って何になる

 

245: 2021/02/04(木) 09:53:56.45
>>229
うわっ、その書き込みが>>214そのものだねw

 

148: 2021/02/03(水) 08:58:56.86
>>1
馬鹿だな
複雑でわかりにくいほど
他のプログラマーにマウント取れるし
ついでにインターフェースもややこしくして
ユーザーをケムに巻けるのに(日本のプログラマー談)

 

182: 2021/02/03(水) 14:14:47.31

>>1 うわー・・・・日本社会に欠けてるものばっか。

日本は前提主義、秘密、許可、縛り、再考できない、謝ったら死ぬ病気。

 

191: 2021/02/03(水) 14:46:56.18

>>1
ちゃんと動けばそれでいいんだろうけど、
現実的なシステム業界の問題としては
そいつがいなくなったときに誰がメンテするんだって話になると
めちゃくちゃシンプルなソースを第三者がむちゃくちゃにした上で、はい終わりになるんだよねえ

それでまたちゃんと動けばいいんだろうけど、ね
実際はそうでもないことも多々あるからねえ

とりあえずコードだけで200行とかにしてシンプルにするのはオナニーであって、
その分のコメントもしっかり書いておいてほしい

 

193: 2021/02/03(水) 15:03:50.28

>>191
コメントもだが無精するようなクソコード書く奴が絶対に弄れないようなコードにしてる方が良いよ
誰もが分かりやすいコードの悪い方向への究極系がスタティックおじさんみたいなの生み出すし

行数はデータ構造に依存する所だからアテにならんのは全くその通り

 

195: 2021/02/03(水) 15:11:30.29
>>191
いまどきのはコメントよりもクラス名やメソッド名やアトリビュート名でやってることを理解できるようにする方が第一だろそれで間違いそうなら作り方が悪

 

226: 2021/02/03(水) 22:53:16.87

>>1

この人、驚くほど優秀よな日本との老害政治家とはレベルが違う

 

233: 2021/02/03(水) 23:46:43.89

>>1
> しかし、もし皆があなたの許可がないと動けないとしたらどうでしょうか。その場合、それがプロジェクトのボトルネックになってしまい、・・・

これ分かるわぁ
許可を得るの本当に難しい
自分説明するの苦手だし、上司は兎に角反対から話に入る人だし
こいつは揚げ足取るのが仕事なのか?と思うくらい自分の性格ねじ曲がってしまったよ

 

236: 2021/02/04(木) 00:36:30.85
>>1
流石台湾
それに比べて日本は「USB…?」だからな
ほんと苛ついて壁殴りたくなるわ
日本は無能老害と共に滅んどけ

 

244: 2021/02/04(木) 07:55:41.84
>>59
ガキじゃないし、PCがーなんてレベルじゃねーし
>>1を読むだけで、管理能力どころか前進を促せる能力があることも察する事ができる。

 

2: 2021/02/02(火) 22:01:57.28

平井大臣とどっちが有能だよね?

 

136: 2021/02/03(水) 08:22:01.98
>>2
自動車の免許持ってるオッサンが「俺、運転できるよ。」というのと、F1レーサーか「俺、運転できるよ。」というのぐらい差がある。

 

144: 2021/02/03(水) 08:47:24.01

>>136
そのくくりだと平井って無免レベルだぞ
USBすら知らなかったのに「穴に入れるらしい」って・・・

例えるなら無免で原付の存在を最近知ったおっさんにF1のボールポジションを務めさせたようなもんだぞ(日本国のIT担当大臣)
それが安倍ちゃんよ。これがウヨサヨ関係なく客観的な評価だ。

 

154: 2021/02/03(水) 09:36:36.97
>>144
平井はiPadを持ってるIT通だぞ

 

157: 2021/02/03(水) 10:04:04.85
>>154
議員のジジババの集まりならそうだな確かに

 

203: 2021/02/03(水) 17:03:34.94
>>154
youtubeでずっとゴルフの動画見てそう

 

3: 2021/02/02(火) 22:02:51.54

悪の技術者なんか存在しない、懐かしい価値観だなぁ。

ほっこりした。

 

4: 2021/02/02(火) 22:05:15.52

何をやりたいのか構想を最初に示し
コアコードを書く…

自分で全部作りたいという欲求が
なければ
確かにこのやり方が最適だな

 

93: 2021/02/03(水) 00:42:44.48
>>4
実際、アプリのコードの6割は誤動作防止用だから、コアコードだけ書いてあとの面倒は人に任せるのが精神衛生上いいかもな。

 

5: 2021/02/02(火) 22:06:32.22
以下、能力がないので揚げ足とりでマウントを取ってアイデンティティを保とうとするプログラマが涌きます

 

125: 2021/02/03(水) 07:08:37.33
>>5
お前みたいな奴が一番気持ち悪い

 

6: 2021/02/02(火) 22:07:09.43

当方ボーカルみたいな感じか

 

53: 2021/02/02(火) 23:27:11.94
>>6
妙に言い得てるし w

 

151: 2021/02/03(水) 09:18:32.90
>>6
クリスマス・イブとか上手そう

 

271: 2021/02/04(木) 22:19:03.15
>>6
こんなのサラッと言えて尊敬

 

8: 2021/02/02(火) 22:11:11.00
Radical Trust=丸投げ
ではありません

 

9: 2021/02/02(火) 22:14:09.41
この間特集で出てた人か
3日でマスクの受け取りアプリ?を組んだ人よね

 

10: 2021/02/02(火) 22:15:03.79
頭いいなあ
まあ原理は分かってもそれを落とし込むのはアート

 

11: 2021/02/02(火) 22:15:27.84
一方その頃日本ではGitHubの使い方も知らない年収300万のSEが
公開しちゃいけないコードを公開して炎上してたわけだが

 

16: 2021/02/02(火) 22:21:19.11
>>11
搾取されてると思わせた時点でしょうがないな。

 

12: 2021/02/02(火) 22:18:32.12
アップルの顧問してたらしいね

 

17: 2021/02/02(火) 22:29:27.38
行は改行文字をビューアーが勝手に改行したように見せているだけで、プログラムは1行だ。

 

18: 2021/02/02(火) 22:31:20.01
>>17
それ Haskell が話題でてる前だからやめたほうがいい
perl5 等ではいいけど

 

19: 2021/02/02(火) 22:36:18.13

日本人には出来ないことだらけ

 

22: 2021/02/02(火) 22:41:47.31
>>19
日本人はエクセル駆使してSQL作ってるからw
無駄の極み

 

107: 2021/02/03(水) 03:11:03.07
>>22
エクセル・マクロをムダという方がど素人ww

 

152: 2021/02/03(水) 09:20:10.37
>>107
VBAはマイクロソフトのやる気が無いのが良くない
Python実装の話もいったいどこへ行ったのやら

 

57: 2021/02/02(火) 23:37:27.44

>>19
知らないだけ

しかし、あの連中は何であんなに髪を伸ばすんだ?
あれだけはわからん

 

21: 2021/02/02(火) 22:40:05.86
シリコンバレー方式だな
斬新だがこの方式は若者でなければ無理
設計なんて頭でやるから
ドキュメントなんて誰も書かない
だが開発速度はロケットだ

 

37: 2021/02/02(火) 22:58:03.08
>>21
たまにそういうのにかぶれた若いPGが
勢いだけで実装してバグだらけ
基本設計もコメントも書いてないから
自分でも構造わかんなくなって
直せず周囲に泣きつくのみたなw
(俺も尻拭いさせられたことある)

 

23: 2021/02/02(火) 22:43:23.40

1行1行が桁外れに長いってやつだな

 

24: 2021/02/02(火) 22:43:23.52

プログラミング教育の必修化により得られる利益からお給料もらってる公務員。
http://rio2016.5ch.net/test/read.cgi/koumu/1499525032/

公務員の再就職先を作るのに躍起になる公務員。

 

25: 2021/02/02(火) 22:44:48.68
最近の言語はオブジェクト指向だから、
数行で何万行のコードと同じプログラムできるやろ

 

27: 2021/02/02(火) 22:50:57.69
フレームワークにライブラリ知らずにいまどきのアプリ作れないぞ

 

28: 2021/02/02(火) 22:51:36.57
頭のいい人のコードは凡人の俺にはメンテがムズカシイ、、

 

36: 2021/02/02(火) 22:57:44.55
>>28
200行でむずかしいのか?
それ基本がわかってないだけだろ

 

71: 2021/02/02(火) 23:54:56.76
>>36
行と行の関係読むの難しいよ
ましてや行数が少ないってコトは1行に相当集約してるし書き癖もある子オプションとかも相当頭に入ってないと読み解けない

 

250: 2021/02/04(木) 12:50:34.44
>>28
難しくても出来るんたから有能ですね
天才のコードは仕様書が有っても無理ですわ

 

31: 2021/02/02(火) 22:54:11.50

オードリーおばさんのこの話いまごろ引用して古すぎるぞ

Perlは7だし
そもそもこの話に全く価値はない

 

32: 2021/02/02(火) 22:54:23.00

よくわからんが保守性を含めて効率の高いコードだったらいいと思うけど、
独りよがりのだったらちょっと・・・とは感じる

独りよがりでもかなりのコード数を減らせるのなら確かに天才なのだろうな

 

35: 2021/02/02(火) 22:56:20.87
>>32
自分の書くのが200行なら独りよがりになりようがない
多くは既存のライブラリ側のロジックだから公的な検証済みで間違えようもない

 

44: 2021/02/02(火) 23:10:52.90

>>35
あるんだよ・・・そういう書き方が

わからない人がいるのかもしれないが

 

56: 2021/02/02(火) 23:36:50.58
>>44
具体的に言ってみなよ
知らねえくせに知恵者ぶる馬鹿ジジイが多い板だからな

 

77: 2021/02/03(水) 00:09:32.55
>>56
たとえ3行でも謎コードにするヤツはいるぞ
見たことないのか?

 

79: 2021/02/03(水) 00:11:59.31
>>77
それは見てすぐくそとわかるからどうでもいい
そんな話を例としてあげるやつがくそ

 

83: 2021/02/03(水) 00:18:51.13
>>79
そうだね
たとえ2行しかないのに胸くそ悪いレス書くヤツもいるね

 

251: 2021/02/04(木) 12:51:47.29
>>83
天才

 

38: 2021/02/02(火) 22:59:44.17

日本ではGithubが悪者として報道されたばかりだよな

 

133: 2021/02/03(水) 08:07:01.93
>>38
飛鳥が怪しげな言動で口走るから印象最悪

 

40: 2021/02/02(火) 23:01:42.06
俺が書いたエロ画像サイトのhtml解析して見やすいようにフォーマットしてローカルのhtmlで表示する10行ツールも相当な価値がある

 

41: 2021/02/02(火) 23:02:50.01
ラムダ式で書くとコードがすごく圧縮されるよね。
昔はそんなの無かったから、死ぬほどループ書いてた気がする・・・

 

42: 2021/02/02(火) 23:06:53.11
フレームワークやライブラリが優秀ってだけじゃないかな。

 

43: 2021/02/02(火) 23:09:23.76

そもそも1人の天才がアプリつくるのと、保守まで請け負う前提でつくる企業向けの大規模開発は別物だからな。

コードも書けないSEも大規模開発ではたくさん必要だったりする。

 

45: 2021/02/02(火) 23:14:28.92

台湾のデジタル担当大臣
「例えば、Rakuというプログラミング言語を使いやすくするために、最近私はPugsの実装を行いました。」

日本のデジタル担当大臣
「USB?? 知ってますよ、穴にさすやつですよね。」

 

46: 2021/02/02(火) 23:18:07.03

IT担当大臣ってPCを触ったことのない老人とか

はんこ議連の会長がやるものだよね。
台湾が日本に追いつく日は遠い

 

59: 2021/02/02(火) 23:41:37.90
>>46
担当大臣はハッカーじゃないとダメなの?
必要とされるのは人を集める能力、根回しできる能力
ガキみたいにpcガーなんていう連中に仕事を任せてなんになるの?

 

61: 2021/02/02(火) 23:44:37.09
>>59
それで日本のIT化が問題なく実行されてるならな

 

62: 2021/02/02(火) 23:45:05.47
>>59
ストレートにジャップは無能だと言えよw

 

85: 2021/02/03(水) 00:26:48.60
>>59
ビジョンもない奴が大臣やってるのがおかしいんだよ

 

98: 2021/02/03(水) 01:08:31.49
>>59
構想をコード単位まで落としこめない雑魚には管理能力が無い
今の日本は何を命令しているのか本人が判ってない状態だ

 

127: 2021/02/03(水) 07:41:25.19
>>59
シャアやハマーンだって出撃して前線で闘ってるだろ

 

134: 2021/02/03(水) 08:13:21.13
>>59
IT担当としてのビジョンがなく
人を集める能力だって、IT推進に必要な人でなく
肩書と椅子が欲しいだけのITオンチを集めたってしょうがないんだよ
根回しなんて既得権益層に有利にしか流れないからな

 

227: 2021/02/03(水) 22:54:53.69
>>59
なんの知識もない老害に必要とされる人をどうやって判断するんだよ

 

47: 2021/02/02(火) 23:18:25.87
一方日本は竹中とかいう寄生虫を政治の中枢に呼び込んで
中抜きを増やしてただでさえ周回遅れなIT業界をさらに衰退させていた

 

50: 2021/02/02(火) 23:20:20.61

知的財産は、
国レベルでやりあっている分野だから、
おいそれと無属性の個人が入っていって
のし上がれる分野ではないんだけど、

もしやるとすれば、
しっかりとした証拠を残す方法論を確立することが
最低限必要になるだろう。

たとえば、複数のメールアカウントを取得して、
ソースコードを自分宛てに送信しておく。

そうすると、
あとで修正できないタイムスタンプが残る。

ただし、日本は先に登録したもんがちの法律だから、
特許だとかを取得する場合は、
とにかく紙で書いて、郵送するなり、電子登録するしかない。

 

引用元: ・【IT】天才プログラマー・オードリーさんがたった200行で効果的なアプリを作れる秘訣 [田杉山脈★]