社会に出るようになって、やっぱ大きな組織の中で生きるのは向いていないんだろうなと改めて実感している。己をすり減らしながら歩き続ければ耐えられなくはない程度の向いてなさだと勝手に推定しているが、事ある度に不快感を感じながら生きなければならない。自分ひとり(あるいは気心の知れた仲間)と作ったものを、ポンっと投げると、誰かが買ってくれる。それで適当においしいものを食べて、良い感じの家に住んで、まぁまぁ楽しく暮らしたいのだ。要は自分の庭を造って、あまり世間から干渉を受けずに好き勝手していたい。そして偶に外に出て、世間を冷やかしに行く。

流血

数週間前の話だが、宮崎駿の新作である君たちはどう生きるかを観た。眞人が石で自分の頭を殴りつけ、止めどなく血が流れ続けるシーン。その時点で、この映画は私の中で決定的になった。風立ちぬでは終に見せてくれなかった宮崎駿の内面。私が宮崎駿の作品が好きな理由。それが直接的に噴出した瞬間のように思えた。短絡的だが、死に際のユパが血はむしろそなたを清めたとクシャナに伝える場面が脳裏を掠める。脈絡も、文脈も、まぁ適当に用意しておいてくれるだけでよい。ただ、その瞬間的衝動が見事に描かれた作品を観ると、それだけで出会えてよかったと思える。そんな観方ばかりしている。

Android

高校生1年生のころ、初めてAndroidアプリの開発という形でプログラミングに触れました。それから数年経って、SEとして働いていますが、Android(Java)とは無縁の環境です。思えば、あの頃思い描いていた将来像とはずいぶん違った所に来てしまいました。なぜなんでしょう。まぁ後悔しても仕方ありません。有限の人生の中で、お金を自律的に稼げる期間はさらに限られています。できれば、もう一度原点に戻って自分のやりたかった仕事をしたい。ということで、モバイルアプリエンジニア、特にAndroidメインの仕事を得られるように準備していきたいと考えています。というかやらなければ、私のプログラマ人生を後悔しそうな気がします。もちろん、今の仕事も人の役に立っている筈ですが、それはそれ。やりたいことをやって後悔したい。いや、あまり後悔はしたくないですが。

動力源

4月からは忙しくて1日を乗り越えるのにも一苦労です。既に3月の何もしていなかった期間が恋しいのですが、暇なら暇で何もせず鬱屈した日々を送るだけなんですよね。それならお金も貰える今の生活の方が価値があるのは確かなんですが、如何せん疲れます。もう少し時間的拘束が無ければ理想的なんですが、まぁそう上手くいきません。

さらに理想の話をすると、価値を生み出したら、それに付随してお金を得ることができるという働き方がしたいです。つまり自発提案型といった感じでしょうか。でもそれって凄く実力主義的だし、価値の生み出し方なんて私は全く分かりません。うまく言葉にできないのですが、仕事をする目的の第一番目が「金銭」ではない働き方がしたい。でも無理だなー。そもそも価値のあることってなんだ。個人的には衣食住と、自由意志が保証されて、労働も強制ではない、SF小説に出てくるような社会を実現するための営み全般は価値のあることだと思うのですが、めっちゃ壮大ですね。昔から考えているぼんやりとしたイメージとして、課題解決型でいる限りそのような社会は遠いと思います。課題はいくらでも量産できますが、価値の生産は難しい。降ってくる課題をこなすだけでは、何も変わらないですね。

動力源というタイトルにしたのは、モチベーションがいまいち湧かねーという文章を書こうとしていたからです。脱線しました。

新年

気付いたら年が明けていた。 就活とはやたら意識だけが高くなるイベントの様らしく、内定を頂いてから少し気が抜けているのが正直なところだ。新年を迎えたことだし、久しぶりに現状整理も兼ねてブログを更新する。

現在は卒業制作が大詰めといったところ。ほぼ経験がない組込みC++をこねくり回している。正直、Web制作班の方が適正かと思うのだが、全く経験がないチームメンバーに組込みを任すこともできないのでこの担当になった。制作初期段階にER図のような物を書いてメンバーと共有しているが、開発中に不備を見つけて修正し続けるうちに、あまり役に立たなくなる。こうなると仕様書こそが全てで、文字列で書かれた要求事項が達成できるなら委細構わず取りあえず実装してください。となってしまう。ある意味抽象化されているともいえるが...学生時代に美しい開発範囲の切り分けと役割配分ができたプロジェクトを実現することは遂になさそうだ。プロトタイプ開発が出来れば最善だが練度と時間が足りない。難しい。ある程度形にはなっているので、完成はするでしょう。完成度は知りませんが。学生時代最後の打ち込めることだとは思いつつも、なかなか...

最近ピアノを始めてみた。数年前から家族がピアノを始めて、Youtubeで指の動きを覚えて弾いているので、楽譜も読めるようになった方が良いんじゃないと無責任に言っていた。しかし、中々楽譜を読む気配がないので、自分で楽譜見ながらやってみるかと思ったのがきっかけ。というのは建前で、何でもいいからとりあえず楽器やってみたいと思い、衝動的にピアノの入門書を買ったのが実際のところ。初めに買った入門書は読み終わったので、トンプソン現代ピアノ教本 1という教則本を買って練習している。この解説を読んで、調号などの意味がやっとある程度分かったような気がする。これを小中学生で理解するの難しくないか。全く話が脱線するが、ピアノを楽譜も理解して弾ける人間はプログラマーというか、コンピュータ適正があるような気がする。「プログラム / 計算機」と「 楽譜 / 人間&ピアノ」の関係はわかりやすく共通な構造をしているし、表現したいものを如何に記号列に落とし込むか、その記号列を如何に解釈し実行するかという離散的な要素を扱うことが似ている。当面の目標として戦場のメリークリスマスを弾けるようになりたい。

モチベーション

最近はITをやっていくモチベーションが失われつつあり、なかなか困っているところです。9月はNeovimのカスタマイズ楽し~という感じだったのですが、ある程度環境を整えてひと段落といった状況。やはり自分のカスタムだと微妙に使いづらいので、Astronvimなんかを使ってみて参考にしたいのと、マスタリングvimを読んでvim自体の習熟度を上げたいです。卒業研究なにやるか決まると、それに向けて力を入れられると思いたいですが...

NeovimのjdtlsがClient 1 quit with exit code 1 and signal 0で起動しない

概要

NeovimでJavaを書こうとして、JavaのLSPであるjdtlsをMasonを経由してインストールした。しかし、Client 1 quit with exit code 1 and signal 0と表示されるだけで動作せず躓いた。結果的にPython3.9をインストールすることで解決した。

環境

  • WSL2 Ubuntu 20.04
  • Neovim 0.7.0

詳細

github.com

LSPサーバーなどを一括して管理できるMasonを利用してJavaのLSPサーバーであるjdtlsをインストールした。ちなみにjdtlsの中身はEclipseeclipse.jdt.lsのようだ。しかしEclipseを今も使っている人はいるのだろうか。まぁそれは置いておいて、何故かjdtlsをインストールしたのにjavaファイルをNeovimで開いても起動してくれない。LuaのLSPをインストールしたときは特に何も設定せずとも起動していたので、jdtls特有の問題かなと推測していると、

Client 1 quit with exit code 1 and signal 0

というエラー(?)が毎回表示されることに気づいた。とりあえず検索を掛ける。

github.com

issueなどで当たり前だが、トラブルシューティングを見なさいと言われているので確認してみると、.cache/nvim以下にlsp.logというログが残っているらしいので中を見てみる。案の定、怪しいエラーログが残されていた。

[ERROR][2022-09-16 17:29:45] .../vim/lsp/rpc.lua:420 "rpc"   "jdtls" "stderr"    "Traceback (most recent call last):\n  File \"/home/moyashi/.local/share/nvim/mason/bin/jdtls\", line 17, in <module>\n    jdtls.main(sys.argv[1:])\n  File \"/home/moyashi/.local/share/nvim/mason/packages/jdtls/bin/jdtls.py\", line 68, in main\n    parser.add_argument(\"--validate-java-version\", default=True, action=argparse.BooleanOptionalAction)\nAttributeError: module 'argparse' has no attribute 'BooleanOptionalAction'\n"

nono.ma

モジュール 'argparse' には属性 'BooleanOptionalAction' がありません。とのことらしい。検索を掛けると上記のブログ記事が見つかった。BooleanOptionalActionというPythonの機能はPython3.9以降でないと使用できないらしい。自分の環境のバージョンを調べると3.8であった。3.9をインストールする。

www.python.jp

$ sudo apt update
$ sudo apt install build-essential libbz2-dev libdb-dev \
   libreadline-dev libffi-dev libgdbm-dev liblzma-dev \
   libncursesw5-dev libsqlite3-dev libssl-dev \
   zlib1g-dev uuid-dev tk-dev
$ wget https://www.python.org/ftp/python/3.9.14/Python-3.9.14.tar.xz
$ tar xJf Python-3.9.14.tar.xz
$ ./Pytohn-3.9.14/.configure
$ make
$ sudo make install

Pythonのバージョンを確認

$ python3 -V

インストールが終わると、jdtlsが動作するようになった。先述した海外の方の記事が非常に助かった。BooleanOptionalActionでヒットした情報がその方の記事しか自分には見つけられなかったので、無ければ詰んでいた可能性が高い。感謝です。