週刊ニュース Lv10(2023年1月21日~2023年1月27日)

昨日は出かけていたため週刊ニュースを書くことができませんでした。

最近は急に冷えてきて、キーボードも冷えていて指が冷たいですが頑張って書いていきます。

1 月 21 日(土)

make で@マークでメンションできるようにする

  • 記事にしました。
    • [[Makeを使ってNotionからSlackに@マークでメンションする]]
  • 実現するために思ったより遠回りする必要があったので、もっと簡単にできたら嬉しいなと思いました。競合の zapier だともっと簡単にできたりするのだろうか。

Stripe の SetupIntents API+Payment Element を使って決済情報を収集する

  • 参考:https://stripe.com/docs/payments/save-and-reuse
  • Stripe の SetupIntents API は事前に決済情報のみを収集したいというようなユースケースのときに便利です。
  • SetupIntent を作成する際に引数に customer を渡しておくと、セットアップが成功すると引数の customer に紐づいてくれます。下記のようにすることでセットアップに成功すると、指定した customer に紐づく SetupIntent が作れます。
    • create_setup_intent_params = {
        customer: stripe_customer_id,
        payment_method_types: ["card"],
      };
      setup_intent = Stripe::SetupIntent.create(create_setup_intent_params);
      
  • SetupIntent には、client secret が含まれており、クライアント側から SetupIntent のクライアント情報にアクセスするには client secret が必要なため、client secret を返却してあげます。
    • {
        client_secret: setup_intent.client_secret;
      }
      
  • 今回フロント側は React のため、必要なライブラリをインストールしておきます。
  • 決済情報を入力するためのフォームを表示するには、Stripe の Payment Element コンポーネントを使う必要があります。Payment Element コンポーネントを使うためには Stripe の Elements コンポーネントが必要です。
  • Stripe の Elements コンポーネントには、先程サーバーから返却した client_secret が必要でした。
  • このサーバーとフロントの連携部分を理解するのに時間を要しました。。

1 月 22 日(日)

React Router のナビゲーションを型安全にする

  • 参考: https://tech.mobilefactory.jp/entry/2022/12/01/000000
  • この記事を見ながら、ナビゲーションで直接文字列を指定している箇所を型安全にできないか挑戦してみましたが、使いやすい型を自動生成する部分の参考記事のコードが理解できないため、自分がわかる形で実装をしてみたもののうまくいきませんでした…また時間があるときにチャレンジしてみたいです。

1 月 23 日(月)

Go 言語のカンマ ok イディオム

  • 初めての Go 言語の 10 章からは 1 ~ 9 章の内容をしっかり理解していないと読み進めるのが難しかったため、1 ~ 9 章を 2 週目進めています。
  • 3.4.2 では、マップの場合のカンマ ok イディオムについて書かれていました。
  • マップは Ruby でいうハッシュのような key と value の組み合わせです。
  • 例えば、マップの場合は「ゼロ値と結びつけられているキー」と「マップに存在しないキー」を区別するときに使うようです。
    • lunchMenu[4]については、マップに存在しないキーのため、false が返ってきています。
    • var lunchMenu = map[int]string{
          1: "Aランチ",
          2: "Bランチ",
          3: "Cランチ",
      }
      v1, ok1 := lunchMenu[1] // Aランチ true
      v2, ok2 := lunchMenu[2] // Bランチ true
      v3, ok3 := lunchMenu[3] // Cランチ true
      v4, ok4 := lunchMenu[4] //  false
      

Ebiten 触ろうと思ったらエラーが出た

  • Ebiten では go-gl を使っているようなのですが、それ関連で出たエラーっぽかったです。自分の作業環境は WSL 上の Docker コンテナに構築しているため、その中で動かそうとすると作業環境に go-gl を動かすために色々インストールする必要がありそうだったので、自分の場合は Ebiten 触る用のコンテナを作ったほうがよさそうです…

1 月 24 日(火)

Go が難しい理由がなんとなくわかった

  • Rails のレールに乗りながら Ruby を覚えていった口だったので、Ruby については気になったタイミングでトップダウン的な感じで覚えていくことができました。
  • ただ、Go はフレームワークを使って覚えようとしているわけではなく、Go 言語単体でボトムアップ的な感じで学んでいるためレールもなく、〇〇をしたいと思ったときは、その実装のスタンダード的なことを調べてパーツを作っていく必要があるため、難易度があがるのかなと思いました。
  • そういう意味では、Rails のレールというのはやりたいことを素早く実現しつつ、必要なタイミングでレールを降りて Ruby やさらにその下のレイヤーなりを調べていくことができたので第 1 言語としては良かったのだろうなと思いました。

小学生漢字問題を解消できないか調べた

1 月 25 日(水)

特になし

1 月 26 日(木)

Ruby3.2 のバージョンアップ後 yaml のパースがうまくいかない

  • なぜか Ruby3.2 x Rails7(6)系の test 環境のときだけ yaml のパース結果が変わるということがあります。。
  • Rails7(6)系の test 環境のときだけ結果が変わるので Rails の設定の影響を受けていそうですが、原因がきりわけられませんでした。。本当に謎です。。

1 月 27 日(金)

エクセルの実態は XML

  • エクセルは unzip することができるのですが、worksheet の実態は XML ということを教えてもらいました。CSV もカンマ区切りのただの文字列だったことを知ったときと同じくらいの衝撃でした。
Hugo で構築されています。
テーマ StackJimmy によって設計されています。