gallu’s blog

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

IDEについて、とか

発端はここのあたり。
https://twitter.com/ndxbn/status/771350294940692481

@gallu 多分だけど、がる師には「肌に合わない」と思うんですよ。まぁそもそもIDEがあんまり好きくなさそうかなぁと。 composerとかnpmとかで管理し、上書き保存にhookしてphp-cs-fixerした後に開発環境と同期してブラウザを更新、とかするの好きくないでしょ?


うんまぁ割と正解なんだけどw
自分でも興味深かったので「現時点での印象値」を書いてみようかなぁ、と。


端的には
https://twitter.com/gallu/status/771350997587197952

@ndxbn 「理念」としては理解も納得もできるし受け入れられるんだけど「実装と実態」みると腰が引ける、ってのはあるなぁ(苦笑

ってあたりなんだけど、かみ砕いて。


まず、一番許容可能なのは「上書き保存にhookしてphp-cs-fixerした後に開発環境と同期してブラウザを更新」あたり。
まず「上書き保存にhookしてphp-cs-fixer」は、おおむね許容可能。「上書き保存にhookして」は100%許容可能で、あとはphp-cs-fixer。
単純に「おいちゃんのデフォが、PHP CS Fixerの標準とちょっと違う」ので。「設定を変えるのか」「おいちゃんを変えるのか」でちょいと悩むくらいw
いやこれが「現場の仕事」なら躊躇なくPHP CS Fixerにも合わせますが、個人のコードだと「俺のモンだしなぁ」ってのもあり。とりあえずおいちゃんは蛇なのだ。ラクダぢゃないのだwww


多分「蛇をラクダにする」のは、個人プロダクトとしては「絶対に嫌」なんだけどw*1
括弧のつけ方だのインデントの切り方だのは…どうすっかなぁ? レベル。
まぁ必要になってから考えましょw


composerとnpmについては「理屈はわかるが根底と実装がお好まない」の感じ、ってのが端的な見解。


どちらも「パッケージ管理システム」って前提で。
いや実際「インストールとupdateと一覧の作成と削除、依存関係の管理」が出来るのは、色々と便利だなぁとは思うのですが(実際、「雑に」サーバを作るときは、おいちゃんもyumとか使うし)。
少しド直球に剛速球を投げると「そもそも、依存関係の管理が必要な時点で、設計の一歩目の失敗があるよねぇ」ってのは、ぶっちゃけ思います。


疎結合どこいった?


まぁ言っても詮無い話ではあるのですがね。
ただ「マイナーどころかメンテナンスバージョンまで細かく指定しないと動かない」とか見ると、些か疑問符が付くところではございます。


その辺を乗り越えて考えてみると…次にどうしても気になるのが、composerなりnpmの実装。
もうちょっと正確には「インストール対象をちゃんと精査してるか? 出来るか?」問題。


「複雑な依存関係を自動で解決したい」ってニーズがある以上「誰かが作ってくれた依存リスト、に依存する」のはある意味正しいのですが。
そこに「悪意が入り込んできた」場合の精査って、誰がするんでしょ? ってあたり。
懸念じゃなくて、実際に、npmにしてもcomposerにしても起きてるわけだし。


もちろん「気づいてみんな大騒ぎして自浄作用が働く」ってのは可能性としてあるし実際働いている(と思う)んだけど。
ただ「誰かが騒ぐまで気づかない」ってのはどうなんだろう? ってのと、「そこに至るまでにどれくらいの被害が出るんだろう?」と。


その辺を考えると。
「composerないしnpmを使わないとインストールできない」ものであればやむなし、なんだけど。
「使わなくてもさほど大きなコストがかからずにインストールできる」んなら、ちゃんと依存関係を自力でひも解いた上で「自力でやる」ほうが、何かあった時に「アンテナにひっかけやすい」んじゃないかなぁ、とか思ってみたりするわけなのでございます。


ん…おいちゃん的には「glibc」の話が、これに少し近い感覚があるのかもしれない。
真っ当にLinux触ってる人間(≒カーネルコンパイルしたりしている系統の人種)であれば。「glibc ライブラリの脆弱性」とか見るととりあえず逆毛が立つと思うのですが(苦笑
「なんとなく手順通りyumでインストールして手順書通りの作業をしている」だけの人だと、「glibc? 聞いたことないなぁ」ってなりそうな気がしているっていうか実際何度か耳にして正直耳疑ったw


その辺を考えると。
いや一つの回答としての「composerとnpmを、ちゃんと精査した上で使う」ってのはより正しいと思うんだけど。
「そこまでコスト払ってらんないしなぁ」ってなると「じゃぁ一端使うのは見送るか」ってなりがちなんだなぁ、と。


なので。
composerとnpmについては「もうちょっと見通しよくならんかなぁ」とかほんのり思ったりするのですが…まぁ使うとしたら「がっつり調べてから使う」から、結構な調査コストかけるんだろうなぁ(苦笑


ちなみにIDEの話が全然出てないのでちょろっとだけ書くとw


すげぇ単純には
・なくても書けるけどあったほうが書くのがはかどる可能性が高いよねぇ


を前提に
・重たいとか落ちるとか不安定とかは論外なのでそーゆーIDEならいらん
・おいちゃんは「リモートベース」なので、リモートファイルがいじれない子はちょっと使えない
・入力補助は「慣れ」の問題なので不問
・「たくさんの機能」は、うれしい可能性もあるけど邪魔な可能性もある:せめて「機能を切れる(削除できる)」と、重さが軽くなるのでベター


って感じ。
ただ根底に「そもそも、コード書く時間そのものって、システム開発全体からするとそんなに大ボリュームでもなくない?」ってのが少しあるので。
そんなに、IDEについて大きくこだわったりはしないかなぁ。


現場からは以上です。

*1:人間って「生き死にに関わらない些細でどうでもいい」事象に対しては、割と「決定的かつ致命的なこだわりがある」ものざますw