Posts for: #Event

rsync に daemon モードがあるらしい

23時に寝て2時半に起きて4時や5時に起きて7時に起きた。泊まっているホテルの低反発枕の寝心地がよい。

rsync daemon over ssh

外部向けのドキュメントを公開するための gitlab ci/cd を構築した。web サーバにドキュメントをアップロードする手段として rsync を使っている。rsync over ssh でデータを転送するときにさらに daemon モード (rsyncd) という仕組みがあって、権限や書き込み先の acl なども細かく制御できる。手順や設定は古の古臭い雰囲気はするけれど、実用的には ssh の秘密鍵を使ってちょっと高機能なアップロードを実現できる。ssh agent で鍵登録できていれば次のような cli でセキュアに rsync できる。全然知らない方法だったので学びの1つになった。

$ rsync \
    --verbose \
    --rsh ssh \
    --stats \
    --compress-choice=zstd \
    --compress-level=10 \
    --itemize-changes \
    --recursive \
    --checksum \
    --delete \
    local/ ${USER}@${HOST}::${RSYNC_DIR}

LLMを使ってみる会

LLMを使ってみる会 に参加した。私も chatgpt に調べものやちょっとしたことを聞くようになったりしているが、他の人たちがどんな用途に使っているのかも知りたくて参加してみた。fin-py のイベントだったのでみんな金融系のドキュメントの要約に使っているのが多そうにみえた。あとは研究テーマとして gpt/llm を取り上げている人たちも何人かいた。

事務手続き時々お出かけ

0時に寝て4時に起きて6時に起きて8時ぐらいまでだらだらしてた。出張前にプロジェクトの進捗を確認したり近況報告の資料を作ったり。

Mon copain (モン・コパン)

出張するときはお土産をもっていく ようにしていて、2月の中旬からお土産を探す余裕もなくてネタ切れでどうしようと思っていたものの、朝から調べてたら パティスリー モンプリュ というお店をみつけた。 Mon copain というガトーショコラの詰め合わせを選んでみた。ガトーショコラをあまり買ったことも食べたこともないので試しに購入してみた。本当は私が味見してからお土産にするかどうかを選定する (自分が食べてイマイチなものはお土産に持っていかない) のだが、先月からそんな余裕がなくて、お店を信頼して自分用と一緒にその場で購入したりしている。単品だと3個入りを1セットで購入できる。税込で580円になる。

それぞれ上から次になる。

  • 茶色の包み: au lait キャラメルのコクが味わい深いミルク・ショコラ
  • 白色の包み: blanc ほんのりレモンが香るホワイト・ショコラ
  • 焦げ茶の包み: noir ほろ苦さが大人味のスイート・ショコラ

しっとり柔らかい口当たりで上品な風味だった。神戸の洋菓子屋さんという印象がそのままのお菓子。甘いが甘過ぎない雰囲気でよいと思う。3つとも食感は似ているが、どれも風味がまったく違うので全部食べてみるのも楽しめると思う。お土産として量と値段のバランスも取れていてちょうどよかった。全然調査していなくても、即席でよいお店がみつかるのは神戸という地域のよさだと思う。

夜のお花見 at 生田川公園

昨年に引き続き生田川公園 で三ノ宮.devのお花見。今年は夜桜にしようと夕方から始めることに。私は16時ぐらいから車で買い出しへ行って17時ぐらいから参加してきた。ここ2-3週間ほど車を動かす機会を伺っていてできなかったのが、明確な目的があると車を動かすことができてよかった。初めて近所のスーパーマーケットへ車で出掛けて駐車場に停めて買いものしてきた。15分ほどで買いものして、駐車場から出るときに220円必要だった。後で調べると500円以上購入すると120分無料になったらしい。レジで駐車券ありませんか?と聞かれて車に忘れてきていたので無料化のための手続きができなかった。次回から持参するための学びの1つとなった。その後、生田川公園へ移動して、付近をまわりながらパーキングのスポットをみつけることもできた。次のお花見はまた来年になるけど、そのときに役立つはず。

昨年は4人だったのが今年は7人参加していた。昨年よりは三ノ宮.devも少し成長したのかもしれない。1月に起業相談 されていた方も来ていて、その後、デザイナーや開発者をみつけることができて、プロダクト開発をしているらしい。3ヶ月でさっそくピボットしましたという話しをしていて、起業したばかりだとそんなもんだと私も思う。うまくいっているように話していたのでよかったと思う。これから海外に3ヶ月ぐらい出かけるといった話しもされていてスケールの大きい人だなと聞いてた。

17時頃から始めて20時半でお開きになった。街灯の近くの場所をとったので暗くなっても灯りは問題なかった。始めたときは涼しくてちょうどよかったものの、さすがに20時をまわると寒くて解散することにした。私も20-21時ぐらいで帰ろうと思っていたのでちょうどよかった。食べものも飲みものもそんなに外してはなかったが、せっかく車があったので最初にコアメンバーに声を掛けて買い出しに行ってもよかったなと思えた。私が余裕なくて段取りできなかったせいでもある。16時から始めて19時に終える花見のやり方もあることを学んだ。

請求書の即時払い

今月から請求書の支払いを即時払いに切り替えることにした。いまお手伝いしているお客さんは当社から請求書を送ると即時払いしてくれる。これまで取り引きしてきたお客さんは翌月末払いが普通だったのでそういうものだと思い込んでいた。私も無条件でその慣習に従っていた。もちろん契約上の支払い期限そのものは翌月末に設定しているが、支払いを即時で行うことに問題はなにもない。

キャッシュフローの視点から「回収は早く支払いは遅く」の原則がある。レバレッジを効かせた経営 (資金繰り) をするなら正しいが、うちみたいな会社が支払いを1ヶ月遅くするメリットは何もない。これまでは請求書を受け取ったときに会計システムに取り引き登録して、銀行口座から1ヶ月後に予約振り込みの登録をしていた。そして、実際に振り込みされた1ヶ月後に、銀行の振り込み明細と会計システムの取り引き明細を付き合わせて決済が完了となる。請求書を受け取ったときに即時払いにすると、タイミング的に1ヶ月ずれる2度の事務手続きを1度にまとめられる。一言でいうと事務手続きの効率化になる。

うちみたいな会社にとっては請求書の即時払いをすると、事務手続きの工数を少なくできるというメリットがあることに気付いた。こんな簡単なことにこれまで気付いていなかったわけではないのだが、私の目が曇っていたのか、慣習に引き摺られて気付かない振りをしていた。自分の頭で考えること、実際に実践してみることの重要性を改めて学んだ。

まったく終わっていない年度始まり

23時に寝て何度か起きて7時に起きた。久しぶりに早めにお仕事を終えて、気分転換に出掛けて、帰ってきてすぐ寝てたかな。

年度を気にしている余裕がない

お仕事の納期が4月末でまだ余談を許さない状況と言える。2ヶ月以上遅延している、ある開発作業の最後の作業をメンバーから私に担当を付け替えている。前任者が作業を終えたら私がクリティカルパスになるようにしておいて、なる早で終わらせて開発を完了させたい。リリースまであと3週間なのに code freeze すらできていないという、マネジメントとしては失態を続けている。前任者が作業を終えるのを見計らって私が休出しつつ段取りを組んで正しいスケジュールに引き戻そうと調整している。

ストレッチ

今日の開脚幅は開始前154cmで、ストレッチ後158cmだった。今週は (私個人の) 開発のピークを過ぎて後半は余裕があったので体にかかる負荷も少なかったのではないかと想像していたら、ストレッチを受けていても先週より調子がよいように思えた。右股関節付近の張りは継続しているものの、腰の張りもひどくなく、すねの外側の筋も問題なく、ここ1-2ヶ月ぐらいではもっとも調子がよかったかもしれないと思えた。トレーナーさんも今日は目立って悪いところはなさそうとコメントしていたぐらい。

個人カンファレンス

ストレッチを終えてからオフィスへ行って tenntenn Conference 2023 に参加した。個人が1日中話しまくるという取り組みそのものがおもしろい。自社のお仕事をしながら並行で視聴していた。パネルディスカッション (個人カンファレンスなのにモデラーとパネラーがいて、どうやら同じ人物っぽい人が相互に話していたw) のときに次のような質問があった。

Q. なぜ個人カンファレンスをやっているのか?

A. あまり深い意味はなく、誰もやっていないので思いつきでやっている

私のような無名の開発者が個人カンファレンスを開いても誰も参加してくれないと想定される。個人カンファレンスが成り立つ開発者の知名度やコンテンツを選択するのはすごく難しいと思う。個人カンファレンスの取り組みをみていて会社のテックカンファレンスを1人でやってみるというのもおもしろそうに思えた。うちの会社は課題管理を中核にビジネスを進めていく。その一環でコンテンツをいくつも作っていく必要がある。そして、コンテンツが溜まってきたらカンファレンス形式にして一気に放出するという取り組みをいずれやってみてもよいかもしれない。

他には 昨日の雑談会 にも書いたことで、オンラインの勉強会で参加者とインタラクティブにやり取りする難しさをこの個人カンファレンスをみていても感じた。登録で300人超、そのうち6割参加で180人ぐらいが参加していると仮定して、インタラクティブにコメントしているのは数人ほどしかいなかったと思う。私も他の作業と並行しつつ、ながらで視聴していたのでインタラクティブなコメントなどはしなかった。たまに twitter に所感を投稿するぐらい。基本的にオンライン勉強会でインタラクティブなやり取りを求めず、オフラインで3-4人集まってインタラクティブにやり取りする内容をコンテンツとして流すというのがよいのかもしれないなと、視聴していて思ったりもした。

Q. 有料の勉強会を始めたきっかけは?

A. お仕事じゃないとまとまった時間を使うことに家族の了承を得られにくいと考えたから

私も有料勉強会に参加しているので興味があった。主催者が転職の隙間時間を使う理由を家族に理解してもらうためだったと話されていた。私も過去に同居人がいたときに自分の時間を勉強したり、飲み会へ行ったりするのを非難された時期があったので理解できる。私はいまや調べものや勉強をしている時間が一番幸せを感じる。私にとって他のことを考えずに集中している状態がその時間に相当する。疲れてただ寝ているときもたまにある。しかし、それはあの時間を勉強や仕事に割り当てていたらもっとうまく物事を進められたのに、、、と後になって自己嫌悪になって返ってくるときがある。いまは何をなしても満たされることはなくて、常になにかをなし続けている状態そのものに満たされる。

閑話休題。あとでアーカイブも公開されるそうなので関心がある発表はまた見返すと思う。generics 周りと静的解析に関するところに私は関心をもっている。他に個人カンファレンスをやっている人を私はみかけたことがないけれど、こういう新しい取り組みに挑戦する人は本当に尊敬できる。

プライベートリポジトリの go アプリケーションの依存解決

0時に寝て6時半に起きた。面倒なお仕事を朝から集中して片づけた。

go.mod のプライベートリポジトリの依存解決

非公開のプライベートリポジトリで開発している go アプリケーションを他のリポジトリから依存ライブラリとして使う方法を調べた。go modules は基本的に公開されたパブリックなリポジトリを前提としている。go.mod のワークフローで他の依存ライブラリと同様にバージョン管理ができるようにするには、プライベートリポジトリであることを go.mod に認識させ、トークンなどを使って認証する必要がある。

go 1.13 から GOPROXYGOPRIVATE という環境変数が追加された。デフォルトでは GOPROXY は https://proxy.golang.org に設定されており、このプロキシサーバー経由で依存ライブラリを取得する。これは公開リポジトリを、ある日、作者が急に削除したり非公開にしたときにビルドできないといった問題を防ぐために依存ライブラリのリポジトリをキャッシュしてくれる役割を担っている。

一方でインターネット上のプロキシサーバーからはプライベートリポジトリへアクセスできないので GOPRIVATE を設定してアクセスできないサイトを go.mod へ教えてあげる必要がある。

$ go env -w GOPRIVATE="private.repo.jp"
$ go env | grep GOPRIVATE
GOPRIVATE="private.repo.jp"

通常 go.mod は https で依存ライブラリをリポジトリから取得 (クローン) しようとする。このときに git の設定を変更することで特定のサイトへのアクセスを ssh 経由に変更できる。次の例では https://private.repo.jp へのアクセスをすべて ssh://git@private.repo.jp でクローンできる。

$ git config --global url."ssh://git@private.repo.jp".insteadOf "https://private.repo.jp"`
$ tail -n 2 ~/.gitconfig
[url "ssh://git@gitlab.osstech.co.jp"]
        insteadOf = https://gitlab.osstech.co.jp

これで git リポジトリのクローンは ssh で行われるようになるが、go.mod のワークフローでは https でもアクセスする処理があるようにみえる。https でもアクセスできるように PAT などのトークンを取得して次のように ~/.netrc に https でプライベートリポジトリへアクセスするための認証設定を追加する。

machine private.repo.jp
login t2y 
password ${PERSONAL_ACCESS_TOKEN}

コワーキングのオンラインイベント

月例のカフーツさんのオンラインイベントに参加した。先月の所感はここ 。いとうさんの近況を把握していないが、どうやらバリ島 (インドネシア) のコワーキングスペースをいくつか訪問してきたらしい。その旅程を写真をみながらふりかえるようなイベントだった。バリ島の自然や建物の雰囲気が伺えてとてもおもしろかった。

いとうさんからバリ島はデジタルノマドの先進的な取り組みをしているように聞いていた。例えば バリ島でリモートも可能!?インドネシアのノマドビザは最長5年を検討中 にあるように最長5年のビザを用意しているという話しが日本で盛り上がっているが、現地ではまだ正式にそのようなビザがあるようには存在が確認されていないらしい。それに近い長期のビザを取得するには、一定の金融資産があることを証明しないといけないらしく、日本円だと数千万円程度ないとビザを取得できないのではないか?といった話題もあったと思う。基本的にインドネシア政府は海外から金持ちを呼び込みたいらしく、金持ち向けに待遇のよいビザを整備するのではないかとのこと。ビザの話しはともかく、ここ2-3年でバリ島のコワーキングスペースもいくつか廃業しているらしい。それは利用者の大半が外国人であったため、コロナ禍により、インドネシア政府からの要請もあって外国人に帰国を促したという。外国人利用者の半分ぐらいが自分たちの国に帰ってしまい、施設の運用コストを維持できなくなった。バリ島は今後の成長が見込まれていることから数年前から外資が入ってきて土地や家賃が急騰しているために利用者が激減すると運用コストを維持できなくなったとのこと。

肝心のバリ島のコワーキングスペースの雰囲気を聞いていると、利用者は外国人が大半で、感覚的にはヨーロッパから来ている人が多そうだといとうさんが話された。バリ島のコワーキングスペースでいとうさんが見学していたときには、現地の人たちと外国人のコミュニティが活発に活動しているようにはあまりみえなかったらしい。利用者もそう多くはなかったし、その人たちも静かにただ作業しているだけのように映ったという。いとうさんはコワーキングスペースとはコミュニティやコラボレーションが重要という話しをよくしているけれど、バリ島のコワーキングスペースに関しては裕福な外国のデジタルノマドを呼び込むのに成功しただけのような、もしかしたらコロナ禍でそのコミュニティが破壊されてしまったのかもしれないが、普段このイベントで話しているような高い期待値に応えられるような状況ではないようにみえたという。

とはいえ、日本の田舎よりは遥かにデジタルノマドが集まる場所として世界的に認知されているところなので写真をみながら私もいつか行ってみたいと思えた。

ポインタの学び直し、参照とは違う

2時に寝て7時に起きた。深夜に葬送のフリーレン10巻を読んでからなんとなく眠れなくて夜更かししてた。木曜日は会議がなくて自分のために時間を使える。機能開発に集中して実装していた。

go の学び直し

Gopher塾 #4 - 私も解説できるポインタ - DAY1 に参加した。

今日のテーマはポインタ。tenntenn さんが話すのだから深い内部実装の話しなどもあるのかな?と期待していたけれど、これは基本的な go のポインタの扱いを学ぶ講義だった。私にとっては9割は知っていることだった。それでも1割は知らないことがあったので参加して勉強にはなった。この歳になると本やイベントから1-2割学べたら十分だと思う。go は内部的にすべて値渡しで何でもコピーするするといった振る舞いをする。ポインタを渡すと、ポインタの値であるアドレスをコピーすることでプログラムが動く。コピーなので大きな構造体をそのまま渡すとその分のメモリのオーバーヘッドがあって遅くなったりする。ポインタならアドレスだけのコピーで済む。

go には参照の概念はないという説明があって、ポインタと参照は別の概念なんだと今更ながらに気付いた。gpt-4 にポインタと参照の違いを尋ねたりしていた。参照は初期化後に変更できなかったり、null を参照できなかったり、ポインタ演算のようなことができなかったりすることで安全にプログラミングするための言語機能と言える。一般的には参照はポインタを使って実装される。ポインタの方が低レイヤで制約が少ないと言える。参照はポインタの一部の機能を安全にプログラマーに提供していると言える。

次に go のポインタの特徴をまとめる。

  • 型付け
    • ポインタは型付けされていて、特定の型の変数のアドレスだけがその型のポインタに割り当てられる
  • アドレス演算子とデリファレンス演算子
    • これらを単項演算子と呼ぶ
    • アドレス演算子 (&) で変数のアドレスを取得してポインタを作成する
    • デリファレンス演算子 (*) でポインタが指すアドレスに格納されている値にアクセスする
  • ポインタ演算制限
  • ポインタ演算は許可されていない、メモリアクセスの誤りやセキュリティ上の問題が軽減される
  • new と make 関数
    • new 関数を使うと指定された型の新しい変数を作成してそのアドレスを返す
    • make 関数は、スライス、マップ、チャネルなどの複合データ構造を作成および初期化して、それらへのポインタを返す
  • ポインタの nil 値
    • ポインタは、無効なアドレスを表す特別な値である nil をもてる
    • nil ポインタにアクセスしようとすると、実行時に panic が発生する
  • メソッドレシーバとしてのポインタ
    • メソッドレシーバとしてポインタを使うとメソッド内でレシーバオブジェクトの変更ができる
      • 値レシーバは意図せぬ不具合を招く可能性があるから基本的にはポインタレシーバを使う方がよいのではないかといった話しもあった

開発の追い込みに集中

23時に寝て2回ほど起きて7時に起きた。土日コードを書いて疲れていたので月曜日は早めに業務を切り上げて実家のいろいろをやっていた。

開発の追い込み

サーバーサイドとフロントエンドはほぼ開発が完了し、これからテストするだけといきたいところが、想定外のことがあってまだそうはなっていない。

予想外のことは起こるものだ。ガトーは良くやっている by エギーユ・デラーズ

と言っているほどの、予想外というわけでもないが、思った通りに進捗しなくてリリースの危機を迎えている。なにが起ころうとプロジェクトの全責任はマネージャーにある。いま溜まっている issue をメンバーに再分配して乗り切ろうと定例会議で話した。私が2人分ぐらいの作業をすれば1週間もあれば取り戻せる程度の遅れではある。ただ残り時間が1ヶ月しかないだけ。また週末働いてその足で東京に行くのだろうなと直近の未来を想像していた。

上司道 野村監督から学ぶリーダーの器のつくり方

お仕事にテンパっているものの 第86回上司道 野村監督から学ぶリーダーの器のつくり方 に参加した。上司道 に参加するのは2回目。

以前 野村ノート を読んだことがある。 野村監督は言語化にこだわりのある方で選手としても監督としても一流だった氏の実践知の言語化は参考になるかもしれないと思って読んだ。本書は期待した通りでプロ野球に限らず、一般のビジネスパーソンにとっても汎用的に役に立つアイディアがいくつもあったように思う。

例えば、野村監督が捕手に求めるものとして次がある。判断というのは知識と経験を根拠になんらかの基準をもってくだすといったことが書いてあった。判断の前に分析と観察と洞察の3つの段階を語れる人がどのぐらいいるのだろうか。

  1. 分析
  2. 観察 (目に見えるものをみる)
  3. 洞察 (目に見えないもの = 心理を読む)
  4. 判断
  5. 記憶

今思うのは、小さいことを重ねることが、とんでもないところに行くただ一つの道だと感じている。

これはイチローのコメントだが、この言葉は野村監督の野球観に通じていて感銘を受けたと書いてあった。そんな風に野村ノートがおもしろかったので、その延長上で野村監督に関するイベントなら参加してみようと思った次第。

実際のイベントについては、期待値も高かったのかもしれないが、私の求めていたイベントの内容ではなかった。野村監督と付き合いの長い番記者が野球人としての野村監督というよりも、一般人としての野村監督の在り方を伝えるような著書やそのイベント内容だったと思う。あと野村監督の話しを聞きに行ったのだけど、半分以上は講師が自分のことを多く話すのでその点もアンマッチだったと言える。上司道のイベントは2回目なんだけど、これまでどちらも私の求めていたものではなかった。もしかしたらマネジメントやリーダーシップのイベントで話すのはなかなか難しいのかもしれない。それはいろんな業界・業種の人たちにとって参考になるリーダーシップのようなものはないのかもしれないなと感じた。ドメイン知識も含めてのリーダーシップの話しをしないと、宗教のような徳を積んで治めなさいといったありがたい話しの一般化になってしまう気がする。

人間力は定性的なもので言語化が難しい。それよりも実践知はもう少しスキル寄りなものだと私は考えていて、習慣だったり洞察だったりなら誰でも訓練すれば身につけられるのではないかと思う。少なくとも野村ノートからはそういった片鱗が私には読み取れた。

後世に残せるものを書く

0時に寝て4時に起きて6時半に起きた。今日は3つのイベントに参加して疲れた。そのうちの2つを紹介する。

データ指向アプリケーションデザインの紹介イベント

Data Engineering Study #18「データ指向アプリケーションデザイン」 に参加した。監訳者のさいとうさんのブログの 2022年を振り返って を読んだときにたまたまみつけて登録していた。

14:00 - 16:30 というちょっと変わった時間帯に設定されているのはさいとうさんが米国在住で時差によるものだと推測する。さいとうさんのいる場所では21時ぐらいと話されていたような気がする。2時間半分のお仕事を休んでもこのイベントは聞きたいなと思ったので取引先に連絡した上でその時間帯はイベントを聞いていた。

この本は人類の叡智といってよいと私は思う。 さいとうさんによると、2007-2017年の過去10年間の分散データシステムの教科書と紹介されていた。私はそれ以前の研究を知っているわけではないので、私のような初学者にとってはもっと長い期間のデータベース研究の歴史を学べるように感じた。 著者はこの本を書くのに4年を費やしたという。本を1冊書くのに4年とか、著者の偉大さが伺える年月でもある。

著者はデータベースの研究者であろうけれど、すべての研究を自分で行ったわけではないだろう。 他者の研究を調査した上でこういった書籍にまとめるというお仕事も非常に価値のあることだと本書を読んで実感した。私も課題管理の分野でそういうことができればいいなと思う。

さいとうさんの講演のタイトルは「30分でわかる〜」という接頭辞がついているものの、さいとうさんと同レベルの人にしかわかるわけはなくて、このイベントに参加しても本に書いてある全体像がわかるだけで、本の内容がわかることはほぼないと言える。私はこの本を精読したのでさいとうさんの話しを聞きながら、あの辺の書いてあった話しの紹介だなと記憶を辿りながら聞いていた。

コワーキングのオンラインイベント

月例のカフーツさんのオンラインイベントに参加した。先月の所感はここ 。今日の話題は 間借りコワーキング だった。実際にカフーツさんで間借りコワーキングを実践された方をゲストにお招きしてその体験談を話してもらってみんなで議論したりしていた。ここで言う間借りとは、コワーキングスペースの運営をメンバーにも体験してもらってそこから新たな価値を模索しようといったもの。インターンシップのようなものとも言えるし価値創造のための施策とも受け取れる。ただのアルバイトではないという意図で「間借り」という名前を付けている。最初に説明を聞いていて、あまり私にはピンと来なかった。それは it 業界は勉強会を個々に開くのが当たり前過ぎて、そんなのはわざわざコワーキングスペースの運営者にならなくてもすぐにできることのように思えたから。おそらくここは it 業界が先進的過ぎて、普通の組織や会社に勤めている人は、気軽に知人や不特定多数の人たちを呼んで勉強会 (イベント) をしたりしないのだと推測する。

それからコミュニティの話題で、強い紐帯と弱い紐帯の話しが出てきて、リンダ・グラットン 氏の著書に書いてあった言葉として「境界接続者」という用語を紹介されていた。私が軽くググってみてもその用語は出てこないのでおそらくは次の研究者の研究を紹介されている一節だったのではないかと推測する。

 アメリカの社会学者M・グラノヴェッターの「弱い紐帯の強さ」という有名な説をご存じの方は多いと思う。「紐帯(ちゅうたい)」とは文字どおり紐(ひも)や帯(おび)のことではあるが、転じて「二つのものをかたく結びつけるもの」また「 血縁・地縁・利害関係など、社会を形づくる結びつき」という意味がある。(「デジタル大辞泉」より)「弱い紐帯の強さ」とは『価値ある情報の伝達やイノベーションの伝播においては、家族や親友、同じ職場の仲間のような強いネットワーク(強い紐帯)よりも、「ちょっとした知り合い」や「知人の知人」のような弱いネットワーク(弱い紐帯)が重要である』という社会ネットワーク理論である。もう40年前に発表されたが、SNSが世の中を席巻するようになり再び注目をあびている。

会社内の「弱い紐帯(ちゅうたい)」

なにかの英語の言葉の訳語として「境界接続者」という用語をあてているのだと推測する。ここでいう境界とは、コミュニティとコミュニティをつなぐ役割をする人のことでそういった人がコミュニティにおいて大きな価値を提供しているというのが、弱い紐帯の強さで提案されている価値に相当するらしい。それを体験もしくは実践する機会として間借りコワーキングはうまく作用するのではないかという企画につながってくる。そこまで聞いて、単なるインターンシップではないことは理解できた。

私はどちらかと言うと弱い紐帯よりも強い紐帯のコミュニティの価値を認める方だと言える。その真逆の考え方は懸念もいくつかあるものの、普段は考えないことを考える機会としておもしろかったと言える。社会で生きていく上でどちらの要素もあることなので一方に固執しなくてもよいというのも正しいと思う。

go の学び直し 静的解析編

23時に寝て2時に起きて5時ぐらいにも起きて7時に起きた。昨日は podcast 収録でたくさん話して疲れてしまってそのまま帰ってすぐ寝た。すぐ起きるんだけど。

ストレッチ

今日の開脚幅は開始前157cmで、ストレッチ後159cmだった。朝出かける前に開脚のストレッチしたら数値よくなるかな?と思ってやってみたらいつもより少しよくなった。ストレッチはいつも通りとも言えるし、腰の張りがまだまだ残っていることも確認できた。疲労が溜まっているんよな。毎週ストレッチしているからこの程度の疲労で済んでいるとも思える。お正月に実家から戻ってきてから1月の東京出張と35日は終えた。来週はまた2月の東京出張とその週末に49日がある。ここまで体力がもてばその次の法要は初盆なので少し空く。体力的に第4四半期の山場と言えるかもしれない。ただがんばる。

go の学び直し

Gopher塾 #3 - 静的解析を使ったGoの開発ツール制作 入門編 - DAY 1 に参加した。

過去にも Python とマクロ、インポートフックと抽象構文木Java のアノテーションプロセッサを試す など、メタプログラミングのアプローチやコード生成などを実務で使ってきたので静的解析にも関心がある。講義内容の詳細は書かないけど、静的解析のような難しい話題に対して4時間という短い時間でとてもよい講義になっていたと思う。go の静的解析の要点や提供されているツールなどを一通り学ぶことができた。もちろん、実用するには試行錯誤や習熟を必要とするけど、取っ掛かりとして十分な内容に思えた。

skeleton というツールを使って静的解析のための analyzer プロジェクトのひな形を作る。

$ go install github.com/gostaticanalysis/skeleton/v2@latest
$ skeleton myanalyzer
$ tree myanalyzer
myanalyzer
├── cmd
│   └── myanalyzer
│       └── main.go
├── go.mod
├── myanalyzer.go
├── myanalyzer_test.go
└── testdata
    └── src
        └── a
            ├── a.go
            └── go.mod

意図的にテストが落ちるようになっていてすぐ動作確認できる。

$ go mod tidy
$ go test                                          
--- FAIL: TestAnalyzer (0.05s)
    analysistest.go:448: a/a.go:5:6: diagnostic "identifier is gopher" does not match pattern "pattern"
    analysistest.go:512: a/a.go:5: no diagnostic was reported matching "pattern"
FAIL
exit status 1
FAIL	myanalyzer	0.349s

いろいろ説明を端折るけど、試しに FuncDecl の ast ノードに対して関数の行数をカウントする処理を実装してみた。analysis パッケージの Pass を使うと便利なユーティリティが提供されていて、静的解析をするときに面倒な処理をショートカットできて簡単に実装できることが理解できた。ここで作った analyzer は go vet で実行できるそうなのでプロジェクトの独自ルールを analyzer で実装して ci でチェックするといった運用もできる。応用範囲は広そう。

case *ast.FuncDecl:
	fmt.Println(n.Name, n.Pos(), n.End())
	start := pass.Fset.Position(n.Pos()).Line
	end := pass.Fset.Position(n.End()).Line
	fmt.Println("the number of lines:", end-start)

日銀会合の質疑応答をみた

0時に寝て7時に起きた。最近はよく眠れるようになってきた。

日銀会合の結果

12時から 1on1 だったのでずっとみていたわけじゃないけど、12時前チェックしたら為替が円安に触れていたので現状維持なことが伺えた。業務を終えてから後藤さんの記事も拝見した。YCC はいずれ修正されるので近い将来に金利が上がることはわかっているが、そのときに市場が動揺して急激な円高になってしまうようなことは経済にとってよくないとのこと。本来はそういうことが起こらないように中央銀行と市場が丁寧に対話を重ねるものだという。いまの日銀の雰囲気だと、3月か4月に急激な形で訪れるかもしれないといった懸念があるように伺えた。

後藤さんが質問しているところだけでもみようと思ってみた。のらりくらりとかわされてしまったとのこと。

コワーキングのオンラインイベント

月例のカフーツさんのオンラインイベントに参加した。先月の所感はここ 。メンバーの1人が ジモティー でイベントするのが熱いという話題がおもしろかった。ジモティーって中古品の売買するプラットフォームじゃないの?とみんな思ってたら、最近はイベントなんかもできるようになっていて、ユーザーが多いのにあまりイベント開催に使っている人がいないから狙い目だという。へーと思って、私もスマホにジモティーをインストールしてどんな雰囲気か眺めてみた。ざっとみたら婚活イベントが多くてうんざりしたが。

コワーキングスペースのイベント管理プラットフォームの開発を進めているらしい。日本にはコワーキングスペース向けのプラットフォームというのが存在しないからチャンスはあるのだと思う。これまでなかったのはコワーキングスペースという市場が小さ過ぎて儲からないから誰も参入しようとしていないだけでしょうというのは納得感がある。さらに私からみると、すでに世の中に sns や無料のプラットフォームがたくさんある中で、わざわざコワーキングスペース向けのツールが必要なのかどうか、需要のところでどうなんだろう?という懸念はある。これからクラウドファウンディングなども予定しているそうでそれが公開されたら、私も (会社として) お世話になっているから少しくらい寄付しようかと思う。この場合は会社間の付き合いとも受け取れるから協賛金として会計処理してよいはず。

今週は日銀会合に注目

2時に寝て7時半に起きた。ちょっと生活が乱れ気味。

コードリーディングの準備

tenntenn さんの コードリーディングをしよう #tennconn のやり方を参考に、コードリーディングの勉強会を行うことにした。ある4つのプログラムがあって実績もあるという話しなので基本的には既存のコードがどのように動いているのかをメンバーみんなで確認しておこうといったもの。その段取りを決めたり、日程のスケジュールを調整したり、基本的にはイベント当日にソースを読むようにして準備の負担を少なくする一方、私が一番既存のコードを知らないので事前にソースを読んでおこうとリポジトリを眺めていた。

インフレ勉強会

エンジニアのためのインフレ研究会 #2 に参加した。この火曜日・水曜日の2日間に渡って開催される日銀会合に注目が集まっているという話題があった。議論に揉めたりしなかったら正午前に会合の結果がすぐ公表されるが、政策変更があるときは発表が遅れる傾向にあって発表時間が早い・遅いでも結果を予測して為替などが動くらしい。後藤さんの記事でも同じようなことが書いてあった。これまで日銀会合なんて気にしたことはなかったけど、政策変更の可能性があるかも?と言われるとへーと思って注目してみようと思う。こういう関心をもつ機会が増えると経済を学ぶきっかけになるかもしれない。

ストレッチと読書会で体力を使い果たした

23時に寝て3時と5時に起きつつ7時に起きた。21時半には出張から家に戻ってきて天気がよかったらオフィスへ行ってたんだけど、雨降りだったのでそのまま寝てた。今日もストレッチを終えてから読書会に参加したらその後は眠くなってしまって家に帰って寝ていた。ストレッチと読書会しかやっていないのに一日の体力を使い果たした状態になるぐらいの疲労が蓄積している。

ストレッチ

今日の開脚幅は開始前155cmで、ストレッチ後159cmだった。数字の上では先週と大差ないのだけど、疲労の蓄積で右腰と右股関節周りが大変なことになっている。久しぶりにストレッチを受けていて辛くて耐えきれないところの一歩手前まで到達していた。ふくらはぎとか限界に近かったが、なんとか耐えきった。出張前に懸念していたことでもあったけれど、結果として、出張前のストレッチで復調しつつあった体調は悪化したと言わざるを得ない。たくさん歩いたことや慣れないホテル暮らしで腰と右足に負担がかかってしまった。

オンライン読書会

先月はオフィスの引っ越しで不参加だったため、1ヶ月飛ばしで 第6回『Go言語による分散サービス』オンライン読書会 に参加した。本書の読書会は今日で最後の読書会で次の2章を読んだ。

  • 10章 Kubernetes でローカルにアプリケーションをデプロイ
  • 11章 アプリケーションを Kubernetes でクラウドにデプロイ

10章では kind というローカル k8s クラスターを構築するツールを使って go アプリケーションをデプロイする。データベースのようなデータを永続化するようなサービスのためのリソース種別に StatefulSets がある。私は使ったことがないリソース種別だったのでキーワードを知ることができてよかった。jsonnet というデータテンプレート言語というツールも出てきて、なんだこれは?と思ってびっくりした。これも初見だし、使っている話しも聞いたことなかった。本書でも k8s については書籍を一冊書いても足りないと説明されていて、アプリケーションのデプロイに必要な k8s マニフェストの説明を10章だけでやって、ほとんどの読者は置いてけぼりだと思う。k8s の運用経験のある私が読んでも yaml の正当性なんて動かしてみないとわからないし、k8s はバージョンアップが速いのですぐに陳腐化する可能性もある。helm のパッケージングなどにも触れていてキーワードを知るという意味ではよかったと思う。この2つの章は k8s へのデプロイはこんな感じですよという雰囲気を味わってもらうお気持ち程度の内容だと思う。

15時頃には読み終えて、それから8人ぐらいで雑談していた。私は書籍の組版を自分でやったことはないのだけど、しばたさんは出版社によっては自分で組版までやって pdf で納品しているらしい。現行は tex で管理しているようにみえる。余白の調整や索引作るのも自分でやっているらしい。ある本は後になってから出版社の規定している余白よりも広過ぎてページ数が増えたことに気付いて、その後の本で余白を調整したりしたとのこと。本来はそういうお仕事は編集者のお仕事ではある。とくに索引は数ページになったりするので大変といった話しをされていた。effective java 第3版だと索引だけで9ページある。