「ディレクトリ」を含む日記 RSS

はてなキーワード: ディレクトリとは

2025-11-09

お前は絶望的にプログラミングに向いてないから諦めて刺身タンポポ乗せる仕事でもやってろ

刺身タンポポ乗せる仕事ってきょうび言わねーな……。

プログラミングとは、勉強運動スマブラも下手なクソ隠キャ中学生が「俺もパソコン1台で凄い技術者になって…!」とワクワクしながら始めるものの思ったより普通に難しいし学校試験で出たような知識要求されるしで3日で放り投げ、10数年後にnoteで「お前らは絶望的にプログラミングに向いてないからやめろ」なんて記事を書くだけのザコに成り下がる、夢と希望に溢れた技術である

近年ではパソコンスペックの上昇にともないできることも増え、どこのご家庭にもあるRTX2080で簡単ディープラーニングもできるようになった。Unity3Dゲームバリバリ動かしてもブルースクリーンは出ない。やっぱ世界を広げるのは小賢しい知恵よりもスペック暴力だぜ。

開発環境言語選択肢豊富で、エディタもかつては有料クラスでも手に入らなかったような贅沢な機能が満載のものが出回っている。Eclipseとか今考えるとよくあんなので開発できてたな。

いまや小学生からおばあちゃんまでアプリ作りに熱中し、高校生IoTとかやり始め、大学生商業レベルか?ってレベルのものネットで発表し、私はウェブアプリスマホでのレイアウト崩れひとつすら直せず静かにエディタを閉じてnote過激タイトル記事を書いている。

掛け算に順序があると思っているような知能の下級雑用係(自分のことを教育専門職だと思い込んでいる)ですら「小学生プログラミングを教えるぞ!」と意気込んでいる。やめろ。お前らには無理だ。無理だからマジでやめろ。考え直せ。無理だって。掛け算に順序つけないと相手に教えられないレベルのやつがプログラミング教えるのマジで無理だって算数とは次元が違うって。「ピーチ姫いつも簡単誘拐できるし今度はベヨネッタ誘拐してみるか」ぐらいの無謀さだって。やめとけ。マジでやめろ。

まあそんなこんなで入り口はめちゃくちゃ広く、入門するのはマリオカートより簡単である。話逸れるけどSwitchマリオカート運転アシスト機能ついて初心者でもコース完走できるようになったから心折れちゃった人ももう一度チャレンジしてみてね。

世は大プログラミング時代!!

大学プログラミング

それとは特に関係ないんだけど、大学行ってた時ティーチングアシスタントTA)っていう授業のお手伝いさせられたのよね。ちゃんお金出るやつ。

学部の3年か4年から始まって、院の1年か2年までやってて、途中で休学挟んだから、ええと、あー、うん、数年間TAやってたんよ。数学プログラミングコマ。CとOctaveかいうやつ。Cのほうは情報学科で、Octaveは違う学科JavaとかC++コマTA入れさせてもらえなかった。

プログラミングの実習は週2コマ連続)あって、情報学科なら必修科目。なのでサポートは相当手厚く、先生TAが絶え間なく机間巡視し、わからないことがあればセンパイがなんでも答えてくれるというわけだ。授業外でもサポートはしており、わからなければ先生研究室にいる学生に好きなだけ聞きにいっても良いということになっていた。必修だから落とされたら困るしな。

2コマから3時間 * 15回で、45時間。そして私の時は2年まででC/C++/Javaと必修だった(今はなんの言語かは知らない)ので、その3倍、135時間は最低やることになる。プログラミング実習以外にもプログラミング触る授業多いから実際はもっと多い。宿題やる時間もあるので実際はもっともっと長くプログラミングに触れることになる。卒論書く時期に入ると、テーマによっては書く人はさらに書くので、もっともっともっともっと長い。

これだけ時間をかければほとんどの人がプログラミングできるように……ならない。むしろできない人の方が多い。なんで。why。教えて。

会社プログラミング

会社になるとさすがにプログラミングできるできないは死活問題である

今日から入ったxxでーす。業界経験ですがよろしくおねがしまーす。さっそくなんですけどPythonのここわかんないんですけどどうすれば……あっそうすればいいんですね。次はここなんですけど……なるほど!ありがとうございます。じゃあまた明日ー」

いやー社会人にもなると熱意が違うね。学生なんかわかんなくてもほとんど聞きに来ないのにな。こりゃガンガン伸びますわ。私も社会人1年生でPythonなんて3秒ぐらいしか触ったことないか適当答えてるけど。

ちょっと時間よろしいですか?」「いやちょっと今忙しいから後になっちゃますわ。すんません……」

そんなこんなで1週間ぐらい放置してしまった。やべー絶対嫌われる。どこまで進んだかな……?えっまだそこ?進んでなくない?

もしかしてこれ全部教えないとダメなやつか。そりゃ大学4年間プログラミングやったやつでもプログラミングできないんだから、そうか。よく考えると当たり前だよな。

プログラミングをやめろ

大学4年間と大学院2年間プログラミングやったやつでもできないし、会社毎日8時間を数週間プログラミングについやしてもできないやつはできないし、そもそも人類というのはプログラミングできない可能性がある。

少年少女たちに「プログラミングはいいぞ!自由ものが作れて達成感がある!頭が良くなった気分にもなれるし!」と吹聴してまわんのもいいけど、6年間情報科学について勉強したようなやつの大半がプログラミングできないんですよ。それもごくごく初歩的な部分。

野球とかサッカーなら、まあ友達との試合には参加できなくてもごく稀にバットボールを当てたり、ボールを1回あらぬ方向に蹴ったり、ぶっちゃけ周りとのレベル差で楽しくなくてすぐやめちゃうだろうけど、なんとか基礎の一部ぐらいはできるじゃないですか。

ピアノとかダンスでも、猫踏んじゃったをごくごくゆっくり弾くぐらいはできるかもしんないし、学芸会振り付け10秒ぐらいは踊れたりできるかもしれない。その後やっぱ周りのレベル見て諦めちゃうかもしんないけどさ。

プログラミング、6年やってミットを頭にかぶってるバッターとか、鍵盤蓋の上から殴って音鳴らそうとするやつとか、まずそういうレベルのやつが大量発生するんですよ。だいたい7割ぐらいの率。どうすんだよこいつら。私の教育問題か?マジで?本当に?

プロが練って考えて凝縮した本や授業、センパイたちによる指導。それらを結集して得られるはずのものが7割ぐらいどっかに消し飛んでる。無駄だろこれ。

からプログラミングやろうとしてるやつ、お前は確実に向いてないからさっさと諦めて刺身タンポポ乗せる仕事に戻ってくれ。参加しても鍵盤蓋叩き割るやつと同じ病室に入るだけだ。

プログラミングをやめろ。

ぼくはこう思うんですよ

そもそもなんで大の大人がそんな両手にバット持ってセカンドに立ったりゴールの方をボールのところまで動かす奇行に走るんだろうな。わかんねえや。

綺麗な分析はできないけど、いわゆる「できない」やつが共通して言ってたフレーズがある。

「ぼくはxxxだと思ってるんですけど、動かないんですよ」

うん、そうだね。そう思うんだ。でも動いてないじゃん。じゃあ違うんじゃない?モニターに「にらみつける」やってもバグは取れないし防御力下がるだけだぞ。

まず根本的に考えと事実が違ってるって結果出てるじゃん。じゃあもう考え変えちゃえば早くない?

名言引用は好きではないけど、「プログラムは思った通りには動かない。書いた通りに動く」って言葉がある。実に名言だと思う。次点で好きなのが「ある問題解決しようと正規表現を使うと問題が2つに増える」かな。

お前が何を思っているかプログラミングにおいて一切影響しないんだよ。お前が何を書いて、コンピュータがどう処理したか、それが全て。

深く考えないことについてぎゃーぎゃーいうやつもいるけどプログラムなんてまず最初は動けばいいんだから何も考えずに次試せばいいだろ。んで3回ぐらいは自分で思い浮かんだの試して、全部ダメだったら調べるとか先生に聞いてみるとかさ。逆に1発で通ったら自分思考見直し理解深めるとかさ。

ドキュメントとかあんまり理解できない初心者のうちは、とにかくお試しと修正のサイクル回すの重要で、「これがこうだから動くはず」というカードを3種類ぐらい作って全部片っ端から試すのが早いと思うよ。モニターにらみつけるな。

お前がどう思ってるかよりも、まずはお前の書いたプログラムがどう動いているか(どう動いていないか)を確認するのが先だ。動かなかったら考えが違う、はい次のプランはいその次のプランはい次。

この「ぼくはこう思ってる」が出てくるの、なんの教育の成果なんだろうね。お前の気持ちなんてどうでもいいって現国でも数学で散々教えられただろ。

Error: variable 'a' is undefined, line 24

↑のエラー架空エラー文(英語下手でも許して)だけど、エラー、出るよね。プログラム組んでたら。んでやっぱいるのよ。エラーを「にらみつける」やつ。解決しねえって言ってんだろ。

エラー出たんですけど、どうすればいいんですか」

読めばいいんじゃないですかね……?一応軽く説明しとくか?

エラーにはプログラムがなぜコンパイル通らないかの原因がそのまま書かれている。例えば今出ているError: variable 'a' is undefined, line 24は、24行目の変数aが未定義ということを示している。事前に変数aを定義していないか、打ち間違えてsになっているとかではないのかな?」

だいたいが「腑に落ちねぇー」みたいな顔する。まあ、一気に喋りすぎたしな。疑問点1個1個潰していくか。

「何か疑問点ありそう?変数ってなにー、とか、定義ってなにー、とか」「ないです。わかりました!」

わかったのか。よかった。またモニターにらみつける開始。なんでだよ!!!!「お前顔にチョコついてるぞ」って言われたらチョコ拭き取るだろ。変数aが未定義ですねって言われたら変数a定義すりゃいいだろ。

でもプログラミングド下手なやつ(全人類の7割ぐらい)は、エラーにらみつけてる。ずっとにらみつけてる。防御力下限まで下がったかな。にらみつけてて何が変わるんだよ。

英語読めなくて……」

いや「a is undefined」なんて「He is Superman」ぐらいの英語だろなんで読めないんだよ。お前この大学どうやって入ったんだよ。たしかどの入試方式でも英語あっただろ。単語わからんかったらググれ。

「aが未定義って書いてあるんですけど、ここのfor文の私の考えが間違ってるのでしょうか」

いや24行目のaって書いてるだろ。まずなんでそこ無視するんだよ。お前がfor文で使ってんの教科書通りのiだろ。24行目ってわかるか?for文あるの40行目あたりだよな?aとiが違う文字ってわかるか?

「さっきのエラー直したら新しいエラーが出たんですけど、どうすればいいですか」

新しいエラー直せばいいと思います

千尋!贅沢な名だねえ

変数名前をつけろ。関数名前をつけろ。クラス名前をつけろ。全てに名前をつけろ。

C言語の古い教科書だと「a」とか「b」とか「i」とかで書いてるけど、そんなの人間が読めるわけねえだろ。冷静に考えろ。「input」「output」「index」とかにしとけ。

2重for文の変数名i, jにしたら絶対途中で打ち間違えるだろ。お前は打ち間違える。そういうやつだ。2重ループなんてどうせ行列計算課題だろ。rowとcolumnにしとけ。これで打ち間違っても気づくし、それぞれに意味が付いてくる。

ちなみに同じ長い名前にも優劣がある。「result」よりも「sum」のほうが強い。「result」はなんの結果かわからない(全ては結果であるので)が「sum」は合計値であることがわかるからだ。「password」と「plainPassword」なら「plainPassword」が勝つ。暗号化されていないパスワードであることがわかるので、情報量が多いからだ。

ただし例外はいくつかある。「tmp」は一時変数であることが(プログラマにとって)明らかだ。「dir」はディレクトリであることがわかる。「src」「dist」あたりもよく使われる。このあたりは短くていいんじゃねーかな。

でも、この前温度センサ扱うプロジェクトで「tmp」って変数名使って温度(temperature)と脳内で混線してバグって発狂してた同僚いたけど。そういうとき名前長くするか別の名前使おうな。

関数名前なんて「calcAverageFromArray」ぐらい長くしていいから。「myFunc」とかしなくていいから。「fetchJsonDataFromUniversityInternalServer」とかでいいから。マジで。いやこれ本当に。

そもそも今時ディスプレイかいし、識別子なんて先頭数文字打ったらエディタが補完してくれるし、短くするメリットがない。

それでも名前が長いと感じる?関数がでかすぎるんじゃないか。細かく処理を分けるとかしてみろ。「combineArrayAndFindMax」関数は「combineArray」と「findMax」に分割したらいいと思うぞ。名前が長いと思っても名前を削るな、機能を分割しろ自然名前が短くなる。

それかシンプルでかっこいい名前を見つける。「convertEvilHtmlToPeacefulText」は「sanitize」に置き換えることができる。イカ名前だ。

プログラミングできない奴はマジでこれらのことをやらない。ずっとaとかbとかzとか使ってる。お前それ自分で読めんのか。読めねえだろ。myfuncってなんだよ何するんだよ。お前自分理解できてんのかそれ。

それでも頑なにaとかbとか使う。なんでだよ。

動作原理理解しろ

動作原理からず書き散らすな。動作原理っつってもそんな深いところじゃなくて言語表面上レベル動作な。

リテラルは値を作成して、代入は値に名前をつけている、とかその程度のレイヤーメモリがどうこうとかはいらんと思う。あっでもポインタときはいるか……。めんどくせえな。

まあ動作原理っていうか自分が何やってんのか理解してくれって程度の話になるんだが。

例えばfor文で処理50回まわすとき、「50回分の処理を行なっている」ではなく「ループ開始時に変数初期化。条件判定して成立していれば文の中を実行する。条件変数の値を変化させてまた条件判定からやり直す」ぐらいの粒度で捉えててほしいかな、という気持ち

これはfor文で詰まる人がやたら多かったからだ。彼らはfor文をアトミックな操作だと思っていた。つまりfor文はひとまとまり命令であり、長いfor文とprintfの間に粒度の違いはないと思っていたらしい。

まり、「for文の中でエラーが起こる」という事象がほぼ理解できない。forはアトミックであり、内部など見えないのだから。じゃあお前が今書いたfor文の中身はなんなんだってやんわり聞くと「さあ…?」みたいな反応が返ってくる。はあ。

関数についてもなかなか誤解が多かった。関数「sum_array(a, b)」と関数「average_three_numbers(a, b, c)」は全く別の原理で動いているのだと。ここでの「全く別の原理」というのはシグネチャが違うとか実装が異なるとかそういう意味ではなく、コーラを飲んでゲップが出る原理と糸電話で声が伝わる原理ぐらいの全くの別、という意味である

彼らは関数ひとつひとつについて「新しく原理学習」していたのだ。マジかよ……。どうやったらそんな発想に行き着くんだろう。そりゃ時間かかるわな。

そのため、関数が値を返す(または返さない)ということも理解できておらず、「関数戻り値関数戻り値を足す」とか「関数引数関数戻り値を直接渡す」とかやりだすと大パニックになる。メソッドチェーンとかやった日には大学潰れると思う。ただ、これはC言語が悪い部分もあると思う。配列かいじりだすと、初心者が書けるレベル関数だとあんまり値返さないしな。

自分が何をやりたいのか理解しろ

たのむ、他のはできなくてもこれはできてほしい。自分が何をやりたいのかは理解してほしい。流石にお前のやりたいことなんて他人にはわからんぞ。

配列の中の数値の合計値を求めたいんです」とか「名前身長体重ひとつにまとめた構造体が作りたいんです」とか。簡単なのでいいから。

「いま何やろうとしてどこで詰まってる?」って聞いても「……?」みたいな反応されたら困るんだよ。

例えば「キーボードから数値を10入力し、それぞれの値を配列に格納して、最後配列の値を逆順に表示せよ」みたいな問題が出てきたときに、「キーボードから値を入力する」「10回繰り返す」「配列に値を格納する」「配列の値を逆順に表示する」に分解できると思うんだけど、自分が何やりたいのかわからない奴はまずこれができない。

彼らには「キーボードカラスウチヲジュッカイニュウリョクシソレゾレヲハイレツニニュウリョクシテサイゴハイレツノアタイヲギャクジュンニヒョウジセヨ」に見えている。

かろうじて「キーボード」「ハイレツ」あたりの単語は拾えるらしく、標準入力から値とったり配列を作ったりはしてるんだけど、そこから先に進まない。モニターにらみつけてる。またにらみつけるかよ。

あれだ、算数文章題できなくてとにかく文章に出てくる数値足したり引いたりするやつ。あれのプログラミング版。文章が読めない。

こういう人にはメモ用紙取り出して、まず文章が何について言ってるのか、どういう工程に分けることができるのか、今後も同じことが起こったときにどうやって分けるのか。みたいなのを教えるんだけど、大抵あんまりしっくりこないらしく、成功したことは皆無。なんとかうまく教えたいんだが。

もうこのあたりになってくるとプログラミング関係なくね……?ってなるんだけど、意外とそういうプログラミング関係ないところで詰まる人めちゃくちゃ多いよ。

今すぐプログラミングをやめろ

そろそろ本題に戻るか。お前らは絶望的にプログラミングに向いてないから今すぐ諦めて刺身タンポポ乗せる

2025-11-04

人手不足ソフトウェアエンジニア業界地雷

誰も見て見ないふりしてるけど。

問題は繋がっていて、ごく単純な話。

「この規模、この内容のサービスで、なんでこんなにエンジニアが大量にいるんだろう?」って疑問は、どこにいっても、どこと話しても、わく。

先日の才能問題がまさにそうなんだけど、ソフトウェアエンジニア業界に滞留している人、ぶら下がってる人が多すぎやしないか? と。

リモートをいいことに、サボりまくってる「エンジニア」、特に最近は生成AIでっち上げてサボれるようになってからは、まぁまぁの数、存在していると思う。

実際に観測してもいるし。

そういう極端な例に限らず、才能がない、向いてない「エンジニア」が相当数寄生している。

ジュニアとかコーダーレベルだけじゃなく、いや、むしろリーダーマネージャーCTOレベルに。

その組織企業のそのレベルの「エンジニア」が、それに占拠されたら、多分事態好転することはない。

アリバイづくり程度の活動は行われるだろうが、永遠の停滞に陥るだろう。

誰か一人抜けても、残りがスクラムを組んで、異分子排除することに全能力を傾けるだろうから

自分達の居場所をがっちり確保するために。

まさに獅子身中の虫

「あの企業が?」ってところが、すでにそう言う状態に陥ってたりする。

名前はあげられないけど w

政府ソフトウェアエンジニアが足りない足りないって喚いてるけど、頭数だけ用意しても現場プロダクトが混乱するし、利用者が困るだけだ。

これ、旧日本軍の失敗の原因であった「員数主義」って言うんよな。

正直、「え? ソフトウェアエンジニア……? を名乗って……んの……?」って人が多い。

語るけど。

延々と語るけど。

Webから得た知識と、オライリー読んで得た知識を。

滔々と語るけど。

毎度毎度、会議室MCバトルの、青菜に塩をかけたような真似事をして。

誰が一番最初に、新しいイケてるWebページを見つけたかを競って、ドヤ顔くらべ。

勉強会開いてみたり。

で、生まれたのがこの設計実装か?

この量と質か?

みたいな。

多分、この手の「エンジニア」の半分以上が、人手不足工場とか大工とか解体業とかライフライン保守に行ってるべきだったんだろうな、と思う。

どっちが上とか下とか言う話じゃなく、向き不向きの話。

メタ認知できないし、メタ思考もできないから。

向いてないんよ。

多層抽象化不自由とか、概念構造の構築に不自由とか、専門書とかの読解に不自由とか。

2、30年ほど前はそこまでの能力がいらなかったからうまくエンジニアに滑り込んだ人もいただろうけど、今時のプロダクトでそれでは通用しないんだよね。

SQL文の書き方とか、DockerFileの書き方とか、ソースファイルのタブの入れ方とか、Web記事のある場所とか、ディレクトリ構成とかの形式的知識とか、マジで、あったから何? って。

大事なのは形式的知識じゃなく、本質的理解メタ思考なんだよね。

形式的知識なんて、今はそれこそAIで十分だから

お前なんていらない。

それだけ。

新しいサービスリリースされたんすよ。

使いたいっすよね。

熱脳しゃちょさん、歳いってるから対応できないっすか? w

って、よく言われる。

この言葉のままじゃないけど、まぁ、だいたいこういったニュアンスだ。

自分はそこそこの腕だと思うなら、彼我の実力の差は正しく測れるようになっとけよ。

こちとら、「だいたいこういう実装されてて、長所短所はこんなもん。こういう処理のために作られたようなもんだな。だから、今のプロダクトだと使い所がないね。料金も高いし」あたりまでチェック済みじゃボケ

ってことしかない。

こいつら、自分業務経歴書に書き込む単語を増やすことしか考えてねぇんだよな。

関連サービスなんて増やせば増やすほど、保守運用改善が大変になっていくだろ!

経費もかかるだろ。

「仕組み」は、よりシンプル方法で実現できるならシンプル手段を選べ、ってのは常識中の常識だろ。

KISS原則? 知ってますよ」って、知識として知ってる。

KISSが"Keep it simple, stupid"の略だってことを知っている。

選択問題として出題されたら正解できる。

けど実現できないんじゃぁ意味がねーんだよ。

この手の「自分イケてる錯覚しているエンジニア」は、Web記事つまみ食いしながら雰囲気設計実装するからリクエストデータが増えてきたら破綻するような、間違えた設計実装しかできない。

そういう新しいサービスは、それ以前のサービス欠点を埋めるために作られてるんだから、それ以前のサービスと同じノリで設計実装して十分な性能を引き出せるわけがねーんだわ。

分散DBとか、その最たる例だ。

今までの複数炎上現場で、正しく設計実装できてたところはなかったよ。

おいらが関わった炎上現場ほとんど、こうやって生まれてきている。

そういう炎上現場を作り出したエンジニアは、ふくらし粉で増量した業務経歴書片手に、「サービスの立ち上げを『僕の技術力で』やり切りました」って転職していくんだ。

新しいことに挑戦したくなって。とか言って。

いや、せめてこれをちゃんと整備し切ってから転職しろよ。

テナント、あと2、3増やしたら破綻するぞ。

みたいなエンジニアを、なぜどこもかしこもありがたがって採用するか全く理解できないんだが、そういう「エンジニア」が次の現場で生まれ変わったように的確で素晴らしい成果を出せるかって、そんなわけもなく、日をおうごとにグダグダになっていくサービスさらに一個増えるだけだったりする。

こういうエンジニアが、初回リリースしてからしばらくして、ソフトウェアエンジニア業界に飛び散る。

まるでがん細胞

こうなると立て直すスピードより、グダグダな新しいサービスが生まれスピードの方が何十倍、何百倍も早い。

もうね、半ば絶望してるんですよ。

今、生成AIも参戦してきてて、物量だけは爆発的に増えてるから

多分、そう遠くなく、グダグダサービス日本は覆われると思う。

AIベビーシッター必要になってくるだろうけど、それができるだけの技術力を持ったエンジニアの数が圧倒的に少ないし、何よりそういう腕利のエンジニアを、ふさわしい金額で雇おう、招こうと考える経営者が皆無。

今までの炎上現場ですら、高すぎる。無駄金を払わされてる。って扱いをうけてたからな。

「同じエンジニアなのに、どうしてこんなに高いの?」

次はその数倍、十数倍、費用時間もかかるからなぁ……。

向いてないエンジニアは、さっさと転職してくれ。

八潮みたいなのがあちこちで多発したら大変だろ?

2025-10-29

anond:20251029151756

せやけど、ディレクトリのことをディレクトリー って伸ばすのには抵抗あるんだよな。

2025-10-15

世の中、ちょっと普通と違ったことをすると倍の苦労をするもんである

ネット通販の無かった頃、マイナーマンガ単行本新刊を買うためにあちこち本屋を一日中探し回ったり、技術書を買いに駅前の大きな本屋まで行ったが売っていなくて結局近く本屋で取り寄せてもらったりしたものだった

最近は縫物をする人がめっきり減った、つまり縫物をすることが普通のことでなくなったので、縫物の糸やら生地やらが手に入りにくくなり、自分で凧を作る人もいないかタコ糸も手に入らない

世間様はホットケーキホットケーキミックスで作るからスーパーベーキングパウダーが売っていない

でもドライイーストはどこのスーパーでも売ってるんだよ

ホームベーカリーが世に出て相当経つとはいえ、それほど自宅でパンを作るのが普及してるとは信じがたい

みんな、果物ジュースを買ってきて「発酵実験」でもしてるんじゃなかろうか?

あと、PCをWindows11のやつに乗り換えたので、ホームディレクトリ名前を今まで使っていたものに変更するべく色々やってみたが、諦めた

2025-10-09

anond:20251009103011

CERNとかNTT、後にはYahoo!ウェブディレクトリと言うか職業電話帳みたいなサイトを作っていてそこから探していた

あれもしかして職業電話帳が通じなくなったりしてるんか

2025-10-06

anond:20251006140053

Linuxを始めるには、まずはLinux体験してみて、それから基本的操作を学ぶという2つのステップで進めるのがおすすめです。インストールはいくつかの選択肢があり、初心者向けに作られたディストリビューションから始めるとスムーズです。

ステップ1:Linux体験してみる

現在PC環境を変えずにLinuxを試す方法複数あります

仮想マシンを使う: VirtualBoxVMwareなどの仮想化ソフトウェアを使えば、WindowsmacOS上でLinuxを動かすことができます。これは、現在環境に影響を与えずにLinuxを試せる最も安全方法です。

ライブUSBで起動する: LinuxインストールイメージISOファイル)をUSBメモリに書き込むと、「ライブ環境」としてPCを起動できます。この場合も、PCストレージには何も変更が加えられません。

WSL (Windows Subsystem for Linux): Windows 10/11使用している場合、WSLを使えばWindows内にLinuxの実行環境を構築できます

ステップ2:初心者向けディストリビューションを選ぶ

Linuxにはさまざまな種類(ディストリビューション)があり、それぞれ特徴が異なります初心者は以下の使いやすものから始めるのがよいでしょう。

Ubuntu: 最も有名で、初心者向けのLinuxとして定番です。ユーザー数も多く、ネット上に情報豊富にあります

Linux Mint: Ubuntuベースに、よりWindowsライクな操作感を目指して開発されたディストリビューションです。直感的な操作可能なため、Windowsユーザーから乗り換える場合に適しています

Zorin OS: WindowsmacOSから移行するユーザー向けに、デザイン操作性を最適化したディストリビューションです。

ステップ3:Linuxインストールする

Linuxインストールは、一般的に以下の手順で行います

ISOファイルダウンロード: 選んだディストリビューション公式サイトからISOファイルダウンロードします。

ブータブルUSB作成: RufusWindows)やBalenaEtcher(クロスプラットフォーム)といったツールを使い、USBメモリにISOファイル書き込みます

PC再起動: 作成したブータブルUSBからPCを起動し、インストールを開始します。

インストール方法選択:

デュアルブート: Windowsなどの既存OS共存させる方法です。起動時にOS選択できますが、少し複雑な作業になります

単独インストール: PCストレージをすべてLinux使用する方法です。

仮想マシンインストール: ステップ1で試した仮想マシンに本格的にインストールします。

ステップ4:基本的コマンドを学ぶ

Linuxの真価を発揮するのは、コマンドライン操作です。ターミナルを開いて、以下の基本的コマンドを試してみましょう。

コマンド 説明

ls ファイルディレクトリの一覧を表示します。

cd ディレクトリを移動します。

pwd 現在ディレクトリ場所を表示します。

cp ファイルディレクトリコピーします。

mv ファイルディレクトリを移動または名前変更します。

rm ファイルディレクトリを削除します。

mkdir 新しいディレクトリ作成します。

man コマンドマニュアル説明書)を表示します。

さら学習を進めるには

オンライン学習サイト: Linux Foundationの無料コースLinux Journeyなど、無料で学べるオンラインリソースが多数あります

書籍: 初心者向けの入門書は、体系的に学習するのに役立ちます

コミュニティ: Redditのr/linux4noobsや地域Linuxユーザーグループに参加して、質問情報交換をするのも効果的です。

2025-09-25

LLMにはバイコーディング用のgitリポジトリVを渡してあげる

1個上のディレクトリレビュー毎にコミットする人間用のgitリポジトリHを置く

イカコミット破壊操作がなされてVがめちゃくちゃになっても、Hの方には保存されているので前の状態には戻せる

二重管理っぽさはある

2025-09-04

anond:20250904054611

・「凍結・解凍」は日本ではLHAが使ってた(確かっぽい)

かに使ってた。使ってはいるけど解凍を使ってるのは自己解凍のところだけで、e,xオプションのところでは「ファイルを取り出す」表記。凍結表記もaオプションのところだけ。

(LHAになる前のバージョンだけど)LHarcソースコード内の日本語版の使い方

char use[] =

"LHarc version 1.13c Copyright(c) H.Yoshizaki(吉崎栄泰), 1988-89.\n"

"============================================================= 1989 - 5 - 21 ===\n"

" <<< 高圧縮書庫管理プログラム >>>\n"

"===============================================================================\n"

" 使用法:LHarc [<命令>] [{/|-}{<スイッチ>[-|+|2|<オプション>]}...] <書庫>\n"

" [<ドライブ>:|<基準ディレクトリ>\\] [<パス> ...]\n"

"-------------------------------------------------------------------------------\n"

" 《命令》\n"

" a: 書庫ファイルを追加 u: 書庫ファイルを追加(日時照合付)\n"

" f: 書庫ファイル更新 m: 書庫ファイルを移動(日時照合付)\n"

" d: 書庫内のファイルの削除 e,x: 書庫からファイルを取り出す\n"

" p: 書庫内のファイルの閲覧 l,v: 書庫の一覧表示\n"

" s: 自己解凍書庫作成 t: 書庫内のファイルCRC チェック\n"

" 《スイッチ》\n"

" r: 再帰収集を行う w: ワークディレクトリ指定\n"

" x: ディレクトリ名を有効にする m: 問い合わせを行わない\n"

" p: 名前比較を厳密に行う c: 日時照合を行わない\n"

" a: 全属性を凍結の対象とする v: 他のユーティリティファイルを閲覧\n"

" n: 経過表示をしない k: 自動実行のキーワードの設定\n"

" t: 書庫の時刻を最新のファイルに\n"

"===============================================================================\n"

" 転載・再配布などは自由です。 Nifty-Serve PFF00253\n"

" (詳しくは使用の手引をご覧ください。) ASCII-pcs pcs02846";

英語版の使い方

char use[] =

"LHarc version 1.13c Copyright (c) Haruyasu Yoshizaki, 1988-89.\n"

"================================================================ 05/21/89 ===\n"

" <<< High-Performance File-Compression Program >>>\n"

"===============================================================================\n"

"usage: LHarc [<command>] [{{/|-}{<switch>[-|+|2|<option>]}}...] <archive_name>\n"

" [{<drive_name>:}|{<home_directory_name>\\}] [<path_name> ...]\n"

"-------------------------------------------------------------------------------\n"

" <command>\n"

" a: Add files to archive u: Update files to archive\n"

" f: Freshen files in archive m: Move new files into archive\n"

" d: Delete files from archive e,x: EXtract files from archive\n"

" p: disPlay files in archive l,v: View List of files in archive\n"

" s: make a Self-extracting archive t: Test integrity of archive\n"

" <switch>\n"

" r: Recursively collect files w: assign Work directory\n"

" x: allow eXtended file names m: no Message for query\n"

" p: distinguish full Path names c: skip time-stamp Check\n"

" a: allow any Attributes of files v: View files by another utility\n"

" n: display No indicator k: Key word for AUTOLARC.BAT\n"

" t: archive's Time-stamp option\n"

"===============================================================================\n"

" You may copy or distribute without any donation to me. Nifty-Serve PFF00253\n"

" (See the User's Manual for detailed descriptions.) ASCII-pcs pcs02846";

https://www.vector.co.jp/soft/dl/dos/util/se002340.html から

2025-07-28

anond:20250728111733

おいおい、空のディレクトリlsして、「No file exists」とか言ってきたらウゼーだろ😂

2025-07-09

まだ日本では検索エンジン違法なの?

AIの発達によってSEO価値を落としているのでこれからディレクトリ型の検索エンジンが再登場するんじゃないかと言われているので、それなら作ろうかなと思ってAIに聞いてみたら日本では違法になる可能性があり、特に手動登録検索エンジン人間意図的登録しているので違法となる可能性が高いそうだ。

一方botならひとつひとつ人間がチェックすることは不可能なので仮に訴えられてもうっかりミス程度の扱いになるとも言われた。

これは本当なんだろうか。

リンク集違法とされた話は聞いたことないんだけどディレクトリ型の検索エンジンディレクトリ型の巨大リンク集は何が違うんだろうか。

2025-06-28

言語の壁を超えて世界をつなぐMCP可能

今日MCPModel Context Protocol)について考える機会があった。MCPAIエージェントが外部ツールデータベースを呼び出すための統一インターフェースであり、従来バラバラだったシステム言語言語)をシームレスにつなぐ力を持っている。

例えば、営業チームがCRMから最新の顧客情報を取得しつつ、同時にスプレッドシート分析結果をレポートに組み込むといった複数ステップワークフローを、人手を介さずにAPIキー一つで実行できる。これにより、チームの連携速度は飛躍的に向上し、日常業務自動化が一気に進む。

MCPが実現するのは単なる技術的な接続ではない。国や企業の枠を超えたデータ共有、異なるプラットフォーム同士の相互運用性、さらにはAI言語モデルの知識を即時に現場に反映する迅速な意思決定基盤である。これまで数週間かかっていたデータ統合プロジェクトが、MCPを使えば数時間プロトタイプを動かすことも可能だ。

世界中MCP対応クライアントサーバーは日々増え続けており、情報が集約された大規模ディレクトリとして https://mcp.umin.ai活用されている。ここには最新のMCPサーバー一覧や接続手順がまとめられており、誰でもすぐに自分環境で試せるようになっている。

技術が進むほど、人間創造力を邪魔する手間が増えてしまっては本末転倒だ。MCPはまさにその手間を取り除き、ビジネス研究クリエイティブ活動へとシフトさせる鍵となるだろう。これから世界を変えるプロトコルとして、ぜひ注目したい。

LLMはエンジニア仕事を奪うのか?否、仕事抽象度を「Why」の次元

序文コード蒸発する時代と、それでも残る「Why」という名の問い

2025年私たちソフトウェア開発の歴史的な転換点に立っている。大規模言語モデル(LLM)の進化は、GitHub Copilotのようなコード補完ツールに始まり、今や「何を作りたいか」を自然言語で伝えるだけで、アプリケーションの雛形が数分で生成される時代現実のものとしつつある。この光景を目の当たりにした多くのプログラマが、漠然とした、しかし確かな不安を抱いているだろう。「私たち仕事は、いずれAIに奪われるのではないか」と。

この問いに対する私の答えは、半分はYesであり、もう半分はNoだ。より正確に言えば、プログラマ仕事本質が、歴史上かつてないレベル抽象化され、その役割が再定義されるのだ。私たちは、コードを「書く」作業から解放される一方で、これまで以上に高度な思考要求されることになる。

本稿では、プログラミング歴史を「How(いかに作るか)」から「What(何を作るか)」への移行として捉え直し、LLMがこの流れをいかに加速させるかを論じる。そして、その先にある、AIには決して代替できない、人間ならではの競争優位性、すなわちWhy(なぜ作るのか)」を定義し、記述する能力重要性について深く考察していく。これは、単なる未来予測ではない。今を生きるすべてのソフトウェアエンジニアにとっての、生存戦略提示である

第1章:プログラミング歴史的変遷 ― HowからWhatへの長い道のり

LLMの登場を特異点として捉える前に、我々が立っている場所を正確に知る必要がある。ソフトウェア開発の歴史は、常に「抽象化」との戦いであった。そしてその歴史は、プログラマの関心が「How」から「What」へと徐々に移り変わっていくプロセスとして描くことができる。

1-1. 手続き時代:Howを記述することに終始した黎明期

コンピュータ黎明期プログラミングとは、計算機理解できる命令(How)を、一行一行、丹念に記述する作業のものであった。アセンブリ言語や初期のFORTRANCOBOLといった言語は、ハードウェアの制約を強く受けており、プログラマメモリ管理プロセッサ動作といった、極めて物理層に近いレベルでの「How」を意識する必要があった。

この時代テストもまた、「How」に強く束縛されていた。書かれた手続きが、意図した通りに順番に実行されるか、特定入力に対して期待された計算結果を返すか。テストの関心事は、あくまで「手続きの正しさ」の検証にあった。ビジネスロジック実装の詳細が密結合し、コード特定の処理手順を記述した、硬直的な塊となっていた。

1-2. テスト駆動した振る舞いへの注目:Whatへの小さな一歩

風向きが変わり始めたのは、ソフトウェアの規模が拡大し、その複雑性が人間認知能力を超え始めた頃だ。1990年代後半から2000年代にかけて提唱されたエクストリーム・プログラミングXP)の中で、テスト駆動開発(TDD)という考え方が登場する。

TDD本質は、単なるテスト手法改善ではない。それは、プログラミングパラダイム根底から覆す思想だった。TDDは、「まずテストを書く」ことを強制することで、プログラマ意識を「これから実装するコード(How)」から「そのコードが満たすべき振る舞い(What)」へと強制的に転換させたのだ。

テストはもはや、書かれたコードの後追いで正しさを検証する作業ではない。それは、これから作られるべきソフトウェアの「仕様書」であり、「振る舞いの宣言」となった。例えば、「ユーザーログインボタンクリックしたら、ダッシュボード画面に遷移する」というテストコードは、具体的な実装方法(`onClick`イベントハンドラの中で`window.location.href`を書き換える、など)には一切言及しない。それはただ、達成されるべき「What」を記述しているだけだ。

この思想は、ビヘイビア駆動開発(BDD)へと発展し、`Given-When-Then`といった、より自然言語に近い形式ソフトウェアの振る舞いを記述するスタイルを生み出した。プログラマだけでなく、プロダクトマネージャービジネスアナリストといった非技術者をも巻き込み、「What」を共通言語として定義する試みが本格化したのである

1-3. 宣言プログラミングの台頭とフレームワーク役割

TDD/BDDによってプログラマ意識が「What」に向かい始めると、コードのものもまた、宣言的なスタイルへと進化していく。この変化を劇的に加速させたのが、モダンフレームワーク存在だ。

Reactを例に考えてみよう。Reactが登場する前、フロントエンド開発はjQuery代表されるように、DOMを直接操作する命令的なコード(How)の連続だった。「このボタンクリックされたら、この要素のテキストを書き換え、あちらの要素を非表示にする」といった具合だ。

しかし、Reactは「UIとは、ある状態state)に対する純粋写像である」という宣言的なモデル提示した。プログラマがやるべきことは、UI状態(`state`)と、その状態がどのように見えるか(JSXによるコンポーネント)を宣言することだけだ。状態が変更された際に、DOMをどのように効率的更新するかという面倒な「How」の部分は、Reactの仮想DOM差分検出アルゴリズムがすべて隠蔽してくれる。プログラマは「What(UIのあるべき姿)」を記述するだけでよくなったのだ。

この「WhatからHowへの変換」は、様々な領域で見られる。

これらのフレームワークツールは、いわば特定の制約下における、WhatからHowへの高性能な変換器」として機能してきた。プログラマは、フレームワークが課す「お作法」や「制約」を受け入れることで、退屈で間違いの多い「How」の記述から解放され、より本質的な「What」の定義に集中できるようになった。我々が「生産性が高い」と感じる開発体験は、この優れた変換器の恩恵に他ならない。

現状は、この歴史的変遷の延長線上にある。プログラマ仕事は、手続き記述する職人から、振る舞いを定義し、それを実現するための最適な「変換器(フレームワーク)」を選択・設定するアーキテクトへと、その重心を移してきたのだ。

第2章:LLMがもたらす究極のパラダイムシフト ― 汎用変換器の誕生

フレームワークがもたらした「WhatからHowへ」の潮流は、LLMの登場によって、未曾有のスケールで加速されようとしている。フレームワークが「特定領域に特化した変換器」であったのに対し、LLMは「あらゆる領域対応可能な、究極の汎用変換器」としてのポテンシャルを秘めているからだ。

2-1. フレームワークの制約を超えて

前章で述べたように、ReactやTerraformといったフレームワークは、その恩恵と引き換えに、私たち特定の「制約」を課してきた。Reactを使うならコンポーネントベース思考し、状態管理作法に従う必要がある。Terraformを使うなら、そのエコシステムとHCLの流儀を受け入れなければならない。これらの制約は、WhatからHowへの変換を自動化するための「レール」であり、私たちはそのレールの上を走ることで効率を得てきた。

しかし、LLMはこの前提を覆す。LLMは、特定フレームワーク言語知識を事前に学習しているが、その利用において絶対的な制約を課すわけではない。私たちは、より自由形式で「What」を伝えることができる。

例えば、こうだ。

ユーザー認証機能付きのシンプルブログアプリを作ってほしい。フロントエンドはReactとTypeScriptUIコンポーネントはMUIを使う。バックエンドNode.jsExpressで、データベースPostgreSQLユーザーGoogleアカウントログインでき、新しい記事作成編集、削除できる。記事にはマークダウン記法が使えて、画像アップロードできるようにしてほしい。

この要求(What)は、特定フレームワーク流儀に則ったものではない。複数技術スタックを横断し、機能要求自然言語で並べただけのものであるしかし、現在のLLM、特にGPT-4oやそれに類するモデルは、このレベル要求からディレクトリ構造設定ファイルAPIエンドポイントフロントエンドコンポーネントに至るまで、驚くほど具体的なコード(How)を生成することができる。

これは、フレームワークが担ってきた「WhatからHowへの変換」が、特定のレールから解き放たれ、より広範で柔軟な領域へと拡張されたことを意味する。これまで自動化が難しかった、あるいは特定フレームワーク存在しなかったニッチ領域や、複数技術を組み合わせる複雑なシステム構築においても、AIによる宣言プログラミング恩恵を受けられる時代が始まろうとしているのだ。

2-2. 「What」の解像度がすべてを決める世界

LLMという汎用変換器の登場により、プログラマ生産性は、いかに質の高いWhatをLLMに伝えられるか」に直結するようになる。これは、俗に「プロンプトエンジニアリング」と呼ばれるスキルだが、その本質は、ソフトウェア開発における「要求定義」そのものである

質の高い「What」とは何か。それは、曖昧性がなく、網羅的で、矛盾のない要求である

これらは、優秀なソフトウェアエンジニアが、プロダクトマネージャーデザイナーとの対話を通じて、日常的に行ってきた思考プロセスのものではないだろうか。LLMの登場は、この思考プロセスを、より明確に、よりテキストベースで「記述」する能力を求める。私たちの頭の中にあった暗黙的な仕様が、LLMへの入力プロンプト)という形で、明示的に言語化されることを要求するのだ。

やがて、ほとんどのプログラミング作業は、この「Whatの記述」に収束していくだろう。TDDテストコードという形式で「What」を記述したように、私たち自然言語や、より構造化された要求記述言語を用いて、AIに対して「What」を宣言することになる。コード(How)は、その宣言から自動生成される中間生成物に過ぎなくなる。まさに、コード蒸発していく未来である

第3章:それでもAIには決められない ― 「Why」の不在という致命的な欠陥

「What」を伝えれば「How」が手に入る。この魔法のような世界の到来を前に、私たちは一つの重大な問いに直面する。それは、「そのWhatからHowへの変換は、本当に一意に決まるのか?」という問いだ。

答えは、明確にNoである

ある「What(要求)」を実現するための「How(実装)」は、無数に存在する。そして、どの「How」を選択すべきかを決定するためには、単純な機能要求(What)だけでは情報が全く足りない。そこには、必ずWhy(なぜそう作るのか)」という、背景、文脈、そしてトレードオフ考慮必要不可欠となる。

3-1. トレードオフの海に溺れるLLM

簡単な例を考えてみよう。「1億件のユーザーデータを格納し、ユーザーIDで高速に検索できるシステム」という「What」をLLMに与えたとする。LLMは、どのような「How」を提案するだろうか。

これらの選択肢は、どれも「What」を満たしている。しかし、その特性は全く異なる。案Aは多くのエンジニアにとって馴染み深く開発が容易だが、10億、100億件へのスケールは難しいかもしれない。案Bはスケール性に優れるが、厳密なトランザクション管理は苦手だ。案Cは高速だが、運用コストシステムの複雑性が増す。案Dは安価だが、検索速度は他に劣る。

LLMは、これらの選択肢をリストアップすることはできるだろう。しかし、このプロジェクトにとって最適な選択肢はどれかを、自信を持って決定することはできない。なぜなら、その決定には、LLMが与えられていない「Why」の情報必要からだ。

これらの「Why」こそが、無数に存在する「How」の中から、ただ一つの「正解」を選び出すための羅針盤なのである。そしてこの「Why」は、ビジネス目標組織文化ユーザーの期待、技術的な制約といった、極めて人間的で、文脈依存的な情報の中にしか存在しない。

3-2. エンジニアが暗黙的に行ってきた「Why」に基づく意思決定

ここで重要なのはこれまでもエンジニアは、この「Why」に基づく意思決定を、意識的あるいは無意識的に行ってきたという事実だ。

私たち技術選定を行うとき、単に「流行っているから」という理由だけでReactを選ぶわけではない。「SPA(Single Page Application)にすることでユーザー体験を向上させたい(Why)」、「コンポーネント指向の開発によって長期的な保守性を確保したい(Why)」、「Reactエンジニア採用市場が活発だからWhy)」といった、様々な「 Permalink | 記事への反応(0) | 17:09

LLMはエンジニア仕事を奪うのか?否、仕事抽象度を「Why」の次元

序文コード蒸発する時代と、それでも残る「Why」という名の問い

2025年私たちソフトウェア開発の歴史的な転換点に立っている。大規模言語モデル(LLM)の進化は、GitHub Copilotのようなコード補完ツールに始まり、今や「何を作りたいか」を自然言語で伝えるだけで、アプリケーションの雛形が数分で生成される時代現実のものとしつつある。この光景を目の当たりにした多くのプログラマが、漠然とした、しかし確かな不安を抱いているだろう。「私たち仕事は、いずれAIに奪われるのではないか」と。

この問いに対する私の答えは、半分はYesであり、もう半分はNoだ。より正確に言えば、プログラマ仕事本質が、歴史上かつてないレベル抽象化され、その役割が再定義されるのだ。私たちは、コードを「書く」作業から解放される一方で、これまで以上に高度な思考要求されることになる。

本稿では、プログラミング歴史を「How(いかに作るか)」から「What(何を作るか)」への移行として捉え直し、LLMがこの流れをいかに加速させるかを論じる。そして、その先にある、AIには決して代替できない、人間ならではの競争優位性、すなわちWhy(なぜ作るのか)」を定義し、記述する能力重要性について深く考察していく。これは、単なる未来予測ではない。今を生きるすべてのソフトウェアエンジニアにとっての、生存戦略提示である

第1章:プログラミング歴史的変遷 ― HowからWhatへの長い道のり

LLMの登場を特異点として捉える前に、我々が立っている場所を正確に知る必要がある。ソフトウェア開発の歴史は、常に「抽象化」との戦いであった。そしてその歴史は、プログラマの関心が「How」から「What」へと徐々に移り変わっていくプロセスとして描くことができる。

1-1. 手続き時代:Howを記述することに終始した黎明期

コンピュータ黎明期プログラミングとは、計算機理解できる命令(How)を、一行一行、丹念に記述する作業のものであった。アセンブリ言語や初期のFORTRANCOBOLといった言語は、ハードウェアの制約を強く受けており、プログラマメモリ管理プロセッサ動作といった、極めて物理層に近いレベルでの「How」を意識する必要があった。

この時代テストもまた、「How」に強く束縛されていた。書かれた手続きが、意図した通りに順番に実行されるか、特定入力に対して期待された計算結果を返すか。テストの関心事は、あくまで「手続きの正しさ」の検証にあった。ビジネスロジック実装の詳細が密結合し、コード特定の処理手順を記述した、硬直的な塊となっていた。

1-2. テスト駆動した振る舞いへの注目:Whatへの小さな一歩

風向きが変わり始めたのは、ソフトウェアの規模が拡大し、その複雑性が人間認知能力を超え始めた頃だ。1990年代後半から2000年代にかけて提唱されたエクストリーム・プログラミングXP)の中で、テスト駆動開発(TDD)という考え方が登場する。

TDD本質は、単なるテスト手法改善ではない。それは、プログラミングパラダイム根底から覆す思想だった。TDDは、「まずテストを書く」ことを強制することで、プログラマ意識を「これから実装するコード(How)」から「そのコードが満たすべき振る舞い(What)」へと強制的に転換させたのだ。

テストはもはや、書かれたコードの後追いで正しさを検証する作業ではない。それは、これから作られるべきソフトウェアの「仕様書」であり、「振る舞いの宣言」となった。例えば、「ユーザーログインボタンクリックしたら、ダッシュボード画面に遷移する」というテストコードは、具体的な実装方法(`onClick`イベントハンドラの中で`window.location.href`を書き換える、など)には一切言及しない。それはただ、達成されるべき「What」を記述しているだけだ。

この思想は、ビヘイビア駆動開発(BDD)へと発展し、`Given-When-Then`といった、より自然言語に近い形式ソフトウェアの振る舞いを記述するスタイルを生み出した。プログラマだけでなく、プロダクトマネージャービジネスアナリストといった非技術者をも巻き込み、「What」を共通言語として定義する試みが本格化したのである

1-3. 宣言プログラミングの台頭とフレームワーク役割

TDD/BDDによってプログラマ意識が「What」に向かい始めると、コードのものもまた、宣言的なスタイルへと進化していく。この変化を劇的に加速させたのが、モダンフレームワーク存在だ。

Reactを例に考えてみよう。Reactが登場する前、フロントエンド開発はjQuery代表されるように、DOMを直接操作する命令的なコード(How)の連続だった。「このボタンクリックされたら、この要素のテキストを書き換え、あちらの要素を非表示にする」といった具合だ。

しかし、Reactは「UIとは、ある状態state)に対する純粋写像である」という宣言的なモデル提示した。プログラマがやるべきことは、UI状態(`state`)と、その状態がどのように見えるか(JSXによるコンポーネント)を宣言することだけだ。状態が変更された際に、DOMをどのように効率的更新するかという面倒な「How」の部分は、Reactの仮想DOM差分検出アルゴリズムがすべて隠蔽してくれる。プログラマは「What(UIのあるべき姿)」を記述するだけでよくなったのだ。

この「WhatからHowへの変換」は、様々な領域で見られる。

これらのフレームワークツールは、いわば特定の制約下における、WhatからHowへの高性能な変換器」として機能してきた。プログラマは、フレームワークが課す「お作法」や「制約」を受け入れることで、退屈で間違いの多い「How」の記述から解放され、より本質的な「What」の定義に集中できるようになった。我々が「生産性が高い」と感じる開発体験は、この優れた変換器の恩恵に他ならない。

現状は、この歴史的変遷の延長線上にある。プログラマ仕事は、手続き記述する職人から、振る舞いを定義し、それを実現するための最適な「変換器(フレームワーク)」を選択・設定するアーキテクトへと、その重心を移してきたのだ。

第2章:LLMがもたらす究極のパラダイムシフト ― 汎用変換器の誕生

フレームワークがもたらした「WhatからHowへ」の潮流は、LLMの登場によって、未曾有のスケールで加速されようとしている。フレームワークが「特定領域に特化した変換器」であったのに対し、LLMは「あらゆる領域対応可能な、究極の汎用変換器」としてのポテンシャルを秘めているからだ。

2-1. フレームワークの制約を超えて

前章で述べたように、ReactやTerraformといったフレームワークは、その恩恵と引き換えに、私たち特定の「制約」を課してきた。Reactを使うならコンポーネントベース思考し、状態管理作法に従う必要がある。Terraformを使うなら、そのエコシステムとHCLの流儀を受け入れなければならない。これらの制約は、WhatからHowへの変換を自動化するための「レール」であり、私たちはそのレールの上を走ることで効率を得てきた。

しかし、LLMはこの前提を覆す。LLMは、特定フレームワーク言語知識を事前に学習しているが、その利用において絶対的な制約を課すわけではない。私たちは、より自由形式で「What」を伝えることができる。

例えば、こうだ。

ユーザー認証機能付きのシンプルブログアプリを作ってほしい。フロントエンドはReactとTypeScriptUIコンポーネントはMUIを使う。バックエンドNode.jsExpressで、データベースPostgreSQLユーザーGoogleアカウントログインでき、新しい記事作成編集、削除できる。記事にはマークダウン記法が使えて、画像アップロードできるようにしてほしい。

この要求(What)は、特定フレームワーク流儀に則ったものではない。複数技術スタックを横断し、機能要求自然言語で並べただけのものであるしかし、現在のLLM、特にGPT-4oやそれに類するモデルは、このレベル要求からディレクトリ構造設定ファイルAPIエンドポイントフロントエンドコンポーネントに至るまで、驚くほど具体的なコード(How)を生成することができる。

これは、フレームワークが担ってきた「WhatからHowへの変換」が、特定のレールから解き放たれ、より広範で柔軟な領域へと拡張されたことを意味する。これまで自動化が難しかった、あるいは特定フレームワーク存在しなかったニッチ領域や、複数技術を組み合わせる複雑なシステム構築においても、AIによる宣言プログラミング恩恵を受けられる時代が始まろうとしているのだ。

2-2. 「What」の解像度がすべてを決める世界

LLMという汎用変換器の登場により、プログラマ生産性は、いかに質の高いWhatをLLMに伝えられるか」に直結するようになる。これは、俗に「プロンプトエンジニアリング」と呼ばれるスキルだが、その本質は、ソフトウェア開発における「要求定義」そのものである

質の高い「What」とは何か。それは、曖昧性がなく、網羅的で、矛盾のない要求である

これらは、優秀なソフトウェアエンジニアが、プロダクトマネージャーデザイナーとの対話を通じて、日常的に行ってきた思考プロセスのものではないだろうか。LLMの登場は、この思考プロセスを、より明確に、よりテキストベースで「記述」する能力を求める。私たちの頭の中にあった暗黙的な仕様が、LLMへの入力プロンプト)という形で、明示的に言語化されることを要求するのだ。

やがて、ほとんどのプログラミング作業は、この「Whatの記述」に収束していくだろう。TDDテストコードという形式で「What」を記述したように、私たち自然言語や、より構造化された要求記述言語を用いて、AIに対して「What」を宣言することになる。コード(How)は、その宣言から自動生成される中間生成物に過ぎなくなる。まさに、コード蒸発していく未来である

第3章:それでもAIには決められない ― 「Why」の不在という致命的な欠陥

「What」を伝えれば「How」が手に入る。この魔法のような世界の到来を前に、私たちは一つの重大な問いに直面する。それは、「そのWhatからHowへの変換は、本当に一意に決まるのか?」という問いだ。

答えは、明確にNoである

ある「What(要求)」を実現するための「How(実装)」は、無数に存在する。そして、どの「How」を選択すべきかを決定するためには、単純な機能要求(What)だけでは情報が全く足りない。そこには、必ずWhy(なぜそう作るのか)」という、背景、文脈、そしてトレードオフ考慮必要不可欠となる。

3-1. トレードオフの海に溺れるLLM

簡単な例を考えてみよう。「1億件のユーザーデータを格納し、ユーザーIDで高速に検索できるシステム」という「What」をLLMに与えたとする。LLMは、どのような「How」を提案するだろうか。

これらの選択肢は、どれも「What」を満たしている。しかし、その特性は全く異なる。案Aは多くのエンジニアにとって馴染み深く開発が容易だが、10億、100億件へのスケールは難しいかもしれない。案Bはスケール性に優れるが、厳密なトランザクション管理は苦手だ。案Cは高速だが、運用コストシステムの複雑性が増す。案Dは安価だが、検索速度は他に劣る。

LLMは、これらの選択肢をリストアップすることはできるだろう。しかし、このプロジェクトにとって最適な選択肢はどれかを、自信を持って決定することはできない。なぜなら、その決定には、LLMが与えられていない「Why」の情報必要からだ。

これらの「Why」こそが、無数に存在する「How」の中から、ただ一つの「正解」を選び出すための羅針盤なのである。そしてこの「Why」は、ビジネス目標組織文化ユーザーの期待、技術的な制約といった、極めて人間的で、文脈依存的な情報の中にしか存在しない。

3-2. エンジニアが暗黙的に行ってきた「Why」に基づく意思決定

ここで重要なのはこれまでもエンジニアは、この「Why」に基づく意思決定を、意識的あるいは無意識的に行ってきたという事実だ。

私たち技術選定を行うとき、単に「流行っているから」という理由だけでReactを選ぶわけではない。「SPA(Single Page Application)にすることでユーザー体験を向上させたい(Why)」、「コンポーネント指向の開発によって長期的な保守性を確保したい(Why)」、「Reactエンジニア採用市場が活発だからWhy)」といった、様々な「 Permalink | 記事への反応(0) | 17:09

2025-05-15

anond:20250515133445

txtascは同じディレクトリに置くんだよ?

んでもってtxt指定した時点でasc指定に入らず署名が正当かの検証結果が表示される。

昨日あがってた手順は正確には間違いなんだよな。

2025-05-03

アーキテクトになるためにはクリーンアーキテクチャの知識必要

文字面的には否定はしない。

しーかーしー。

そこでなぜディレクトリ構成かいう、枝葉末節から話が始まるか理解できん。

というか、そういう具象しか理解できない頭しか持ち合わせてないのか?

もしそうならアーキテクトなんて無理無理の無理だぞ。

中身を理解しないで、表面的HowToだけなぞったところで、手間が増えるだけ、不具合が増えるだけの、典型的炎上カーゴカルト教祖しかなれんぞ。

で、そういうクズを作っておきながら、手に負えなくなったら「××社でアーキテクトをして云々」って転職して逃げ出すんだからなぁ……。

てめぇのケツくらい拭けねぇのかよ?

なんかあの同心円図を神聖ものみたいに崇めてるっぽいのを見ると、本当に哀れに思える。

あんなもん、書籍を出すときに見た目を整えるためにでっち上げた図以外の何物でもねーだろ w

よくある4象限とかのマトリクス図とか、意識高い系の本には大量に載ってるあれだよ。

そういう意味のない図に「雰囲気で当てはめる」から、そこで真に求められていることが実現できないんだよ。

クリーンアーキテクチャ採用していて、がっつりしたE2Eテストを予定している時点で矛盾だって理解しろ

ただなぁ、こういう技術()話するのが好きなエンジニアは多い。

呆れるほど多い。

多いんだが、残念すぎることに内容が、

「知ってるか? 東京都呪術高等専門学校って奥多摩にあるんだぜ」

「知ってる。近くまで行ったことある

「生徒に知り合いがいる」

スカウトされたことがある」

とかマウント取り合ってるようにしか見えんのよ。

今時の厨二だってそんなアホみたいな話してマウント取り合いなんてしねぇぞ……。

そんな集団に「ただの漫画創作だぞ」って言い放つより、静かに距離を置くことを選ぶよ。

恨み買う、余計な手間をかけることになる、以外の利点が存在しないから。

2025-03-31

anond:20250331184456

あ、ごめん会社じゃなくて家の話

会社は良いんだよ基準が分かりやすいし狭くて簡単・・・なんだけど家がね~

ドキュメントの整理術っていうか整頓のヒントっていうか

家でいえばビフォーアフターと共にどこをどんな基準でどのアイテムを使って整頓したか説明してくれてる本っていうか

そういうのが欲しい

情報収集しようにもyoutubeHPだと効率悪いんだよね・・・

あとPCファイル整理術の本も欲しいな

ディレクトリファイル名の命名規則とか困るんだよね

2025-03-25

anond:20250325135521

おいおい、ゲームアプリ起動したらウェブサーバーまで立ち上がるって、そらそら大変ばい!そんなんしよったらホームディレクトリが全世界に公開されるばい!…って、なんでやねん!そんなん普通あるわけなかろうもん!信頼できんソフトインストールするのは怖かばってんが、普通そこまではならんばい!どげんかせんといかんばい!

2025-03-10

単純作業AIは俺のスピード全然負けてる

単純作業こそAIに任せたいんだが、俺が手作業10分で終わる作業20分くらいかかったりする

しかも細切れに頼まないとドカントークン使われる可能性があって怖い

「このディレクトリ以下の全ファイルに対して、〇〇を探して✕✕して」って頼みたいんだが、一撃で100万トークン超える危険性がある

100万トークン$10とかかかったりするから

で、10分で終わればいいが、完璧じゃないからチェックが必要

今は、その単純作業を実現するスクリプトを書いてもらって、自分で実行したほうがいい感じかな

2025-03-07

プロンプトどうでもいい論を唱える奴がマジで理解できないんだよな

誰かが用意した物をコピペしてくるか、バイアスに従ったスタンダード出力しか必要としてないなら確かに考える事はほぼないのは分かる

ていうかそもそもプロンプト」なんてCLIコマンドと一緒、と言い切るにはランダム性があるんで意味共通だとしか言えないが

ディレクトリ内のファイル一覧が欲しい」のか「サブディレクトリ一覧が欲しい」のかでコマンドが変わるように

結局ユーザーの望む出力を促すためのもんでしかないんだから必要な出力を引き出すための手段」くらいの認識でいいってのに

プロンプトエンジニアリングという言葉を推進派とは逆ベクトル大袈裟なもんだと考えてる傾向にあるんだよな、忌避してる奴は

簡単な例で行くと「テトリス作って」「Javascriptテトリス作って」「C#テトリス作って」全部得られるもんは違うわけだ

んでもって更に要件があるなら、それは指示に組み込まないとAIに伝わりようがない

「これ調べて」「これ調べて箇条書きで整理して」「調べて解説しつつブラックジョークを言って」これも全部成果が違うだろ

AIによっては日本語特定和製英語独自業界用語理解できないものすらあるよな

じゃけん適切に指示を出しましょうねと

そういうもんでしかないものがどうでもいいも不要になるもあるかと

推論モデルであっても、勝手にCoT始めるからといって要件無しじゃAIの獲得した一般常識に従って動くだけだぞ

どこまで言ってもそれが仕様

西野カナトリセツを見習え

まぁメモリーに色々埋め込んでおけば、言葉少なでも期待通り動いてくれるかもしれんが

その実態はつまり事前入力してるだけのプロンプトや

メモリーが充実してる二人の間にはもう言葉はいらないってか? やかましいわ

2025-02-07

最近ケイソフトウェアエンジニアvlog見てる

感情言語化できない、なんとなく見ている。

ソフトウェアエンジニアは以降エンジニア表記する。

ケイエンジニアVLOG

ケイケなエンジニアがだいたいMacbookとイケイコーヒーかイケイケ社内カフェのイケイ無料ドリンクを手に社内の色んな場所を巡りつつ

合間、開始か終わりに筋トレを挟みながら仕事している動画だ。

つべとかで見れる。

参考に

ならない。なるわけがない、どうでもいい

おそらく作業用のBGMに近い形で捉えている。

性格頭が悪い、そして何よりダサい

とある動画で画面の一部が表示された。

なんと拡張子jsだったんだ。

VSCodeルートディレクトリに配置されてるからおそらく実コードだと思うんだが、鼻で笑ってしまったのね。JSかよと

割愛するけどこれだけで最高に間抜けで、オブラートに包むと性格が悪い寄りの人種であることがある程度推測できる。

そこで気がつくんだが、俺はこのイケイケたちを見て羨ましがりながら、粗探しをしていたわけだ。

そうして目的がかなって、嬉しくなった。

ああ、俺はこんなにもダサくなったのか。

からかもしれないが、そんなことはどうでもいい。

今この瞬間俺はダサい。それが少し悲しくなった。

くだらねーこと書いてる暇があるなら課題解決に動くべきだ

そうだ。

課題イシューソリューションタスクわからん、いやなんでもいい。

とにかくそういったものがあればそれを解決するために動く、ないなら作る。

イケてないカフェでイケてないノートPCを広げてイケてないエディタとイケてないターミナルを開いて

イケてない課題を少しでもイケてるようにするのが、俺の趣味でやるべきことなんだ。

2025-01-30

「こういう構造ディレクトリ配置になってるから、このパターンマッチするディレクトリ内のファイルで、3ヶ月以上更新のないファイルクリーンアップするbashスクリプトを書いてね」

と言ったらBing Copilotちゃんが即座に書いてくれたよ

2025-01-29

結局、これやってくれてる増田いないのか

今だったら DeepSeek R1 でもええやんな

増田においても、AIやりたい風の増田AIで遊んでる(噓松)増田投稿をよく見るけど、

どう考えてもそれ、NSFWフラグ立つでしょ・・・みたいなことを希望してんのよね

からAI画像生成とかで遊んでる増田が、彼/彼女らをフォローする風でもないので、

パソコン大先生増田フォローしたげて

 

  1. Windows OSアプリ分離とコア分離を説明(超ざっくりで良い。コンテナー技術の基本原理セキュリティ周りの設定やトラブル対応ベースを作る)
  2. コンテナ技術の基礎について説明(ざっくりで良い)
  3. LLMを目的別に説明
  4. PC作業用のディレクトリ作成し、モデルダウンロード、保存まで説明
  5. Docker DesktopインストールDockerイメージの構築~Dockerコンテナの実行まで説明

 

需要あると思うで

2025-01-22

anond:20250122133407

詳しいなら、謎レスバしとらんで、

レガシーWindows OS の安定性の概念Windows OS を語ったり、

レガシーWindows OS でよくあったトラブル懸念してチャレンジしない、

おっさんおばさんおじいさんおばあさんがいるから、Windows OSアプリ分離 と コア分離 を説明したげてよ

 

増田においても、AIやりたい風の増田AIで遊んでる(噓松)増田投稿をよく見るけど、

どう考えてもそれ、NSFWフラグ立つでしょ・・・みたいなことを希望してんのよね

からAI画像生成とかで遊んでる増田が、彼/彼女らをフォローする風でもないので、

パソコン大先生増田フォローしたげて

 

  1. Windows OSアプリ分離とコア分離を説明(超ざっくりで良い。コンテナー技術の基本原理セキュリティ周りの設定やトラブル対応ベースを作る)
  2. コンテナ技術の基礎について説明(ざっくりで良い)
  3. LLMを目的別に説明
  4. PC作業用のディレクトリ作成し、モデルダウンロード、保存まで説明
  5. Docker DesktopインストールDockerイメージの構築~Dockerコンテナの実行まで説明

 

需要あると思うで

2025-01-19

AIがもうこんなにできるんだね

指定のサブフォルダ圧縮するだけなんだけど、

同じコードを数年前にExcelVBAでしこしこ作ってたのがなつかしい

function Zip-Subfolders {
    param(
        [string]$directory
    )

    # 指定されたディレクトリ内のサブフォルダを取得
    $subfolders = [System.IO.Directory]::GetDirectories($directory) | % { [System.IO.DirectoryInfo]::new($_) }

    foreach ($folder in $subfolders) {
        # 圧縮ファイルの保存先パス
        $zipFilename = "$($folder.Name).zip"
        $zipFilepath = Join-Path -Path $directory -ChildPath $zipFilename

        # サブフォルダZIP圧縮
        Write-Host "圧縮中..."
        [System.IO.Compression.ZipFile]::CreateFromDirectory($folder.FullName, $zipFilepath)
        Write-Host "$zipFilepath圧縮しました。"
    }
}

# ユーザーフォルダパス入力させる
$folderPath = Read-Host "圧縮する親フォルダパス入力してください"

# パス存在するか確認
if ([System.IO.Directory]::Exists($folderPath)) {
    Zip-Subfolders -directory $folderPath
}
ログイン ユーザー登録
ようこそ ゲスト さん