bouzuya.hatenablog.com

ぼうずやのにっき

Google Drive API で PDF を生成してみた

bouzuya/rust-sandboxgoogle-docs-pdf で Google Drive API を使って Google Docs から PDF を生成するのを試した。

https://developers.google.com/drive/api/reference/rest/v3/files/export を呼び出しただけ。

認証箇所には googleapis/google-cloud-rust を fork した bouzuya/google-cloud-rust のものを使ってみた。使いにくそうなところがあったので TokenSource という trait で wrap した。

明日はおそらく Google Docs API でファイルを書き換えて……と進める。


今日のコミット。

dependabot 対応 / Magic Trackpad 充電

週次の dependabot 対応。特に気になるものはない。そろそろ firestore 関連 crate は 1.x にしてしまっても良いかもしれない。


昨日のことだけど Magic Trackpad の充電をした。 2% だった。

前回は 2024-03-13 2% 、今回は 2024-04-10 2% 。だいたい 1 ヶ月に届かないくらい。


今日のコミット。

bouzuya/cloud-storage-signature 0.3.0 をつくった

bouzuya/cloud-storage-signature v0.3.0 をつくった。

昨日 (2024-04-09) つくった builder で HTML Form の全フィールドに対応した。 api を変えて HtmlFormData::builder().key("object-name").build() のような形で構築できるようにした。

次は HMAC 対応だけど、先送りしようかな……。明日は dependabot で更新されているものを確認する。


今日のコミット。

bouzuya/cloud-storage-signature で builder を書いている

bouzuya/cloud-storage-signature に HTML Form の全 Field への対応を入れようとしている。いまの引数の構造体にフィールドを追加すると複雑になってしまうので、 Builder パターンを適用してみようとしている。

今日はとりあえず policy なしの場合に対応した。明日は policy を含めて対応させる。


今日のコミット。

bouzuya/cloud-storage-signature 0.2.0 をつくった

bouzuya/cloud-storage-signature 0.2.0 をつくった。

HTML Form の指定に Content-Length と Content-Type を指定できるようにした。

https://cloud.google.com/storage/docs/xml-api/post-object-forms

あとは↑を使った例を examples/ に追加した。

素朴に Rust で Web サーバーを書いて、 HTML を返して JavaScript を書いて……という感じ。 input[type=file] でファイルを選んだら、サーバーにリクエストして policy の設定された HTML FormData を生成し、その Form を送信して画像を Cloud Storage にアップロード、アップロードの完了をサーバーに通知してファイル追加。そぼくな画像アップローダー。

明日はその他の HTML Form のパラメーターにも対応しようかな……。


今日のコミット。

2024-W14 ふりかえり

2024-W14 をふりかえる。

2024-W14 の目標 とその記事

目標。

  • ☑ 転職して 1 年経ってどうかを書く
  • ☑ 署名付き URL 用 crate を公開する

記事。

つくったもの。

育児。

  • 上の子は二本目の生え変わり。歯をずっと触っている
  • 下の子の入園式。用意されている椅子に座らなかった (2024-04-01)

2024-W14 はどうだったか。

転職して 1 年を振り返った。うまく整理できなかった。

東京に行った。

オッペンハイマー』を観てきた。 3 時間があっという間だった。ただ同じ姿勢で座り続けるのは厳しかった。

cloud-storage-signature をつくった。

2024-W15 の目標

  • cloud-storage-signature の API を調整する

転職から 1 年 / 親知らずを抜いた

転職から 1 年が経った。振り返ってどうか。

なぜ転職したのか?

前職には、新規の自社サービスの開発をするという話で入った。コロナの影響もあって開発が停止し、他社の仕事をする状況が長く続いた。正式に自社サービスの開発の中止が決まり、開発部署が解散になったので、辞めることになった。

転職先に求めた条件は?

  • フルリモート …… 神戸から働けること。これを落とすと選択肢がほとんどなくなる。保育所送迎などもあるのでフレックスなど時間調整もできるほうが望ましい。
  • 静的型検査 …… 技術選択の観点から、大きな価値観のズレを防ぎたい。ぼくは静的型検査のない言語を毎日書く時点で楽しくない。
  • チーム開発 …… ひとりでだいたい一通りできる。しかし、さまざまなフィードバックが得られない環境で働くことは自身の成長に悪影響があると感じる。また働き方の幅が狭まる。楽しくない。

前職での最後の仕事が過去最低で、詳細は書かないが反面教師としている。味方の背中を撃つ・適切にフィードバックしない・ユーザーのことを考えない。人間としてそういうことをしないよう心がけている。

入社時点でどんな会社だったか?

  • 介護の現場に医療アクセス (サポート) を提供する SaaS
    • 介護・医療のどちらのドメインにも入社時点で特別な興味・関心はなかった。ぼくは「良いソフトウェアをつくりたい」と考えていて、「良い」にするためには誰がどう使うのか機能するのかが重要で、それがドメインへの理解を要求する。ただ入社時点では別になくてもぼくはいいと思っている。
  • フルリモート・フルフレックス
    • 条件通り
  • 2 週間スプリントのスクラムチームで 4 〜 7 人程度
    • スクラムイベントを比較的素直に実施している
    • 少なくとも 1 人チームではない
  • フロントエンド・バックエンドの区別はなく一通りやる
    • ぼくは最低限はできる
  • ペアプロを基本としている
    • 特殊、興味をもった点
  • 技術スタックは TypeScript / React Native / Next.js / NestJS / Firebase
    • NestJS はごく一部で、 Firebase を素朴に使っているような状態
    • GAS : Google Apps Script も一部ある

何をしたか?何をしているか?

  • プランニング・リファインメントのプロセスを改善し、次スプリント以降をぼんやりと意識できるようにした
  • アプリにプッシュ通知などの機能を追加した
  • バックエンド (Web API) を整備し、 Firebase への依存を軽減しようとしている
    • それに合わせて Rust と GraphQL を導入した
  • カジュアル面談や採用面接を実施している
  • 2 ユニットある開発者ユニットのうちの 1 ユニットの、ユニットリーダーという役割
    • 以前よりユニット

いろいろやっているはずだけど、意外と書けないものだ。

もともと予定にはなかったけど、 Rust ができることになったのは嬉しい。

チームに思うことはあるか?

最高とは言えないけど、良くできる・なっていくと感じられるチームだと思う。ユーザーを見て仕事ができる。意見を言える。議論ができる。変化できる。そういう当たり前 (だが、意外とできていないチームもある) のことができている。

常にうまく行くわけじゃないし、スタープレイヤーが揃っているとかじゃないけど、良い雰囲気で仕事ができていると感じる。

自身の変化はあるか?

ぼくは以前よりもチームについて考えられるようになったと感じる。そも「チームについて考える」みたいな考え自体が出てこない。自分と他人じゃなくて、そもチームがひとつの単位として捉えられている。

そういう状況になるのは、ねらいどおりだし、加えて、そういうことを意識しやすい役割をまかせてもらえていることも嬉しい。

現在のチームだけじゃなくて、人を増やすなら……増えてきてチームを分けるとしたら……みたいな組織について話す機会もあって、楽しい。カバーできる範囲・可能性が広がっていると感じられて、嬉しい。

また、ペアを基本とするような働き方をする中で、リモートワークでは複数人で働くべきだと確信した。

孤独感みたいなものはなくなった。一緒に仕事をしている感が得られている。変に迷ったり、チャットで意見を待つみたいな状況はほとんどない。オンボーディングなど教育的な側面もある。もっと細かいノウハウもいくつかある。たとえば Meet は 3 人程度にしないと話しづらいとか、タスクは複数人に対して割り当てて、その中で並行するなり工夫すると良いとか。

あとはポジティブな表現を増やしている。会社の色なのかな。ここは長くなりそうだから書かないけど。

課題は?

いっぱいある。技術的負債とか、メンバー間のスキル差異とか、議論や合意が多いと効率が悪いとか、プロダクトに特化した話とか。

最近だとチーム内チーム (開発者とデザイナの壁) みたいなものを問題視して、それをなくすために 1on1 増やしてみたり、開発者の Meet に入ってもらったり、いろいろやっている。

ホントいろいろあって、いろいろやっている。

先に書いた通り、良くなっていく雰囲気がある。「どうすりゃいいんだ……」みたいな行き詰まった状態にないってのがとにかく良い。

1 年は思ったより早く感じた。一ヶ月目で既に長く居るみたいに感じたように思うけど、逆に 1 年経ってみると、まだそんなに居ないような感じがして不思議だ。

総じて?

楽しくやっている。 Rust を仕事で書いているし、チームで良いものをつくろうとしている。


親知らずの抜歯。これで一通り抜いた。

桜が咲いている。

仕事のコードを書きすぎた (書かないようにしないと) 。


今日のコミット。