Homebrewでインストールしたコマンド、どう使っていますか
HomebrewでPythonとVimをインストールしたけど使い方がわからない
経緯
macOS High SierraでPython3を使いたかったのですが、pyenv/virtualenv、anaconda/conda(miniconda)とかあとから絶対面倒になると思ってシンプルな方法がないか探していました。
(実際、会社のMacはpyenvがbrew管理になっていない頃から使っているのでbrewに怒られたままgit cloneしたものを使い続けている)
そうしたらbrew install pythonでPython3がインストールされるようになっているとの情報を見つけ、早速インストールしてみました。
Pythonがデフォルトにならない
インストールが終わってもpythonはシステムデフォルトの2.7.10が使われてしまい、Homebrewさんに聞いてもbrew info pythonを見てね、といわれinfoにはここにインストールされてますよ、というだけ。
Homebrew-and-Pythonのページ
Unversioned symlinks `python`, `python-config`, `pip` etc. pointing to
`python3`, `python3-config`, `pip3` etc., respectively, have been installed into
/usr/local/opt/python/libexec/bin
Vimもデフォルトにならない
VimもHomebrewからインストールしてみました。
デフォルトのVimではヤンクをクリップボードに保存できなかったのがとても不便でしたので。
$ /usr/bin/vim --version | grep clipboard
-clipboard +job +path_extra -toolbar
+ex_extra -mouse_gpm -sun_workshop -xterm_clipboard
ちなみにバージョンは8.0
$ /usr/bin/vim -h
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Nov 29 2017 18:37:46)
でもVimもデフォルトでviもvimもシステムのコマンドを使ってしまう。
$ brew info vim
vim: stable 8.1.0250 (bottled), HEAD
Vi 'workalike' with many additional features
https://www.vim.org/
Conflicts with:
ex-vi (because vim and ex-vi both install bin/ex and bin/view)
/usr/local/Cellar/vim/8.1.0250 (1,439 files, 23.4MB) *
Poured from bottle on 2018-08-17 at 16:48:49
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/vim.rb
ちょっとぐぐったところでは、/usr/bin/vimをmvして置き換えてしまえ、という記事が、、、
そのとおりにすれば使えますが、なんとも気分的にそれはイヤだなーと。
きれいな置き換え/もとに戻す方法はないんでしょうか。
対処
Homebrewさんのドキュメントを探したのですがよい方法は見つからず。。。
結局、ユーザーの.bash_profileにパスをいれてひとまずのところはきちんと使えるようになりました。
※※
Vimはbrewでインストールした先に「vi」コマンドがないことに気付かず、少しハマりました。
vimと打てばbrew管理の、viと打てばシステムのコマンドが呼ばれるという事態になったので
/usr/local/Cellar/vim/8.1.0250/bin
に
vi -> vim
を作りました。
※※
システムにデフォルトインストールされているコマンドを、Homebrew管理のコマンドへきちんと置き換えるにはどうしたらよいのでしょうか。。。
参考:私の~/.bash_profile
PS1='[\t \W] '
# Homebrew Python
PATH=/usr/local/opt/python/libexec/bin:$PATH
iMacを買ってみた
もう素晴らし過ぎて快適な夜になりました。
これからいろいろセットアップしていかなければならないけれど、
もう楽し過ぎて朝起きるとか帰宅するとか楽しみになってしまいそう。
日頃の楽しみって大切だと思いました。
ポテサラの真理
久しぶりにポテトサラダを作った。
レシピを見ながら、ベーコン買わなきゃなとスーパーに行ったり。
そこでふと思ったのが、ポテトサラダのレシピには「フォークの背でじゃがいもを潰し」という文面が当たり前になっているということ。
なぜ「フォークの背」なんだろう。
スプーンではいけないのか、確かにスプーンかフォーク以外のカトラリーでは「潰す」という行為には適さないとは思うのですが。
なぜ「スプーンの背」ではいけないのか。
そんなわけでスプーンの背を使ってじゃがいもを潰そうとしてみました。
結果、
「じゃがいもが逃げる」
スプーンの背では、丸みがフォークよりあるということもあってつるんつるん逃げる。
フォークで潰すときはうまいこと潰れてくれる。
丸みよりも、フォークの刃?爪?の隙間に圧力をかけられたじゃがいもの逃げ道ができているのが「逃げない」原因のようだった。
外に逃げないように、こっち側(潰す力をかける側)に逃げ道を残しておくのがうまく潰れてくれるキモなのか。
フォークできれいにマッシュされていくポテトさんを見ながら、
人間も同じなのかもしれない、
逃げられないようにある程度の反抗を許し、弱いところや欠陥を見せつつ支配すると
支配される側はそのコミュニティから逃げ出す(あるいは見限る)ことをせずに
上層の不備不出来を摘発し、自身の有用感や下剋上など自己実現欲求を満たす過程でそのコミュニティにとどまり続けるのかもしれない。
手の届きそうな敵には頑張れば戦える、そう思わせることがコミュニティを活発たらしめ続ける麻薬のようなものなのかもしれない。
今日は、ポテサラにはツンとこないぐらいお酢を混ぜると、とても美味しくなるんだということを学びました。
集中する
時間がないと考えると、いろいろなものを知らなければと焦ってしまう。
ひとつひとつ集中して潰していった方がたぶん効率が良いと思う。
TODOリスト、優先度をきちんと計画して、プライベートでも自分を管理してみたい。
なぜ引数はArgumentと呼ばれるのか
背景:引数とは
プログラマにとっては当たり前の知識ですが、関数(メソッド)へ呼び出し元から渡してあげる変数のことを引数といいます。
例えば、足し算する関数を呼び出す際には、AとBを足し算した結果をくださいな、という要領でAとBを引数として渡して、その答えを関数から渡してもらうことになります。
問題:引数とは英語でArgument
引数は、英語ではArgumentと呼ばれます。
プログラミングを初めて3年ほどになりますが、引数とArgumentという言葉が同じものを指すのか、と疑問に思いました。
WeblioによるとArgumentは高校2年生あたりで学習する単語のようです。
上のリンクにでは、主な意味として「(事実や論理をもとにして行なう)議論、論争、口論、議論、主張、言い争い、(賛否の)論、論拠、論点、言い分」とあります。
どうして、このArgumentという単語が引数のことを指すのでしょうか。
議論?主張?引数の役割に当てはまるとは思えないのですが。。。
結論:Argumentの原義
Weblioでは「引数」という意味はコンピューター用語辞典を出店にする箇所で記載されていました。
以下、引用です。
argument
原義は「論拠」とあります。
なるほど、私の知っていた意味は原義の派生であったわけですね。
そうすると、関数が何かしらの処理をする「論拠」としてArgumentはしっくりきます。
Weblioが掲載している出典がどれほど正しいかはわかりませんが、なんともするりと納得してしまいました。
満足してしまって深く語源を調べる気になれないので、次の機会にします。
余談:言語の観点の違い
日本語の「引数」は、「引く」という漢字から「引用」、「引き渡す」という印象があります。つまり、関数を呼び出す側から見た言葉遣いに思えます。
英語の「Argument」は、「論拠」、「他の量を導出するもとになる量」と考えると、関数が戻してくれる値のことや、関数そのものの根拠となるものという印象を受けます。こちらは呼び出し側よりも、関数から見た言葉遣いのように私には感じられました。
自然言語はそのコミュニティの文化、社会を如実に表していますが、プログラミング用語でこういった文化の違いを発見したのは今回が初めてでした。
調べてみてよかったと思えた疑問でした。