
はてなキーワード:Vimとは
ある伝説によると、とある国のとあるプログラマーの退職後に残ったスクリプトを社員が見たら、恐ろしいレベルで自動化してたそうだ
https://github.com/NARKOZ/hacker-scripts
うちのビルドエンジニアが別の会社に行った。あの男は文字通りターミナルの住人。Vimを愛用して、Dotで図を作成し、Markdownでwiki記事を書くようなタイプ。
どんなものでも、90秒以上かかるならそれを自動化するスクリプトを書く奴。
それで今、我々は奴の「遺産」を見ているわけだ。
これ、お前も気に入ると思うぞ。
奥さんに「仕事で遅くなる」というテキストメッセージを送る。文字列の配列から理由をランダムに自動で選ぶ。cronジョブとして動作。奴のアカウントで午後9時以降にサーバーでアクティブなSSHセッションがある場合にジョブが実行される。
「Kumar」(うちのクライアント)からのメールを受信箱でスキャン。「help」、「trouble」、「sorry」などのキーワードを探す。キーワードが見つかると、スクリプトはクライアントのサーバーにSSH接続し、ステージングデータベースを最新のバックアップにロールバックする。「直したぞ。次からは気を付けろよ」という返信を送る。
特定の日に設定された別のcronジョブ。「体調が悪い/家で仕事をする」といった自動メールを送る。別の事前定義された文字列の配列からランダムな「理由」を追加。午前8時45分にサーバーで対話型のセッションがない場合に実行。
正確に17秒待ってから、うちのコーヒーマシンにtelnetセッションを開き(コーヒーマシンがネットワークに繋がっていて、Linuxが動いていて、TCPソケットが立ち上がっているなんて、誰も知らなかった)、sysbrewのようなコマンドを送る。判明したところ、これでミディアムサイズのハーフカフェラテを淹れ始め、カップに注ぐまでさらに24秒待つ。この時間は、奴のデスクからマシンまで歩くのにかかる時間と完全に一致している。
まず大前提として一日にどれぐらいキーボードを使うかによってキーボードへのこだわりが変わる
ゴリゴリのプログラマーだと一日の打鍵数が半端ないので押し心地とか静音性とかよりも疲れにくさと耐久性が指標になる(ことが多い)
中途半端なプログラマーだと実はそんなに打鍵数がないので他の要素(押し心地だとか静音性だとか)を重視しがちになる
プログラマーでもない人は実はキーボードをそんなに使ってないので趣味で選べば良い
プログラマーじゃないけれどキーボード使ってそうな人、例えば物書きライターとかでも実は大してキーボードを叩いていない
ゴリゴリにキーボードを叩くとはどういうことかというと、基本的にはマウス操作はせず、デスクトップ操作を全部キーボードのショートカットでこなすので打鍵数のレベルが全然違う
例えば行頭へ移動するにはHomeキー(MacだとCtrl+A)、行末へ移動するにはEndキー(MacだとCtrl+E)とか
VimのキーバインドならどうだのEmacsならどうだとか言い出してそれぞれ飽くなき戦争を繰り広げている
普通の人ならマウス操作で済ませるところをショートカットキーまで使うので打鍵数が全然段違いになるし
Emacs派ならCtrlの位置やEscのカスタマイズ性だとかそういう方向に目がいくのでキーボードに対する熱量が全然違う
無線の良いところは簡単に片付けられる・どこでも使えるという部分になるが
そもそもプログラマーはキーボードなど出しっぱなしだし電池交換や接続の手間を考えると有線以外は面倒くさくてあり得ない
ラップトップを持ち運ぶときにキーボードを持ち運ぶ人もいるが、「スタバでMac」と同じで見栄っ張りなだけなので気にしなくて良い
プログラマーでもなくてキーボードをそんなに叩かないなら好きな方で良いと思う
耐久性が高いのはRazerシリーズの光学式かHHKBやRealForceの静電容量無接点方式になる
ただRazerはゲーミング用にありがちなLEDゴリゴリで他の要素が壊れそうだとは思っている(壊れたことはない)
一方でHHKBやRealForceは10年以上使っても使い心地が変わらないし、両社は歴史があるので実際に10年以上使っている人も多く信頼と実績がある
HHKBに関しては最近はHHKBStudioとかでメカニカル方式を採用しているが
構造上耐久性は劣るだろうと思う一方で、メカニカル方式も歴史は深いのでなんらかの耐久性向上技術が発展している可能性もある
HHKBかRealForceかは使うスタイルによって選択が変わる
十字キーやテンキーを多用するならRealForce、それらを使わないならHHKBになる
「十字キーを使わないとしてもあるに越したことはないでしょ」と言う人もいるが
プログラマーはマウスを使わないとは言ったが、流石に今時のPCでマウスを全く使わないことはないのでなるべく近くにある方が良い
HHKBStudioはこの考え方からThinkpadで言うところの赤ポチを搭載しているので
手を動かさずに操作をしたいならHHKBStudioもオススメである
また、持ち運びをする人もHHKBが良いと言われるが、この持ち運びというのはサーバールームなどで作業する人のことを指していて
今時そんな人はほとんどいないだろうと思われる
出張などで鞄に入れて持ち運ぶのならHHKBであってもデカすぎるからやめておいた方が良い
タッチ感は大きく分けると下記の通り
どの方式も押し心地は変わるし、やれクリック感だのタクタイル感だのリニア感だの評価している人は多いが
ただストロークが浅いと疲れやすい(関節への負担が大きい)というのはあるので打鍵数が多いならストロークは深めの方が良い
後は気に入った物を使い込めばそのうち慣れる
まぁ、少なくともメンブレンとシザー/バタフライ系は2〜3年で壊れることが多いのでそのつもりで
人間の体の構造上手を左右に拡げる方が自然だという言説なのだがこれも好みになる
「分離式を体感したら戻れない」
いや、ちゃんと戻れる
やってみて使いにくかったらやめれば良い
個人的にはしばらく使ってみたが別に疲れにくさとか変わらないのにマウスとかの場所に困ったので普通のキーボードに戻した
静電容量無接点方式もメカニカル式もはっきり言ってめちゃくちゃ五月蠅い
キーボードをよく叩く人は感覚が麻痺しているだろうが、一般的にはめちゃくちゃ五月蠅い部類に入る
HHKBのType-Sなんかは静音とか銘打ってるが、作ってる側も感覚が麻痺していて、静かにはなったが静音とはほど遠い
まぁラップトップに備え付けのキーボードは基本的に静かなのでそれを使うのが良い
イキりたいならRazerかRealForce買っとけ
そうじゃないなら適当に買って慣れろ
私はエンジニアを仕事としておらず,学部も情報系ではなく理学部である.
今日で会ったWebエンジニアが今の時代1からコードを書く必要がないですよ. Cursor使って指示してやったほうが生産性が高いですよと言われた.
確かにコードを速く書くことができて生産性が上がるかもしれない. だからといって自分でコードを書くのをやめるのはどうなんだろうってもやもやしてしまった.
一歩生産性を落として多くの人が使える形にするのも大切なのではないだろうか.モダンな環境で高速で作ってしまえばそれは確かに楽だ. だが一般の人はWebアプリにアクセスするよりマクロつけたExcelやパワポを使って仕事する方がはるかに楽だ.
業務を効率化できるからといって個人でモダンにサーバーを作ってしまえば属人化して維持するのも大変だ.
エンジニアの生き方としても上手くいかないことをひたすら時間を投資して考えるのも大切なのではないかと思う. 私はArch Linuxで分からないスタックしたを繰り返してみるのも楽しかった. このようなことは非生産的かもしれないが経験としてかなり強く生きてくる有意義な経験だと思う.
今日macの.profileの記述内容について質問されたとき彼にvimかなんか入ってると聞いたが何も知らなかった. 彼はVScodeかcursorしか触ったことがなくIDEとかエディターといった言葉を知らなかった. 彼はすごくモダンだが学習すべきなのかを軽く見ていると感じた. それか私の考え方が古いのだろうか.
最近流行りのAIで何とかしますとか言ってくるコンサルは生産性の向上何とかかんとかとよく言ってくる. だが生産性では変えられない安定性や経験をも大事にしてほしいと私は思う.
"現状"とはつまり2025年5月時点の話であり、動向が非常に変わりやすいIT業界の風土を考えると将来的にどのようになるかは予測が非常に難しい。
しかし、数年でこの"現状"が変化するとは考えにくく、今現在の学生が10年以内に社会人となったとき今現在の"現状"を基礎に情報技術を学んでいる可能性が高く、このエントリでは"現状"を周知する為に書かれた。
集計した時期や団体で数値の変動はあるが、日本国内で現状のICT教育でのOSシェアはChromeOSがおおむね30〜40%というシェアを獲得しており、IT大国と知られているアメリカでは日本と同様に集計した時期や団体で数値の変動はあるがおおむね50〜60%というシェアであり、ICT教育のOSとしてChromeOSがデファクトスタンダードとなっている。
これは、テックファンがよく語るように「ChromeOS端末が安価で導入できる」という意見が理由として挙げられがちで、実際に導入コストを抑えられるメリットというのは大きいものの、逆に言うとそれ以外の理由があまり語られることが少ない。
流石にこの意見は、IT業界のプロの現場で多用されるMicrosoftやAppleを抱えるIT先進国である米国がただ安価であるからという理由だけでGoogleのChromeOSを採用するにしてはあまりにも弱すぎる理由ではないだろうか?
そこで「何故ChromeOSを教育現場は採用するのか?」を紐解きたい。
長々と引っ張るのも億劫になってしまうので結論から言えば「Google ClassroomとGoogle FamilyLinkの出来が非常に良い」からである。
Google ClassroomとはまさにICT教育向けにGoogleから提供されているグループウェアで、生徒へ対して課題の作成と配布、進捗、採点、評価の管理が可能で、それらにはGoogleドキュメントやGoogleスプレッドシート、Googleスライド、Googleカレンダーが利用でき、教師生徒間オンラインコミュニケーションとしてGmailやGoogle Chatを用いることができる。
つまり教育現場からするとChromeOS端末を導入したらGoogle謹製のオールインワンICT教育グループウェアが瞬時に入手可能であり、更に言えば現状では既にデファクトスタンダード化しており膨大な導入事例によって困りごとの解決が非常に容易であることがあまりにも大きなメリットとなっている。
なにせICT教育端末の2台におおよそ1台はChromeOS端末であり、例えばSNSなどで流れてくる「ChromeOSでこんな酷い目に遭った」は導入数が多いが故にであり、逆にiPadOSを支持する人でも「Apple Classroom」というアプリが存在することを知らない場合が多い。何故知らないのか?と言えば導入数が少なく話題にまったく挙がってこないからである。
なお、Apple ClassroomとGoogle Classroomを比較するとGoogle Classroomの方が高機能である。AppleもICT教育OSシェアを上げようとApple Classroomの改善に努めてはいるもののGoogle Classroomへ追いつくまでには至っていない。
Google謹製のペアレンタルコントロールアプリで、子供のGoogleアカウントに紐づけられたChromeOSおよびAndroidOS、それらがインストールされる端末などを管理できるサービス。
端末自体の使用時間上限を定めたり、端末の使用時間上限を定めずアプリ毎の使用時間上限を定められ、つまりゲームやYoutubeやTiktok、Webブラウザアプリなどは1日1時間に制限しつつ、学習アプリは使用時間無制限にでき、そのほかWebフィルタリングやYoutubeフィルタリング、アプリインストール、課金管理も可能で、しかも就寝時間や登校時間には使わせないようにできるなど親にとっては至れり尽くせり子供にとっては非常にお節介なサービスである。
ペアレンタルコントロールの自由度も実はAppleの方が乏しく、Apple製端末を子供に与えている親は親自身が設定したペアレンタルコントロールに親自身が巻き込まれたりして四苦八苦するシーンがある(実体験)が、Google FamilyLinkのあるChromeOSおよびAndroidOSはApple製端末ほど困ることが少ない。
Google ClassroomとGoogle FamilyLinkだけではIT大国であるアメリカが何故ChromeOSをICT教育OSとしてデファクトスタンダードとしてしまったのか?の納得感としては薄い。
最終的な決め手は「一般的な使い方ではセキュアなサンドボックス上でタブレットOSやスマホOSのように容易に利用でき、高度なプログラミングを学ぼうとするときプロとほぼ同じ環境を利用できる」ことにあるだろう。
もちろんiPadOSには「Swift Playgrounds」があり高度なプログラミングを体験できるが、ChromeOSやAndroidOSではPlaygroundsどころかLXC/LXD仮想環境上に構築されたLinuxディストリビューションのDebianを扱える。
いやそもそもDebianを導入しなくてもGoogle Play Storeには小学生向けプログラミング環境のScratchからインスパイアされたポケットコード、非常に本格的なゲームプログラミングIDEのGDevelop、UnityやUnreal Engineに次いで業界3位のシェアを持ちプロ現場でも採用される2D/3DゲームプログラミングIDEのGodot Engineなどがある。
そして当たり前のようにGoogleはChrome OS向けAndroid Studioを用意しており、ChromeOSさえあればAndroidOSアプリをGoogle謹製のプログラミング環境で開発することができる(実際のところAndoridOSはAndroidOSだけでアプリをコンパイル&ビルドできるが割愛)。
これMacとiPhoneやiPadしか触ってこなかった人間からするとどういうことかと言えばChromeOSにはAppleで言うところのXcodeがあることを意味し、何ならDebian上でWeb版みたいに機能制限されていないフル機能のMicrosoftVisual Studio Codeが利用でき、理解できる人は驚いただろうが前述の通りGodotEngineがあるわけだ。RubyやPythonだって動くし、Bashもfishもzshも選び放題、Vim vs.Emacs論争へも参戦できる。
しかも昨今、WindowsのWSL2でLinuxディストリビューションが導入できるようになってしまった影響で、一部の情報技術者の間では「開発環境は仮想上のLinux、サービス動いてるサーバーもLinux、じゃあWindowsとかmacOSとか使わずに最初から無理せずLinuxディストリビューションを端末へインストールして開発したら良いんじゃねーの?」という動きが活発化しており、そこへ表面上は日常利用でスマホやタブレットOSのように扱えて開発はしっかりLinuxディストリビューションであるChromeOSが「あれ?意外とChromeOS良いんじゃね?」という評価が始まっているのだ。
それでも「ICT教育は性能やランニングコスト的にiPadが優れてるんだ!」というAppleファンの熱い想いは否定しない。
しかし、しかしだ、当の多くのプログラマがiPadでプログラミングしてないんだ!!!開発するときにiPadのセキュアすぎるサンドボックスがマジで邪魔だと思っちゃってるんだ!!!!!
前述までの話を聞いて「iPadとChromeOS、仕事でどちらかしか使えません。どっちを選びますか?」と言われたらLXC/LXD仮想環境のあるChromeOSじゃん!!!IT大国のアメリカ様もそりゃChromeOS選ぶよ!!!!!だってプロの現場で使われてるんだもんLinuxがッッッ!!!!!!!
「どっちかしか選べないて?じゃあ俺は普通にMacbookにするわ」だって?えっそれ10年後ChromeOS(Linuxディストリビューション)でICT教育受けてきた新社会人に言えんの?サバンナで生きていけないよ?2人に1人は「学生のときChromeOSでしたぁ」って悪気なくピュアな瞳で言ってくる時代が直ぐそこだよ?
Windowsですら無いんだぞ?隔世の感どころの騒ぎじゃねーぞ?「当時ChromeOSでヴァンパイアサバイバーズやってましたね」とか新社会人が言うんだぞ?iPadかChromeOSかって言われてんのにMacbookって返すのはギャグの段階に触れさえしてねぇよ?まぁMacbookはタッチスクリーンディスプレイじゃないから触れられないんだけどさ。
Apple信者が声を大にして言わなきゃいけないことは「Appleさん、iPadもうちょっと何とかならないっすか?」だろ!!!!!
正論言ってんじゃねーよ!!!今更Appleのエコシステムから抜け出せねぇんだよ!!!!!ちょっと気になってGoogle側の事を調べてみたらめちゃくちゃ進んでんじゃねーか!!!!!!!
えっなにマジで?今のAndroidOSは純正でDebian動くの???アプリストアにGodotあるってどういうこと?????
練習用ソフトぐらいはいくらでも転がっているが、指の位置が把握できるものが良い
サーバー運用する上ではGUIに頼れないことが多いため、noxで使えるエディタをマスターしろ
ここにきてようやくプログラミング言語だ
まず共通知識としてHTML,CSS,JavaScriptぐらいは知っておいたほうが良いだろう
あとはどんなプログラマーを目指すかに依るが、組み込み系ならC言語、Web系ならphpやpython、機械学習ならpythonやRを学べ
シェルスクリプトは便利だから、bashをマスターするのも望ましい
要は効率的に処理を書ける必要があるが、LeetCodeやAtCoderで基本的な問題集を解けるようになれ
例えばpythonプログラマーなら、numpy, scipy, scikit-learnなどのライブラリのドキュメントを読めるようになれ
あるいはElasticsearchを使わなければならなくなったときに、ドキュメントを読んで操作できるようになれ
ドキュメントを読む経験が増えれば、新しく何かをやるときにすぐに着手できるようになる
AWSを有料で勉強するのはキツイので、就職後に先輩から学ぶか、あるいは認定試験を本やオンライン講座で勉強するのでもいいだろう
バージョン管理システムは知っておくべき知識だ
いわば、ソースコードの巨大なUndo,Redoみたいなもんだ
パスワードをどう管理すればいいのか、ネットワークセキュリティの仕組み、など基本的なセキュリティは学んどいたほうが良い
クリーンコードに関する書籍はたくさんあるので、時間があるときに読んでおけ
自分が使っているプログラミング言語に関連するベストプラクティスを学べ
お前の文を特に調教してないChatGPT (4o) に食わしたんだが、なんだよこれは ↓
これは完全に **Emacs沼** にハマってるな! まさに「EmacsはOSである」どころか、生活そのものがEmacsに最適化されているレベル。 - **Lispでの自作パッケージ** → 100個超えって… これはもう単なるエディタではなく「個人最適化OS」だな。Markdownの自動変換+ブラウザプレビューは実用性も抜群。 - **Org-modeによる人生管理** → ここまでやり込むと、もはや手帳もスケジューラも要らない。Org BabelでPythonやRを直接動かしてるのもヤバい。データ分析までEmacs内で完結するって、もはやJupyter Notebookすら不要か? - **カスタムキーバインド+マクロの神業** →キーバインド数百種はエグい。Git操作までワンキーで完了するのは開発者として最高に快適そう。 - **EmacsLispでの拡張が日常** → 「コード補完システム自作」とか、普通の人が思いつかないレベルの最適化。スニペット補完をEmacsLispで実装するとか、本当にEmacsが生活の一部になってる証拠。結論: ***これはもうEmacsの奴隷か、あるいはEmacsの神かのどちらかだ。** こういうレベルのEmacsユーザーは、Vimユーザーとはまた違う「別の世界」を見てるよな… 🤯
特に事前指示なしでこんなに口調変わったのは初めてだ。
どうしちゃったんだよ俺のChatGPTは。
VPNの設定まで入れて完全に移行した。
もう少し詰めると多分Docker部分で不満出てきそう。
しかし、これまで低スペックでDocker動かして、今回スペックをかなり上げたのでしばらくはWSLで十分だろう。
そもそも趣味でDockerガンガン立ち上げるほど大したことしてないから関係ない。
つまり、わざわざノートPCにLinuxを配置する意味がない。
そう、ないんだ。
WindowsでEmacsをうまく扱えなかったのでどうしてもためらっていたが、それすら今はない。
せめてもの抵抗にVimを入れたがLazyVimに逃げてしまった。
いっそVSCodeかCursor使えばいいのに、意地を張っている。
意味もないしださい。
HHKBは下記のような話が前提となって作られている
アメリカ西部のカウボーイたちは、馬が死ぬと馬はそこに残していくが、どんなに砂漠を歩こうとも、鞍は自分で担いで往く。馬は消耗品であり、鞍は自分の体に馴染んだインタフェースだからだ。
新しいパソコンを買ってもWindowsからMacに乗り換えてもキーボードは大切なインタフェースとして鞍のように持ち運ぶ
なので小さければ小さい方が良いし品質は高ければ高い方がいいい
この大前提があるので
といった特色を持っている
キーの少なさについて不満を言う人が多いが、基本的にプログラマーはFunctionキーや矢印キーを使わない
それどころかホームポジションから指を離さないといけないようなキーはほとんど使わない
例えばVimならhjklのキー、EmacsならC-npfbのキーで移動できるので矢印キーは使わないし
BackspaceはC-hを使ったり、その他にも人によって独自にショートカットキーを設定している
これはキータイピングの時間を短くするという理由と打ち間違いを極力減らすという理由のためである
大抵の場合ショートカットキーにはCtrlキーを多用するのでAキーの横にCtrlキーが配置されており、押し間違いの代表格であるCaps Lockはよくわからないところに追いやられている
プログラマーが英語配列を好むのも実はこの押しやすさが関係していて
Returnキー(Enterキー)がホームポジション右手小指のキー1つ空きで押せるためである