名もなき未知

エンジニアリングとか、日常とかそういうのをまとめる場所。アクセス解析のためGAを利用、Googleに情報を送信しています。商品紹介のためAmazonアフィリエイトを利用、Amazonに情報を送信しています。記事に関しては私が書いていない引用文を除いて自由にご利用ください。

開発環境をasdf-vm使って整えようとしてる

概要

  • WSLのUbuntu環境でいろいろ開発ツール入れてるけど、バージョン管理問題は真っ先に思い浮かんだ
  • 各言語ごとの開発ツールとかを入れるのも手だと思ったが、横断的に管理したかった
    • 個別に管理するのもどうなんだ?(現代においては多種多様な言語を実行できる環境が必要であるため)と思ったのが大きい
  • まああと会社で存在を知ったけど、自分では活用する機会がなかったので、まあ使ってみて調査するかと思った

参考にしたところ

というか、最終的に公式以外が参考にならなかった、ともいう。

やったこと

  • 公式に従って環境構築
    • git で引っ張ってくるだけ
    • .zshrc環境変数を入れておく
      • Qiita記事とか見ると bash のものを zshrc に書いても大丈夫って書いてあったけど、それは全然うまくいかなかった
      • QiitaとかはTips程度に使えってことですな(環境構築は公式見て進めたほうがいいね)
  • あとはプラグインページでひたすらほしいものを引っ張ってくる
    • Node, Python, Ruby, Java, Go あたり
    • asdf-vm ではツールのバージョン管理もできるので、 ghq も入れた
    • インストール時にパッケージの依存とかあるものもあるので、plugin を入れる前に事前に入れておいたほうがいいかも
      • Pythonの場合、中身的には pyenv なので、pyenv で必要なものが当然必要だった
    • 大体は pluigin を公開している GitHub ページに書かれているので(他だと unzip, jq あたりが必要となった)、それらを見てください
    • Nodeか何かが証明書で詰まって、それが一番難しくつらかった
  • 各種言語の各バージョンを global で参照するようにする
    • いったんこれで問題はないため
  • python , ruby とかのバージョンを見てみる

発見として

  • 公式のページがすごくわかりやすい
    • (この記事もそうだが)変なセットアップ記事を見るより、公式を見るほうが明らかに良い
  • plugin 非常に多い
    • 大体かたっぱしの言語がある
    • (どの言語もバージョン管理が必要なんだなという気持ちになってしまう(つらい))
  • 証明書を書き換える必要があるんだよねっていうやつが一番心的につらかった
  • Hookとかも使ってみたいような気がする
  • どうでもいいが ghqasdf 経由じゃないと入らなかった
    • ローカルの状況が何かおかしいのかも、Goなしで入れようとしたのが一番いけなかったような気がするが…

まとめ

開発環境が整いつつあるので、ゴリゴリやっていきたい… ような気もする。

あとはIDEとかの連携回りも少し見ておきたいですね。なんかIDEA Ultimateでうまく見てくれてない感じがするので、この辺の勘所とか、セットアップもいい感じにやりたいかも。

特に最近型ありの言語をやりたい気持ちが強く(動的型付けのType hintもよかったが、なんかもっとかっちり検査したような書き方がしたいときもある)、Kotlinやってみようかなと思ったけど、wslと合わせて使う方法わからんなという感じになっています。 PyCharm以外のJetBrainsのIDEはお世辞にも使いこなせているような状況ではないので、使いながら学んでいきたいな。

Pythonとかはたぶん大丈夫でしょう…(MacとかでPyCharm Professional がリモートのPythonバージョン見に行くことができてるので、たぶん大丈夫のはず)。

この辺りもわかってきたら文章に書き起こすかもしれません。たぶん。

VSCodeのスニペット機能に触れる

そろそろ真面目に使おうと思って調べていたんですが、結構便利だなと思いました。

参考にした記事とか

やったこととして

  • 上記を参考にスニペットを作成する
  • 上記ではGlobalにスニペットを登録しているが、ローカルのリポジトリ単位でも作成できる
    • .vscode ディレクトリの配下に nantokakantoka.code-snippets みたいなファイルが作成される
      • GitHubで管理したいような気持ちがある)
      • 個人的に言語のスニペットごとにどうこうしたい気持ちがあって、ディレクトリを分けてみたがうまく動かない
         * たぶん調査不足で、やる方法がありそう
         * いったんリポジトリを分けて参照側のリポジトリでshellで引っ張るような作りにするか…  という気持ちになる(Submoduleにすると .vscode を書き換えて若干めんどくさいだろうと予想されるため)
        
  • 生成用ツールを作ってくれてる人がいたのでそれを活用する
  • ちなみに下記みたいなものを書いた(仕事じゃなくて、カンファレンスの作業でJIRAを使っているので、そのテンプレが欲しかった
{
    "jiratask": {
        "scope": "markdown",
        "prefix": "jiratask",
        "body": [
            "## 目的・背景",
            "",
            "- やることを書く",
            "",
            "## タスクのゴール",
            "",
            "ゴールを書く",
            "",
            "## やること",
            "",
            "- [ ] タスク",
            "- [ ] タスク",
            "- [ ] タスク",
            "",
            "## その他",
            "",
            "- メモがあれば",
     ],
        "description": ""
    },
    "jirastory": {
        "scope": "markdown",
        "prefix": "jirastory",
        "body": [
            "## 目的・背景",
            "",
            "- やることを書く",
            "",
            "## ストーリーのゴール",
            "",
            "ゴールを書く",
            "",
            "## ストーリーの概要",
            "",
            "- 概要",
            "- 概要",
            "- 概要",
            "",
            "## 小タスク・子チケット",
            "",
            "- チケットなどを貼る",
        ],
        "description": ""
    }
}

まとめ

  • これめっちゃ便利
  • 別件だけどJIRAってチケットテンプレートないんですかね
  • 活用方法とかはもう少し調べたいところ

GitのSignedコミットが失敗する他の要因

先日の記事に引き続き。

https://namonakimichi.hatenablog.com/entry/2020/06/03/060000

会社のPCでもある日突然出来なくなったので、設定し直したんですが、また別のハマりポイントがありました。(休憩がてら少し直してた)

書き込み権限

.gnupg の書き込み権限がなくなってたっぽい。 sudo をつけたら成功しましたが、アプリケーション側(ここではgit)からの呼び出しがコケるので、全部鍵消してフォルダごと一回消しました。

インタラクティブShellが上手く起動しない問題

これエラーログがあんまり出なかったので全然気づけなかったです。下記みたいなコマンドにしたら詳細に出たので、原因掴むのには使えるかも(記憶ベースなので間違えてるかも)。

gpg --gen-key --debug-all -vvv

失敗しているタイミングはパスフレーズ設定のところでした。

これも気がついたのが、先日も貼ったstackoverflowの記事でした。

https://stackoverflow.com/a/47087248

ここのpinentry-programと言うやつが、いわゆるパスワード設定が出るインタラクティブインターフェイスだと解釈しました。

どうやらこれのかみ合わせが悪いと鍵の生成に失敗するようです。(エラーログもそんな感じのところで失敗していた)。

どういう指定にしたかは忘れましたが、下記のArchlinux wikiで設定できるとあったのでこれをいくつか試したような記憶。

https://wiki.archlinux.jp/index.php/GnuPG#pinentry

pinentry 変えたら無事に鍵ができました。

GPG_TTY が正しくないケース

2敗目です。前の記事でも取り上げてるので詳細は省きますが、 export GPG_TTY=$(tty) したら直った。

まとめ

Linuxインタラクティブなインターフェースの存在を知りました。これはこれで学びになりました。 なにか活かす機会があるかはわかりませんが、存在を知らなければ使おうという発送が出にくいので良い機会だったと思います。

またpgpsignしたいだけなのに罠多すぎという気持ちになったのと、stackoverflowやっぱすごいわと思いました。

終わり。