HIDARI日記(右)

そのときどき興味ある技術を中心にだらだら書いてます。内容は個人の見解であり、所属する企業を代表するものではありません。

「いちばんやさしいGit&GitHubの教本」を読んだ

「いちばんやさしいGit&GitHubの教本」の献本をいただきましたので読んでみました。 @syobochim さんありがとうございます!!

結論から言うと、Git触ったことない人は、騙されたと思ってこれを読んどけ、という内容でした。

良かった!

  • Git入門以前と言える「バージョン管理とは」から説明されている
  • 単なる操作方法の説明にとどまらず、Gitの考え方(ワークツリー・ステージ・Gitリポジトリの違いなど)から解説している
  • 「いちばんやさしい」というタイトルの通り、MacWindowsそれぞれのインストール方法からめちゃくちゃ丁寧に解説されている
  • CLIでの操作方法に絞っている(硬派!)
  • プルリクエストを利用したチーム開発のやり方をシナリオベースで説明している
  • コンフリクトの解決方法を丁寧に説明している
  • それぞれの章が適度にコンパクトに纏められていて(休憩をはさみやすいので)ダレずに読める

Git&GitHubでの操作の原則みたいなところは本書でカバーできていると思います。 会社に一冊用意しといて、新人さんが来たときにスッと差し出すと良さそうです。

次のステップは

もちろん、実際にギョームで使うとなると本書では語られていない操作が必要になると思います。 そんなときは Gitポケットリファレンス を机に置いておくといろいろ捗ります。

また更に深くGitを理解したい場合は 実用Git を読むと理解が進むでしょう。

それでは良いお年を。

【改訂新版】Gitポケットリファレンス

【改訂新版】Gitポケットリファレンス

実用Git

実用Git

pyenv installが失敗する件(BUILD FAILED)

長年使ってきたMacにpyenvをインストールして pyenv install したとき以下のエラーが発生した。

pyenv install 3.6.4
python-build: use openssl from homebrew
python-build: use readline from homebrew
Downloading Python-3.6.4.tar.xz...
-> https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz
Installing Python-3.6.4...
python-build: use readline from homebrew

BUILD FAILED (OS X 10.13.3 using python-build 20160602)

Inspect or clean up the working tree at /var/folders/bb/0gd8kc6s00q4fr47bvxst2r00000gn/T/python-build.20180317171610.14320
Results logged to /var/folders/bb/0gd8kc6s00q4fr47bvxst2r00000gn/T/python-build.20180317171610.14320.log

Last 10 log lines:
  File "/private/var/folders/bb/0gd8kc6s00q4fr47bvxst2r00000gn/T/python-build.20180317171610.14320/Python-3.6.4/Lib/ensurepip/__main__.py", line 5, in <module>
    sys.exit(ensurepip._main())
  File "/private/var/folders/bb/0gd8kc6s00q4fr47bvxst2r00000gn/T/python-build.20180317171610.14320/Python-3.6.4/Lib/ensurepip/__init__.py", line 204, in _main
    default_pip=args.default_pip,
  File "/private/var/folders/bb/0gd8kc6s00q4fr47bvxst2r00000gn/T/python-build.20180317171610.14320/Python-3.6.4/Lib/ensurepip/__init__.py", line 117, in _bootstrap
    return _run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
  File "/private/var/folders/bb/0gd8kc6s00q4fr47bvxst2r00000gn/T/python-build.20180317171610.14320/Python-3.6.4/Lib/ensurepip/__init__.py", line 27, in _run_pip
    import pip
zipimport.ZipImportError: can't decompress data; zlib not available
make: *** [install] Error 1

原因はxcode command line toolsがインストールされていなかったため。

xcode-select --install

でインストールしてやれば解決する。

このあいだOSをHigh SierraにしてXCodeを新しくしたので、そのタイミングで消えてたらしい。

使い古したMacで新しく何かしようとすると、色んな所に落とし穴がありますね。

nodebrew installが失敗する件

長年使ってるMacにnodebrewをインストールした際、初回の nodebrew install で以下のエラーが発生した。

nodebrew install-binary stable
Fetching: https://nodejs.org/dist/v8.10.0/node-v8.10.0-darwin-x64.tar.gz
Warning: Failed to create the file 
Warning: /Path/to/.nodebrew/src/v8.10.0/node-v8.10.0-darwin-x64.tar.gz: 
Warning: No such file or directory
                                                                           0.0%
curl: (23) Failed writing body (0 != 1017)
download failed: https://nodejs.org/dist/v8.10.0/node-v8.10.0-darwin-x64.tar.gz

/Path/to/.nodebrew/src/ にファイルをダウンロードできないため、インストールに失敗している。

そんなときは nodebrew setup を実行する。

nodebrew setup
Fetching nodebrew...
Installed nodebrew in $HOME/.nodebrew

========================================
Export a path to nodebrew:

export PATH=$HOME/.nodebrew/current/bin:$PATH
========================================

そして再度インストールを実行。

nodebrew install-binary stable
Fetching: https://nodejs.org/dist/v8.10.0/node-v8.10.0-darwin-x64.tar.gz
######################################################################## 100.0%
Installed successfully

これで問題なくインストールできるようになりました。

brew install時にディレクトリの権限周りの問題でハマった

Macの環境構築で homebrew と zsh と nodebrew と pyenv を導入した手順 - HIDARI日記(右)

の手順で、長年使ってるMacにhomebrewでzshをインストールしようとして以下のエラーが発生した。

Error: Could not create /usr/local/Cellar
Check you have permission to write to /usr/local

/usr/local に書き込み権限がないため、 Cellarディレクトリが作れないと言っている。

なので手作業でディレクトリを作ってから再度インストールを試みる。

sudo mkdir /usr/local/Cellar
brew install zsh

すると今度は以下のエラーが…

Error: /usr/local/Cellar is not writable. You should change the
ownership and permissions of /usr/local/Cellar back to your
user account:
  sudo chown -R $(whoami) /usr/local/Cellar
Error: Cannot write to /usr/local/Cellar

指示に従ってコマンドを実行し、三度インストールを実行する。

sudo chown -R $(whoami) /usr/local/Cellar
brew install zsh

次は以下のエラーが発生した。

Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink .
/usr/local/opt is not writable.

You can try again using:
  brew link zsh

/usr/local/opt に書き込めるようにすればいい様子。なので先程と同じ要領で chown を実行する。

sudo chown -R `whoami`:admin /usr/local/opt
chown: /usr/local/opt: No such file or directory

そもそも /usr/local/opt がないらしい。作って再度実行する。

sudo mkdir /usr/local/opt
sudo chown -R `whoami`:admin /usr/local/opt
brew link zsh
Error: Could not symlink lib/zsh
/usr/local/lib is not writable.

今度は /usr/local/lib がダメらしい。調べてみるとこれもそもそもディレクトリが存在しないようなので作って

sudo mkdir /usr/local/lib
brew link zsh
Linking /usr/local/Cellar/zsh/5.4.2_3... 
Error: Could not symlink lib/zsh
/usr/local/lib is not writable.

まだダメ。ちょっと調べてみて Homebrew: Could not symlink, /usr/local/bin is not writable - Stack Overflow を参考にして以下を実行

sudo chown -R `whoami`:admin /usr/local/bin
brew link zsh
Linking /usr/local/Cellar/zsh/5.4.2_3... 1351 symlinks created

上手くいったっぽい。

行き当たりばったりで雑に動くようにしたけど、これでよかったのか自信はない。

Macの環境構築で homebrew と zsh と nodebrew と pyenv を導入した手順

めちゃくちゃ久しぶりにMacの環境作った。

具体的にはhomebrew入れて、zsh入れて

ネットを検索してると何年も前の情報が結構多くて、これまだ使える情報か?って不安があるので、ひとまず2018年3月時点ではこの方法でインストールできましたというのを記録しておきます。

homebrewのインストール

zshのインストール

参考:とりあえずZshを使えば良いんだろう? - Qiita

homebrewでnodebrewのインストール

nodebrewでnode.jsのインストール

  • nodebrew ls-remote でインストールできるバージョンを確認
  • nodebrew install-binary x.x.x で指定してインストール(lateststable でも可)
  • nodebrew use x.x.x で使用可能にする
  • npmはnodeと一緒にインストールされる模様

homebrewでpyenvを使ってpython3のインストール

  • HomebrewのインストールからpyenvでPythonのAnaconda環境構築までメモ - Qiita を参考に
  • brew install pyenv でインストール
  • .zshrcに次の3つを追記
    • export PYENV_ROOT="$HOME/.pyenv"
    • path配列に {PYENV_ROOT}/bin(N-/)
    • 最後の方に eval "$(pyenv init -)"
  • source ~/.zshrc で再読み込み
  • pyenv install -l でインストール可能バージョン一覧を表示
  • pyenv install x.x.x でインストール
  • pyrnv versions でインストールされたバージョンを確認
  • pyenv global x.x.x で使用するバージョンを指定
  • 最後に python --versionPythonが切り替わっているかを確認

ところで

zshってなんて発音するのですかね?

勝手に心のなかで「ゼッシュ」って呼んでる。ほんとの発音知ってる人いたら教えてください。


2018/03/07 追記

Twitterで「ズィーシェル」と呼ぶのが一般的だという情報を頂きました。

お久しぶりですが7年間勤めた会社を退職しました

2月28日を持って約7年間勤めた会社を退職しました。

新卒で入社して以来7年間、親会社に吸収され続けて気づけばいわゆる日本の大企業の一員としてやってきました。

まずはお世話になった方々にお礼を言いたいと思います。

何をやってきたか

入社後一年間は受託開発の仕事で、とある国産ERPパッケージを使ったSI案件に携わっていました。

そこではいわゆるウォーターフォール型の開発、Excelスクショエビデンス、手作業による単体テストを体験しました。

しかし、ここでの体験がなかったら、今のように自分で勉強して現場を改善したいと思うことはなかったと思うし、多くの友人にも出会えなかったと思います。そう考えるととても大きなターニングポイントでした。

その後、メインフレームの端末エミュレータを開発する部署に異動しました。

そこではVC++6.0を中心にVBScriptなどいわゆるレガシーな技術を使って開発をしていて、求められる知識もかなり高度なものでした。過去から連綿と受け継がれてきた資産がほとんどで、それに縛られて開発自体にあまりスピード感はありませんでした。

ただ、現場はもっと楽になりたいと考えていて、Jenkinsを使ったCIの仕組みを作らせて貰えたり、Seleniumを使った自動テストなどの導入には積極的でした(最終的に導入は見送りましたが)。自分で勉強しただけの技術を実務で使わせて貰えるなんて、なんて懐の広い人たちなんだと感動したのを覚えています。

最近はスポットでStrutsからSpring Frameworkへの移行案件を手伝ったり、過去に納めたシステムの障害調査、対応をしたりしていました。

なぜやめるのか

理由はいくつかあります。

長い間携わってきたメインフレーム用端末エミュレータというニッチな市場に対する先行きの不安感。

このまま今の技術スタックで年齢を重ねたとき、何かのはずみで事業そのものがなくなってしまったら、気付いたときには他に身を振る先がなくなってしまうのではないかという不安。

昇進するにもすでにポストは埋まっていて現在のキャリアパスではこれ以上はあまり給与が上がらないこと。

そしてこれが一番大きいことなのですが、今まで経験したことのない環境に身をおいて、スキルを高めたいと思ったことです。

これからどうするのか

新しい職場はすでに決まっています。 同じIT系ですが、これまでとは全く違う技術スタックが求められる職場です。これについては落ち着いたら改めて書きたいと思います。

転職に際してはとても多くの方にアドバイスを頂きました。 本当に有難うございました。

Jenkins勉強会で学んだビアバッシュ

後から来る人達へ。

第7回大阪Jenkins勉強会の懇親会の代わりに行ったビアバッシュについて、次回開催するときのためにメモがてら書いておこうと思います。

人数と用意したもの

今回のビアバッシュには最終的に36人の方に参加頂きました。

ビール:

  • 2ケース(48本)
  • 一人2本弱の計算。
  • 注文時の申し込み人数の2倍弱で注文。
  • カクヤスで前日に注文。 www.kakuyasu.co.jp
  • オプションで冷えたものを配達してもらえる。
  • ビアバッシュ開始予定時刻直前に届いたけど、本編が早めに終わってたので、結果的に遅すぎた。
  • 2時間前目標で届けてもらうのが良さそう。

ピザ:

  • 12枚
  • 1枚で3人分の計算。
  • ドミノ・ピザの週末限定半額クーポンを(@kiy0takaさん](https://twitter.com/kiy0taka)が)当日手に入れて注文。
  • こちらもスケジュール通りに注文したけど結果的には遅すぎた。
  • 早めに注文しよう。

ソフトドリンク:

  • ペットボトル数本

雑感

  • ピザは気持ち少なかったけど必要量には足りていた。
  • ビールは微妙に少なくて、途中で買い足し。
  • 余るリスクを考えると少なくてよかったのかも。
  • 今回のをベースに参加者を考慮しがら色々手配するのがいいのではないかな。