週刊ニュース Lv10(2023年1月21日~2023年1月27日)
Metadata
Date: January 29th, 2023
Category: 週刊ニュース
昨日は出かけていたため週刊ニュースを書くことができませんでした。
最近は急に冷えてきて、キーボードも冷えていて指が冷たいですが頑張って書いていきます。
1月21日(土)
makeで@マークでメンションできるようにする
記事にしました。
実現するために思ったより遠回りする必要があったので、もっと簡単にできたら嬉しいなと思いました。競合のzapierだともっと簡単にできたりするのだろうか。
StripeのSetupIntents API+Payment Elementを使って決済情報を収集する
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のナビゲーションを型安全にする
この記事を見ながら、ナビゲーションで直接文字列を指定している箇所を型安全にできないか挑戦してみましたが、使いやすい型を自動生成する部分の参考記事のコードが理解できないため、自分がわかる形で実装をしてみたもののうまくいきませんでした…また時間があるときにチャレンジしてみたいです。
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言語としては良かったのだろうなと思いました。
小学生漢字問題を解消できないか調べた
自社のプロダクトでは小学生が使うことを想定しているのですが、読めない漢字があるという問題があります。
そのため、小学生の場合は学年に応じて読めない漢字にはるびを振るみたいな対応が必要になります。
有名所では、Yahooが提供しているAPIがありますが、1分間で300回リクエストという制限があるためスケールが難しそうです。
プロダクトはフロントからGraphQLでリクエストをして、サーバーからはjson形式で返すという構成になっているため、この間に処理を挟めばいけそうです。
また、漢字によみがなを振るという部分についてはMeCabというオープンソースの形態素解析エンジンが使えそうでした。
形態素解析の仕組みも気になるのでそのうち遊んでみたいです。
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もカンマ区切りのただの文字列だったことを知ったときと同じくらいの衝撃でした。