最近、書いてる記事のひとつひとつが重い。おっもい。文章量がえぐい。もっと軽いブログ書きたい。格ゲーのやつ?書き終えたよ。頑張った。ほめて。

技術者が書いたであろう記事ふたつに対して文句言う。2本目はJavaScriptのはなしだから読者限られるだろうけど。

初めから限られてるか。

じゃあいってみよう。

◆プログラマーを引退して、医学部にきた俺が真面目に考えてやろう。

(年収270万で)プログラマーを引退して、医学部にきた俺が真面目に考えてやろう。魚拓

「年収270万で」って書いてあったからネタ記事かなと思ったんだが、読んでいくとどうやらガチっぽい。いやネタなのか?わからん。手取り?いや手取りにしても…

この記事の元エントリは下のやつ。

エンジニア適正が無い奴の生きる道ってなんですか?魚拓

▼①

真面目に読んでいて、ちょっと気になる箇所がある。たとえば PostgreSQL を postgre とか書くヤツは現場では嫌われるぞ。

んまあーーーーーわからんではない。

やってきた技術を列挙するときに「postgre」って書くのは「いけてねぇな…」と思われるだろう。職業病っちゃ職業病なんだが、名前の正確性に変に拘るようになっちゃうよね。

あとは、視認しづらいのが嫌。「PostgreSQL」なら英字を追わなくても脊髄で「ぽすぐれ…」って思える。「postgre」は読みづらい。かっこよく言うと、リーダビリティがない。

それにしても嫌われるとは思わんけど。「憎く思う」じゃなくて「避ける」の意味かな。

▼③

ソフトウェアの開発者っていうのは「泥臭い領域」なんだよ。エリートとは程遠い場所にあるというね。

せやな。なんで「SEやってます(説明が面倒)」っていうと「すごい」って言われるんだろうか。

いやいや、俺は個人的にすごいんだけど、俺以外の世の中のSEのやってることってもう、7割はままごとだぜ?

…いや、ままごとで大金稼いでるって思えばそれはすげぇな。エリートだよもう。

▼⑤

この元記事書いた人もアンサー記事書いてる人も、クラウドインフラをガチったことあんだろか。ねぇんだろな。

逆に、データベースを触れることができるプログラマーはリスクと責任が大きいから、給料が高いのだよ。

ふはは…(力無く笑う)

そうだったらいいのにね…クソカスが涎たらしながらDBやらインターフェースの設計してんのよね…責任とる前に別案件いっちゃってんのよね…

ってか、アンサーがズレているような気がしないでもない。

▼⑥

君はソフトウェア・エンジニアになりたいのだろ?世の中は分業で成り立っているのだから、全部やろうとするやつはアホだよ。

何言ってんの?FPGAはソフトウェア領域だろ。(過激派)

という冗談はさておき、ハードのこと知ってないと「つよつよ」にはなりようないと思うぞ。

FPGAについては、クラウドでもっと軽く提供され始めたら作りたいもの沢山あるね。AIが生きてくるのがFPGAの領域なような気がしてるんだけど。誰もその話してないのは何なんだろ。

▼⑨

逆にいうと、あなたがインターンとして週3で20万円貰えていたのは、参入障壁が少ないからでしょ?強強エンジニアが生き残っているのは、それだけすごいということだよ。

そりゃー無理筋じゃないかね。インターンでおちんぎんを程々に貰えるのは大したもんですよ。

あと「その年まで気絶してたの?」的なよわよわエンジニアもたくさん生き残って嫁さんと子供養ってんぜー!共働きかもしれんけどー!

▼⑩

いやぁ、違うと思うよ。その問題が「難しい」なら切り分けて、上に「ココが自分の能力では解決できないです」と持っていくだけなんだからさ。CS じゃないのだったら、仕事をするまで「扱わないまま」なんだよ?しかも、土日に勉強する気もないとなったらいつするのさ?

それはそうね。やんないとやれるわけない。「できるだけやらずにやる」みたいな考えをお前ら持ってるけど、逆に苦しいことになるんじゃないのそれって思う。

▼⑪

「僕のようなクズと言われても仕方のない人材はどうしたら上手く(ストレスレスで高収入の意)生きていけるのでしょうか?」

例えばよ、赤子を遊園地に連れて行って放置しても、ゴーカートで遊び始めるわけじゃないじゃん。

仕事も同じことで、「あぁこれこうやって遊ぶ遊具なのね」が増えれば楽しくもなってくんだろ自ずと。たぶん。本当に楽しくない現場もあろうが、楽しさを見つける前に逃げようとしてる人のほうが多いよね。イヤイヤ期かな?

ガチってから物事を評価しろっていう。

▼⑭

この時点で、君はコピペしかやってきてないことが理解できる。おそらく QUIC か MQTT あたりだろ?逆にいえば、それが実装できたら他社と差のつけられるプロダクトだったはずだ。つまり会社の利益の源泉であった部分をみすみす実装できないようでは、そこらへんの専門卒以下だぞ。

そうね。コピペエンジニアだと思う。

東証一部上場企業にインターン行けたってことはそれなりの大学なんだろうし、なんかな。品質低くない?望みすぎかね。

技術できないことはしょうがないんだけど、セルフマネージメントっていうか

望みすぎか。

▼⑭

ムカつくというか、虫酸が走る書き方だ。

これはわかる。絶対どれも業務レベルじゃねぇわ。業務レベルって言葉の意味を甘く見てる。1からをコイツに任せることは無理だ。DBの設計わからんとか言ってるやつだぞ。ソフトウェアの設計できる道理はない。データの設計こそソフトウェアの設計なんだから。

悲しいことにそのレベルのエンジニアが市場にゴロゴロ転がってるんですけどね。

んで、アンサーの指摘事項として羅列されてることはわりと外してると思う。よく読んだら全部外しててすごい。こいつもまぁ無能なんだろう。270万だし。

▼⑯

「プログラミングは17歳くらいから始めました」

プログラミングに年齢はないから。自分は9歳ではじめたけどね。

ぼく22歳かりゃ!

いや、高校で個人的にやって大学でもやったんだけどもよ。アレはプログラミングではなかったんじゃあるまいかと思ってるんですよね。

▼P.S. ④

「GraphQLをわざわざ書くのは理解できるけどな。」
そうだとすると、REST や SOAP も書かないとまずくない?

「GraphQLの経験は書いとくべきだろな(俺は絶対に使わせないけど)」と思ってたんだけど、上のを読んで何となく思うことがあった。

お前ら、RESTとかSOAPの経験も書くべきじゃね?マジで知らん人いるからね。「Webの経験ありましゅ。Reactやってましゅ。」っつってAjax理解してない人おるからね。こないださ、CORSについて理解している人がアサインされてきて俺ちょっと感動したんだからね!!!.NETも知っててさ、Startup.csから辿ってappsettings.jsonにCORS設定詰めてんの見て「こいつヤッベ💖」って思ったし評価爆上げしたんだからね!!!!俺のハードル下がりきってもう地面に埋まっちゃってるからね!!!!泣きながら熊手で地面掘ってんだよ夜な夜な!!!!「俺のハードル…俺のハードル…😭」っつってよぉ!!!責任とれ!!!

▼追記の追記①

地雷臭がすげぇわ。

まずやっぱ、インフラやってねぇんだな思った。Dockerの話も浅い(というかよくわからんところに言及している)し、ネットワークやらサーバーやらも極めて曖昧な、名前だけ出してるような風に読める。

時に名前だけ出すのも構わんのだけど、文体と乖離してるよね。

書いてることが「それ言われても」というのばっかなんですよね。絞らずに書いてる時点で刺さるわけないし。例えばこいつ面接に来てさ、ほんとに何気なくちょっと深堀りしたらもうわたわたしそう。いつものパターン。

俺がよく知らない領域について興味で何でもない質問したらすげぇ焦るやつ。

Ruby on Rails が好き。Ruby の資格(Silver/Gold)アリ。

Ruby on Railsを「好き」と言ってるのは、ほかに触ってるって公言してるものと比べると違和感ある。Ruby on Railsしか触ったことないってんなら理解できるが。

TypeScript で Next と React を書く。もちろん JavaScript は ES2020 あたりまでは説明可能。

「NextとReactを」の時点でおかしいけど、「を書く」ってなんだよ?

「もちろん~」ってのも出来ない匂いしかしない。ES2020までで割と難解な機能もあるし、「説明可能」とか嘯ける神経俺にはないわ。proposalまで読んで追ったってんならもう逆に「なんでこの案件にいるの?」って言うけど。

AWS, GCP, Azure といったパブリック・クラウドは趣味で触れており、CDN, DNS, WAF, S3 については勝手を知っていて、Terraform と Kubernetes でサービスを運営中。

Docker については、docker compose はマスターしたよ。Kubernetes も kubectl あたりまでは使いこなせる。好きなコンテナのOS は Alpine Linux。

だからよ。羅列してるだけなんだよね。「CDN, DNS, WAF, S3」って並べて書いてるのみて鼻から「ふっ」て乾いた笑い出ちゃったし。「運営中」ってのも、本当にやってたら「運用中」と間違えるわけない。ひとりでなう運用しているサービスにTerraformとKubernetes使い続けようとか思うわけねぇし。正常な判断力持ってたら即捨てる。エアプ乙。各クラウドベンダのマネージドKubernetesに触れてないし。

観点がない。言ったもん勝ちのことしか書けてない。「このワード出せたら通だよね」ってワード、ひとっつもない。いや通じゃなくても、触ってたら当然出るワードが出てないまま他の話してる。

「マスターしたよ」とか「好きなコンテナのOS は Alpine Linux」ってのが最高に言い訳くさい。浅いってことがバレませんように…みたいな空気を感じる。どこがどう好きなのか、他と比べてどうなのかに言及しなきゃダメっしょ。他人に口出ししたうえで己の技術スタックを書くんであればな。「好きなコンテナのOS」って言い方も違和感あるし。OS上で何を動かしてんだか書いてねぇし。

・Android と iOS の知識は、7年前だけどアップデート中。
・Python や PHP や Java は必要があれば書ける。
・C は避けたいが、書けないことはない。
・今年中に Rust をかけるようになりたいと思っている。

語れる奴だけ言及すりゃ事足りるんじゃねぇかな。

つまりお兄ちゃんはさ、どの技術についても自信がないから沢山書けばいいと思ってるんでしょ?

どの世界にも通じることやが…中身のないヤツが数を誇る!

やっぱクソっスね弱き者は。

しゃあっ(殴殺)

RDB は PostgreSQL が好きで、MySQL も経験ある。

やっぱり「~が好きで」って感覚がわからん。「~でしか~ができないんで」あるいは逆に「~が嫌いで」「~に親を殺されたんで」って言ってるのなら説得力あるけど。

うん。技術Aに対するヘイトが深く切ないほど技術力があるんじゃねぇのか。という気付きを得た。浅い奴は理解しないまま薄っぺらいヘイトを撒いてるわけだけど。

NoSQL (Kafka, Elasticsearch, Redis)は使った経験ある。

ううぅんコレは凄い。一番ひどい。「違うだろ」としか言えない書き方。ここまでアレだと絶許狙いかとすら思える。例えば俺が釣りで書いたとして、ここまで違和感ある書き方はできないと思えるナチュラルな分かってなさ。

分かってないものを羅列しようとしてる時点で技術力ない。

俺はAzure Search経由でElasticsearch、Event Hubs経由でKafka、RedisはマネージドのRedisで使ってるよ。Azureに呪われてるんだ俺!

…詳しく書かんとブーメランぶっ刺さるので書いておく。興味ねぇだろうけど。

  • Elasticsearch(Azure Search)
    まずフロントに公開されてるAPIがありまして、そっからCosmos(それこそKVSのサービス)に乗った5万件くらいのJSONに対してIndex張って検索かけとる。無いとCosmosのRUがマッハで客の財布が破裂して死ぬ(一敗)。
    Elasticsearch on Azureのはなしを小耳に挟んだんだけど、よくわかってない。コスト的に有利だったりするのかね?
  • Kafka(Event Hubs)
    これまたフロントにめちゃくそ叩かれるAPIがありまして、そのリクエストをポイポイとぶん投げまくってAzure Functionsに購読させてSQL Serverにチョロチョロ流してる。リクエスト量的にサーバーで都度処理できんアレなので助かってるし、体感だけどEvent HubsはAzureのなかで一番信頼がおけるリソースだと思ってる。何度命を救われたことか。
    あと、Application Insightsに無理やりペイロードのログ出してたらコストがヤベぇことになった + 検索遅すぎるんで、Event HubsからStorageのBlobにぶっさしてData Explorerから読むってのもやってる。はやいやすいうまい。
  • Redis
    安いしクソ速い。ASP.NETのメモリキャッシュと分担しながら蒸発しても大丈夫な情報を持たせてる。SQL Serverへのアクセス数減らすためってのが一番大きい役割か。
    あとは別個にセッション情報が2種類あるんでそれぞれ。あいつKVSなんだけどデータ型いろいろ持てるので、それ踏まえた改修を推進している。List型にpushやらremoveあるんだぜ?
    Redisに殺された経験としては、でかいデータ無理です。パフォーマンスが露骨に落ちる。使い始めのころに200kBくらいのデータ置いて痛い目を見た。あとは、東西冗長化したAppServiceから東西逆のRedisインスタンスを叩くとレイテンシがちょっと気になってくる。微々たるもんだが、直そうかという話もしている。ベストプラクティスをパンツに穴があくまで読みこんでください。

Redis以外は俺が導入したものじゃないけど、今はもう肉体的に関係もってる自負がある。各技術に対してチンポを入れました。

エディタは emacs。マシーンは Arch Linux + mac 。バージョン管理にGit で、GitHub を使っている。ブラウザは FireFox。シェルは Fish で、ターミナルシュミレーターは Alacritty。ときどき VS Code を使う。

弘法筆を選ばず(至言)

Gitはアレだが、筆の話されてもな。絶妙に熱くないところ選んでるのも悲しみ。

HTML/CSS/SVG はプロ

いや…(呆れ)

ふてぇ野郎だ。逆立ちしたってプロなんて名乗れんよお前には。どんだけ根の深い話だと思ってんの。ちゃんとやってれば「これはカーネル読んで理解するようなもんですね(遠い目)」って話になってくるんだよ。俺があの日「むりこれぇ🤮」って言いながら射精した涙の味をお前にも教えてあげたいぜ。

そもpost CSSに触れてない時点で終わってるし、SVGのプロってのも…あれ数学のベース無いとプロは名乗れんっすよ。

▼総評

まぁ270万のエンジニアでしょうね。

泉ピン子がそうであったように。

泉ピン子がそうであったように。」って書いた後でひろやーについてググったら、YouTubeチャンネル開設しててワロタよ。新町に全然知らない語りが入ってて草生えたし「セックスベリーマッチ…はぁい…春馬に、捧げました…」が予想外に不謹慎すぎて爆笑した。泉ピン子がそうであったように。

※小学生みてぇなド下ネタが展開されるので注意。音量も何かおかしい。

「コカ・コーラにまつわる歌ね…あっだかなぁ…(すっとぼけ)」とか、狙ったページが出な過ぎて「イクゾーゥ!!!」って叫びつづけて誤魔化そうとしてんのとか、結った髪がポロって前に落ちたときに「ギター…鳴んなくなっちゃった…😥」みてぇに言ってるのとか、いきものがかりやらX JAPANやらあらゆる方面に喧嘩売ってるのがもう面白すぎる。

◆2021年に知っておきたいJavaScript最適化技術34選

にほんめ。

2021年に知っておきたいJavaScript最適化技術34選魚拓

コイツ…!こんなもん翻訳してんじゃねぇよ…!元記事参照しに行ったらアカウント停止されてるユーザーだし…!

はじめにTypeScriptで書きましょうっていうのを言っておくべきなんじゃあるまいかとも思う。JavaScriptで書くのがそもそも最適じゃないから。TypeScriptにするのがまず最初の最適化だろう。

すべては可読性のためである。保守のためである。書きやすさのためではない。

こんなミスリード記事いくらでもあるし捨ておいても良いんだけど、1444人がLGMTしているという事実に戦慄した。このチンカス記事をLooks Goodと思っているエンジニアがこんなにもいるんだろ?終わりだよこの国。

▼1. 複数の条件を持つif

実行結果が同じであればいいなんて、俺は認めない。意味意図を変えることを俺は許さない。なぜなら可読性が落ちるから。

includeでやるのは二千歩くらい譲って許せなくもない日が4年に1度あるかもしれないが、switch-caseで書きやがれ。

▼2. if true … elseの省略形

やめろ。美的感覚ゼロかよ。三項演算子を二回かぶせる奴は殺す。どう読めばいいのこれ。ふざけんなよ。

改行やらインデントやらしたとしても、読めんわ。普通にif-else書くか処理全体を見直せ。真面目に設計してれば、三項演算子を重ねなければいけない場面なんて出会いようがないんだよ。

▼3. 変数宣言

そう書いて何になるの?誰が助かるの?変数名が変わったり追加されたときにgitのcommitはどうなる?

▼4. null/未定義/空の判定

Truthy/Falsyわかってねぇんだよコイツぅ。「||」の意味を知らんで使ってる。

つまり

let test2 = 0 || 'manko';

がどうなるかって知らねぇんだよコイツ。

下に書いてあるけど、null/undefined処理はNull合体演算子が適してます。「??が使えます」って書いてあるけど、違う機能だからね…。あとIE11だと無理だし。その辺の説明もしてあげるべきでは?

▼7. 複数の変数への値の割り当て

いや、もうちょいマシなユースケースあるだろ。この説明で便利さが伝わるとは思えん。

▼10. 複数条件のAND (&&) 演算子

ボクぜってぇそのプルリク通しませんから!(激怒)

if (test1) callMethod();

これでいいだろが!誰も傷つかずに済むだろうが!

▼11. foreachループ

LINQにも同じこと言えるけど、Array.prototype.forEach使う意味ねぇって。何も宣言的じゃないんだもん。理解しづらくさせてるだけっす。読みづらくしてるだけっす。

おとなしくfor-of使え。

▼12. 比較のreturn

さっきもあったけど、かさましをやめろ。

▼14. 短い関数の呼び出し

いろいろごちゃっとして意味わかんないじゃんもう。

高階関数の話したいんでしょ?なんで三項演算子を混ぜたの?

この章ですごい思うのは、「コイツ自分でも何を書いてんだか理解してねぇんだな」ってこと。つまり、LGMTしてる奴らもよく理解せずに「いいね!(池沼)」してんだろが。検証することなくLGMTして満足してんだろ。地獄かよ。

▼15. switchの省略形

これも、高階関数の話と混ぜてるからわけわかんなくなってんじゃん。

あとMap使えやカスゥ!

とはいえMap使ったとしてもこんな記法は俺プルリク通さねぇからな。真面目に仕事しやがれ。

▼16. 暗黙の戻り

何がいいてぇの?パーレンすらいらんし。

あと二例目、セミコロン付けたら動かないだろ。

せめてパーレンの中にオブジェクト書いてるなら「まぁね」「知らない人いるよね」とも思えるけど。

▼18. パラメータのデフォルト値

だから、何を説明したいのかって焦点を絞れよ。わかんねぇわ。

あと、さっきから思ってたけど一次ソースを提示しろよ。MDNのリンク張れや。

デフォルト引数 | MDN

▼19. スプレッド演算子

shallow copyだよってのは説明してあげたほうがいいような。ピヨピヨしたエンジニアが詰みかねん。

▼23. 文字列の数値への変換

これ知らんかった。どういう理屈で数値になるんだ?

単項プラス演算子 (+) は、オペランドの前に置かれ、そのオペランドを評価し、それが数値以外の場合は数値に変換します。

単項プラス (+) | MDN

マジかよ…どんな判断だ…

「+null」が「0」って評価されるらしいっすよ…キッショ!

parseIntで書いたほうが平和でしょうね。nullはNaNになってくれるし。

▼24. 分割代入の省略形

だから、thisってなんだよ。動かねぇし、読む側が混乱するだろ。目が滑りまくって取れたわ。

プロダクトから意味も分からず引っこ抜いてきたコードを紹介してんだろな。

▼25. Array.find

これ動かなくね?

と思って動かしてみたら動いたわ。「data」って、名前食い合わないのかしら。スコープどうなってんだろ。いずれにせよfind内無名関数の引数は名前を変えたほういいよね。

▼26. 検索条件の省略形

だからさ、プルリク通らねぇって。プルリク通らないならまだ可愛いもんで、「景色でも見に行こう」とか屋上誘われてさ、蹴り落されっからね。気をつけな?

▼27. ビット単位演算子によるIndexOfの省略形

一休さんか何かなの?とんち効きすぎ。なんでクソコードにするためにとんちを効かすの?ふぁっきゅーさんなの?

▼30. ダブルビット単位の省略形

だからクソトンチやめろ!トンチっつーかもはやウンチだよそれは!(激うまギャグ)

▼31. 文字列の繰り返し

これはいくらなんでも動かねぇって。自分で実行してから公開しろよ。

▼32. 文字列から文字を取得

前に話題にしたやつだけど、まぁ迂闊だわな。

下のはどうなりますかね。

"𩸽たべたい🤤".charAt(0)
"𩸽たべたい🤤"[0]

そのへん気にしないにしても、substring使えよ。

▼総評

今すぐ公開停止しなさい。Qiitaはこんなもんメールのランキングに載せるな。

◆結論

帰れ!山さけぇれ!