はてなキーワード: IDEとは
RAM 16GB / CPU Intel core i7のMacbookがついに処理落ちで突然シャットダウンしてしまった。
つい3, 4年前ならラップトップにしては結構ハイスペックな部類のモデルだった。
だがもはや処理落ちレベルとは。
動画編集とかしてるわけではないしAIとかゴリゴリ動かしてるわけではないのに、だ。
IDEを2種類立ち上げ、そのどちらにもCopilotを導入し、DockerでフロントとバックとDBのプロセスを立ち上げ、Copilot搭載のVSCodeでメモ用のテキストを開き、SlackとExcelを開き、Chromeで15個ぐらいタブを開き、動画ファイルを3ファイル同時にQuickTimeで再生し、その他諸々のソフトを3つ立ち上げていたらついにMacがアッチッチになり落ちてしまった。
3年前は16GB もあれば無茶な使い方してもへっちゃらと思ってたのに、もうあんまり無茶な使い方はできないレベルのスペックなんだなとしみじみ時代を感じた。
https://stevedylan.dev/posts/leaving-neovim-for-zed/
エディタは基本的に後発の方が優れている派であるが、Vimモードについてはあらゆるエディタ、IDEで等しくゴミクズ(キーバインドをVim風にするだけで編集モード切り替えには対応しない)であり実用に耐えないのでアピールポイントにするのはやめて欲しい
昔の慣習に倣ってコメントを丁寧に書く人がいまだに居るけれど
以前のコードをコメントアウトしているようなソースは論外として
例えばメソッド・関数の頭にそれが何をする関数なのかを書いている人が多いけれど
メソッド名や引数名、戻り値の型をキッチリ付けておけば分からないことなんて無い
それ以上の複雑な処理をするなら機能分解するべきだし名前を付けにくい処理の場合はそもそもの設計がおかしい
昔は便利なIDEが無かったので変数や関数の名前に長い名前を付けると実装が大変で
仕方なくx1だとかval2だとかを使って実装してたのでコメントに書いておくようなこともあったけれど
Copilotを使える時代にコメントを書く必要なんて皆無だし
仮に意味が分からないコードがあってもCopilotに聞けばいいのでやっぱりコメントは必要ない
コメントがあった方が良い場合は「この実装はこのアルゴリズムに基づいて実装している」とURLのリンクを貼ったり
「この規則があるのでこういう実装をしている」とRFCを貼ったりするとかはあるけれど
それもほとんど変数名だとかで解決できるし、あっても1行で終わるレベル
そういう実装全体の設計に関するような話はReadmeに書けば良いのでソースコード内のコメントとしては必要無い
「それでも無いよりはいいでしょ?」みたいに言う人いるが逆に問題になることも多い
コメント内容と実装が違う場合にどっちが正解なのかが分からなくなったり
ソースコードの修正に対してコメントが修正されていなくて後々で揉めたりする
当然ながらコメント部分にはLintが効かないので(ChatGPT使えば作れそうな気もするが)
チェック内容も増えるし良いことがほとんどない
ヤバいJTCとかは「各行にコメントを書いて下さい」とか言ってきて正気の沙汰じゃ無い
まぁそういう案件が来たらChatGPTに丸投げするとは思うけれど下手すると「Copilot禁止」とかも言い出しそうだな
書いたところで誰も読まないのにアホすぎる
4月も終わりだが、
未だにエンジニアに微妙な性能のPCを使わせる会社があることに驚きだった
メモリは16GBや8GB
ちょっとした操作のたびに待ち時間が入るだけでどれだけ効率が悪いと思ってるのか
いつまでも古い開発環境しか使ってない人は困ってないらしいが、なぜそれに合わせる必要があるのか
そりゃIDEレベルのものを使わずほぼメモ帳レベルのでコードを書いてれば性能はいらないし、
分解すれば保証なくなるのでは?
BTOで最初からカスタマイズすればいいのに、なぜ出来合いの安いPCを買って交換が必要なのか
そりゃちょっと安いのだろうが交換する作業にかかる時間の時給計算もできないのか
今でこそWindowsでも全く問題なく開発できるけど、ちょっと前は「Macのが開発体験が良い」と言われていた。
具体的には2011~2015年あたり。
2013年のころ、俺はWindowsで開発していた。WSL2なんてものは当たり前に存在しない時代だ。
たとえばC言語を使いたい場合、MinGWとMSYSを使ってこんなかんじで必要なものにチェックマークをしてインストールしていた。
まちがえた。俺が使っていたのはCygwinだ。こんなかんじでインストールする。
「パスを通す」とか言われていた時代だ。今ではインストーラがほとんどやってくれる。
Windowsのコマンドプロンプトがアホほど役に立たないので、msysCygwinのコンソールを使うのだ。
Pythonのインストールにもパスを通していた時代だった。当時はまだ2系が主流で、卒論を書く際、大学の教授から「3系は使ってもいいけど、俺は知らないからサポートできない」と言われた。
Scipyはインストールしなければ使えなかったので、「python scipy インストール」で検索して出てきた記事を参考にしてインストールしていた。これがまたエラーの連続だった。
プログラムを開発するエディタも、vim、emacsがまず候補に上がった。どちらも癖のあるエディタなので、そういうのが嫌な人はサクラエディタが推奨されていた。そして少しして登場するAtomに感動したのだ。今ではあたりまえのようにVSCodeがある。
ちなみに俺はPythonの開発ではIDLEというのを使っていた。知ってる?こんなの。
そんなWindowsユーザーを少し煽るような(Winユーザが自虐するような)、「プログラミングするならMac」という風潮があったと記憶している。そこから「どうやらMacはUnix系で、コンソール操作が簡単らしい」「文字がきれい」「Windowsでは定期実行するためのcronすらないが、Macにはある」「xcodeというのがあるからめちゃくちゃプログラミングがラクらしい」みたいなイメージがあった。
今ではWindowsも随分便利になったし、IDEやインストーラがなんでもしてくれるようになった。今では結論、「どっちでも好きなほうを使えばいい」という良い環境になった。
非常に長文なので誰も読まないかもしれないが、読んでいただければ幸い。
日本人の宗教批判は主にオウム神理教や創価学会あたりから根深くなったと自分は思っている。とにもかくにも「宗教はやばい」となり、それが「宗教的なものはやばい」となっているのではないか。たしかに新興宗教団体はやばかった。最近でも、自民党から膿となって出てきた旧統一教会の問題がある。
日本人全体で、なんとなく「宗教はやばい」というゆるやかな共通認識があると思う。
そこから「宗教について熱心に語る者は、なんとなく、やばい」とされていると思う。ごく少数の人間だけが宗教について深く調べる。多くは、ミイラ取りがミイラになることを恐れているとか、宗教的な人間とみなされることを怖がっていたり、単に無関心な可能性もある。
ほとんどの人は、まずその「ヤバい」「うさんくさい」「拝金主義」という外から見える性質に嫌悪感を感じているはずだ。実際に、古来から権力・権威・金銭などと結びつきが強いように思う。多くの人々に害を為すものは、それが宗教だろうがなんであろうが、どういう形をとっていようと敵対される。宗教に対するネガティブな意見は、おおよそこの表面に出てきた宗教のネガティブな部分についてのものが多いと思われる。
また「人型の何か偉そうにした超常の力を持ったジジイ」を幻視して「そんなやつがこの世界作ったわけないだろ」と直感的に思うのではないか。
宗教的なものがやばいの1つの例でいえば、ガチのドルオタはキモいというものがある。キモいというのは比喩的表現で、ドルオタクラスタの方には申し訳ない表現だが、周りからは理解不能なのである。アイドルという神を信仰することで「生きがい」となして自分の人生を全うしていく。しかしひとたびその信仰の前提が破壊されれば、一瞬にして生きがいを喪失する。
アイドルの推し活は「きわめて宗教的だ」と半ば冗談めいて表現されることが多いが、比喩でなくそのまま宗教といっても過言ではない。仮に江戸時代に今のアイドルの状態を維持可能な状態で放り込めることができるとすれば、瞬く間に江戸幕府を牛耳ることができるだろう。実際BTS外交などと言われるほどアイドルは脅威的な潜在能力を持っている。一向宗など目ではない。江戸の民たちはアイドルの存在を知覚することで、それに畏怖し、夢を見ることができ、人生に生きる意味を見出しやすくなることだろう。本居宣長も、古事記伝にて「それはさておいても◯◯ちゃんのかわゆしこと尊し」などと書くかもしれない。知らんけど。
宗教のはじまりはアニミズムだという。何か神聖視せざるを得ないものを発見しそれに畏怖し感動することで、その圧倒的な偉大さを見て、人はそれを「神」と名付けたようだ。
日本では現状「科学信仰」と「常識信仰」が主流であると思う(これは自分の主観による)。「科学的な権威がありさえすれば信用する」だとか「よく知れ渡っているから信用する」といったものだ。「長いものには巻かれろ」という日和見主義的な発想がそこにあるように見える。
そもそも「信じる」とは「実際に本当にあるかどうかわからないが『ある』と信じる」ことにある。
自分には本当にあるかどうかよくわからないものを『本当にある』と思い込むことを信じるという。そういう行為には、根拠など無いのではないか。少し古いが「アイドルはうんちしない」などがそうだ。
宗教が必要かどうかは置いておいて、その発生過程や宗教が果たしてきた役割は、歴史を学習すれば誰でもその関連性には嫌でも気付くだろう(重要性は別かもしれないが)。人は「たかが宗教ごとき」で人を殺し合い、憎み恨み、人生を捧げたり、幸せになったり、正しく生きようと努力したり、救われてきた。さまざまな血を流してきたのであった。これは事実である。現在の今の自分にとって宗教は全然必要でないと感じていたとしても、その自分が存在する羽目になった基盤に宗教がある。一体全体どうしてこんなものが人類の中で大きな役目を持つようになったのか。
真に必要でないのであれば、なぜこの世から抹消できないのか。たとえばガラケーは抹消されつつある。必要でなくなったからだ。しかし宗教はどうか。消せども消せども名を変えて復活しているように思う。
科学的であると自負する人であっても、古来から続く伝統的な宗教っぽいものをなんとなく忌避していて、その拝金主義的傾向や宗教の政治的利用による人間支配を見て、なんとなく嫌悪しているのではないか。
また「宗教が必要かどうか」を論じるとき、「実際になくせるかどうか」のその現実性について論じられることは少ない。宗教がなくなれば代わりのものが出てくるのみである。名を変えたそれが絶対視される。
実際にとりあえず「宗教は必要ないもの」と考えて、この世から排除することにしてみよう。つまりそれは逆に言えば「信教の自由」の剥奪である。仏教を信じてはならない、キリスト教を信じてはならないとされる。
ありとあらゆる宗教的なものは不要なので排除されなければならないとする。しかし、必要か、不要か。それは誰にとって必要なのか、誰にとって不要なのか。
宗教と宗教でないものについて、どこで、誰が、どのように、なんの権限で線を引くのか。これはもしかすると権力闘争の始まりかもしれない。受容するか・弾圧するかのどちらかを、ある人間の主観で決めることができるということほど恐ろしいものはない。異端審問のラベリング(【十分科学的でない】というラベル)を受けて生きなければいけない世の中は厳しいものになるだろう。反ワクチン派・反知性主義者が実際にそうした世の中を生きている。われわれから見れば彼らは狂っているが、彼らから見ればわれわれが狂っているのである。
宗教と科学はなんの根拠もなく二項対立されがちだが、これは一神教的な態度ではないだろうか。
つまり科学的であればあるほど宗教的でなくなるはずだという根拠のない「思い込み」があるのかもしれない。
いったいなぜ、科学的であることが正しいのだろうか。いったいなぜ、論理的であることが正しいのだろうか。これは唯物論的な立場である。いったんそういうことにしているという、あくまで仮説である。そのように考えるとうまくいっているだけなのではないか。
そして、自分にとって宗教が必要ないからといって、他人にとっても同様に必要ないとは限らない。つまり全体としては「まだ必要」というのが答えになると思う。
それから自分は、ロジカルシンキングや科学最強説を強硬に主張してその他の考え方を排除しがちな陰キャはあまり好きではない(自分はロジカルシンキングそのものや科学的思考は好きだが、論理的であることが正しいことを信じることは論理的ではない、という前提があると思うからだ)。
彼らは科学や論理というアカデミックな権威のおこぼれを欲しており、いわば虎の威を借る狐のように見える。そうした人間は、自分よりも科学的で自分よりも論理的な人間が宗教的なものを崇拝しているのを目の当たりにしたとき、考え方を転向するかもしれない。これを改宗(conversion)というのだろう。
Visual Studio Code等さまざまなIDEに組み込んでコマンド操作できるテキストエディタがある。これはVimと呼ばれ、世の中で広く親しまれている。入門はやや難しいが、Must-Haveでおすすめである。これは宗教以上に必要である。
もちろんあなたはVimを導入しないという選択をとることもできる。
こう言うと自分は旧来の宗教観を引きずっているように思われるかもしれないが、一方で自分は古来から続いておりただの慣習となっていて合理的ではない規則を、ただ自分の強権を保とうとせんがために信じている老害もまた好きではない。彼らは自分の保身を考え、自らの世界観の安定させ、外に目を向けない人間である。生臭坊主と言われる。
自分は、そうした既製品の宗教や、新興宗教の教祖というただの詐欺師をそのまま信じてしまう人は愚かだと思うが、そういうことも含めて現実でありなぜそういった事象がでてきてしまうのか、なぜ彼らはそれに縋りつくはめになったのかを単に否定することは科学的ではないと思う。それは現実を観察できていない。少なくとも彼らにとって、彼らを救ってくれるのは科学ではなかったということなのだろう。
宗教はおもしろい。とりわけ理系で哲学や文学や詩や宗教やヒトや精神や心というものから縁遠かった者ほど、大人になってから初めて知ることで、そのおもしろさに気付きやすいかもしれない。
コードの重複があるわけでもない状況で、コードを関数ごとに分離するメリットデメリットを知りたいという話ですよね。
コードの重複がある場合に関数などに切り分けていないと、同じコードを何度も書くことになり、不具合があった時にコピーされたすべての個所に変更が必要となるというデメリットがあるので理由がわかりやすいですが、重複が無いとその点が不明確ですね。
画面に収まらないサイズのコードは複数の関数に分割するのが一般的だとは思います。
理由は元増田も書かれている通り、長いと理解の限度を超えるからです。
コードは意味があるまとまりで短ければ短いほど理解がしやすいと思います。
グローバル変数を使わないようにすると、入力・出力が関数を読むだけで明確にわかるので、さらに理解がしやすいです。
また、関数に分けておけば、関数が仕様通りに動くかの確認するユニットテストも簡単に書けます。
ユニットテストでは関数がさらにほかの関数を呼び出している場合、呼び出される関数の代わりにテストダブルを用意することもあります。
分割して、複数の関数を呼び出すようにすることのデメリットは、
下手糞が切り分けるとなんでそういう切り分けになったかわからないところで切り分けられてかえって可読性が損なわれるとか、
関数の機能が拡張してより多く・あるいは少なくの情報が必要な時に関数インタフェースの変更が必要になることとか、
関数を置いているファイル内の場所を変えたときにバージョン管理システムが追っかけてくれないことがあるとか
くらいでしょうか。
いずれにせよ、分割するメリットの方がデメリットを上回ることが大半なので、大抵は機能ごとに分割して小さい関数を作り、それをメインからは呼ぶようにすると思います。
まず、関数の名前をやっている工程を表すものにすることですね。
「データの取り込み」 とか 「データの突合せ」とかを明示すると、それを呼んでいるということはそういうことをしてくれると思うので。
また、関数が何をしてくれるのかも関数のコメントとしてつけておくとよいと思います。
例えば、
filename引数で指定されたファイルからデータを取り込み、JSONフォーマットで返す
返値: JSONフォーマットされた取り込まれたデータ。例: [{'employee name': '山田 太郎', 'employee id': 1}]
例外: filenameを開けない場合はFileOpenError、JSONにコンバートできなかった場合はConvertError
みたいなコメントをつけておくと何をする関数なのかわかるので、その機能を調べたいとき以外は読まないでいいかなと。
あと、コードを連続で読みたい場合、ソースを解析してタグジャンプをつけてくれるツールやらIDEやらを使うことが普通だと思います。
これはどういう意味でしょうか?同じものを表すのに関数ごとに別の変数名を付けているとか?
もしそうだとしたら、使っているプログラミング言語の制約やプログラミング規約によるものなのでしょうか?
ある関数のローカル変数が他の関数のローカル変数に影響を与えることは無いはずなので、ローカル変数は大抵適当な名前が付けられるイメージです。
今時のプログラミング言語なら変数のスコープが関数の中にとどまるような書き方ができると思うのですが。
関数インタフェースを定義し、そこにいちいち引数を書くのが面倒というなら...まあ、それは必要税って感じがします。
そこに引数を書いておくことでこの関数が何に影響されるのかわかるので。
参考までに。
https://qiita.com/app_js/items/a78e0605af702b155efc
この記事読んだ。
Paizaの対応の良し悪しやこの人の考えや不満については今回は触れない。
一人のITエンジニア採用担当者、また同時に一人のITエンジニアとして生成系AIに対してどう触れるべきか書いておく。
まず、業務で生成系AIを利用するのは会社のルールの範囲で好きにやれば良いと思う。
問題は転職のフェーズであり、ここでは能力をチェックされているわけだから、生成系AIの回答でコーディングテスト通過です、となるわけがない。
ソフトウェア開発は複雑であり、AIは間違った回答や遠回りな回答もするわけだから、生成系AIを使うにしても結局真偽を確かめられる能力は必要だよね。
コーディングテストで生成系AIを使うというのは「私はそのような最低限の考える力も有りません」と言っているようなものなので、企業側がほしい人材とは言えない。
最近のコーディングテストサービスでは入力内容を記録しているのでコピペしたかどうかは分かる。
なので生成系AIで回答しているような場合は企業側はある程度検知できる。
もちろん誤検知もありえる。サービス(Web)上ではなくIDEなどで回答を作って貼り付けることもあるだろう。
そのため、企業はコーディングテスト通過後の面接で回答に対して深掘りすることが多い。
生成系AI回答で何も考えていない人はここで脱落する。
企業によってはコーディングテストサービスではなくホワイトボードなどでライブコーディングさせる場合もあり、そもそも生成系AIが使えないこともある。
なんというか、ネタにしか見えないんだけど。本当はできる奴がバカのフリして書いているみたいな感じしかしない。
むしろ、大学から情報系の勉強を開始して、中学ぐらいからコードを書いていましたみたいな人たちをスパッと抜き去っていく人が世の中にいるのは知っている。
どこの大学か知らんけど、大学でも大抵は実習の授業があるはずで、そこでプログラムを書くものだと思う。
10年以上前にTAしていた時にすでに学生にIDE使わせていたが、今時IDE無しでプログラミング学習させるなんて冗談だろと思う。
海外の大学などがYouTubeで講義を公開していたり、コーディングを教えるようなYouTubeチャンネルもあるから別に本で勉強する必要はないと思う。
元増田がそういうことを知らないとも思えないので、正直ネタにしか見えないなと思う。
プログラミングの勉強は全部の意味が分からなくてもとりあえず写経して、そのうちに全部の意味が分かるみたいなところがあるから、わからないことはしたくない!という人には向いてないかもな。