はじめに
ふとした瞬間に思った「日本人のプログラマーってハードモードなんじゃね。」と思ったという話をつらつらと書いていこうと思う。
※自分の思考を書き出してみたくなったので書く。
批判もあると思うが優しい目で見てほしい。
簡単な自己紹介
どうも、shimです。
プログラミングを学習し始めて1年9か月、SESとして現場に出て約1年半webアプリケーションを開発している駆け出しエンジニアです。
雑食で楽しそうなことなら何にでも手を出してみるタイプで、得意な言語はPHPで、主にLaravelを使って開発しています。
業務範囲は、設計、実装、保守、運用まで広く携わらせていただいています。
設計から実装、保守運用に至るまで最善手を考えたり議論するのが好きです。
さて、自己紹介はこのくらいにして、今日ふと考えたことをまとめていこうと思う。
DXってなんで根付かなかったんだろう。
すごい簡単に私の理解できる範囲の言葉で話すと、
DXとは、デジタル技術を使って業務効率化を行い、競争優位性を保つことを指す。
という認識だ。
おそらく流行ったのはコロナ全盛期だから6年前~くらいだったと思う。
当時はどこでも「DX化しよう!」「DX化で業務負荷を下げよう」みたいな雑なキャッチフレーズを使った広告を目にしていた気がする。
今では「AIで○○しよう」みたいな形で残っているが、DX化という言葉はほとんど聞かなくなっている。
ではなぜ根付かなかったのか。
結局何をすることがDX化なのかを広められなかったからではないか。
と考える。
※デジタルトランスフォーメーションという言葉自体を日本人は理解しきれていないのではないかという主張だ。
日本人は英語を話せる流暢に話せる母数がそもそも少ない。
これは昔聞いた話だが、母国語が発展していることや、島国で陸続きの外国が隣接しないためという説もあるようだ。
確かに日本国内で住む分には英語を使う機会などほぼない。
まったく理解していなくとも何とかなる。
参考までに、デジタルトランスフォーメーションとは、以下の2つからなる造語だ。
デジタル(digital)
連続的に変化する量(アナログ)を段階的に区切り、数値や「0」と「1」の離散的な値で表現する方式
トランスフォーメーション(Transformation)
単なる変化ではなく、「変革」「変容」「形質転換」を意味する言葉
つまりをデジタルデータを使って、変革・形質転換をするという話であった。
こう考えると、とっても簡単である。
・紙媒体の押印を電子署名に変えよう。
・議事録を手打ちから録音データの自動文字起こしに変えよう。
上記のような簡単なDX例が一般的に普及したから聞かなくなったのか。
とはいえ、古い体制が残っている企業もまだまだ存在する。
ITに携わるものとしては、手作業は間違いなく無駄な工数だと思うが、なぜ残すのだろうか。などと考える日であった。
まぁそんなことはよい。
デジタルトランスフォーメーションという言葉自体を日本人は理解しきれていないのではないかという主張だ。
「あれ、これプログラマーとしても言えない?」
日本人のプログラマーって不利なのでは?
プログラムって英語で書かれてるの謎だよね。
日本人だけで開発するなら変数名や関数名は日本語でいいじゃんって思わない?
普通は考えないのかもしれない。
なぜなら、
学習した教材が英語で書かれているから。
世界的に見て参考文献が英語で書かれているから。
言語やライブラリなどは英語で作成されているから。
少なくとも私は、関数名は「動詞+名詞」で書くとわかりやすいという説明を初学者のころに受けた記憶がある。
いや、そもそも日本語ではだめなのか。動くが...???
世界的デフォルトに無理やり合わせに行くから、大変になるのではないか。
とはいえ日本語のデメリットはとてつもなくでかい。
単純に文字のバイト数が不利
英数だけなら1バイトで表せるものが日本語になるとマルチバイト(ユニックスで2バイト)、1文字単位でも倍の容量を喰うわけだ。
同じ振る舞いをするなら極力ファイルサイズは小さい方がいい。
マシン的にもその方がうれしいだろう。
実装上でも不利
例えば考えたのはバリデーションだ。
分からない人のために簡単に説明すると、入力値を検証する機構のことを指す。
この入力フィールドはひらがなのみを受け付けるようにするよーという検証を行い、
異なる文字が入るとはじくことができる。
バリデーションにおいても、英語圏であれば期待値は英数をサポートすれば良いが、
日本語の場合は、英数だけでなく、かな、カナ、仮名が入ってくる。
無理やり世界標準に合わせるが故の不利
英語で変数名や関数名を表すが故にぱっと見わからない。
$permNum = $i
この変数を見てpermとは何かを考えるところから始める必要がある。
permutation:順列
permission:権限
おそらく2択...これはどちらのことを指しているのか。
ぱっと見で分からない変数をつけるのが悪いと考える方もいるだろうが、
英語の使えない日本人が書く変数なんて大体こんなもんだと思う。
自分が書く時も、関数名どうしたらわかりやすいかとよく考えるが、この無駄な認知コストと考慮時間はネイティブの方にはない時間なのだろう。
んんん???
もしかして、日本人であるがゆえにプログラミングって難しくなってる???
ここまで考えた末にたどり着いた結末
日本人に生まれてエンジニアをしている我々は天才である。
さらに、そんななかでも大いなる残業のある現場にいるZaaSの方々(私はそうでもないが...)
あなたたちが激縛りプレイをしてくれているおかげで日本が世界についていけているといっても過言ではない!
本当にありがとう!日本中から感謝されてほしい!
おわり
誰か日本人がゆえにSEとして、プログラマーとして得していることがあれば教えてほしい。
このままだと、我々はただハードモードに挑むドMの集団になってしまうと。そんな風に考えた1日だった。