浜田市の防災情報をLINEで通知してくれるBotを作った。

はじめに 浜田市の若者会議のメンバーの方から「浜田市の防災情報を通知してくれるアプリとかあるとうれしい」という話をいただいたので、実際に作ってみた話です。 作ったもの github.com 実際にLINEで防災情報を通知してくれるBotはこちらのQRコードを読み…

typeprofのインスタンス変数が未初期化のまま使われている警告を解消した

以下のPRをRubyに投げたところ、typeprof周りのテストで落ちているようだった。 github.com で、どの辺が原因なのかtypeprofのテストを回してみたら以下の警告が表示されていた。 /home/sh/rubydev/typeprof/lib/typeprof/analyzer.rb:496: warning: instanc…

浜田市の若者会議に選任された

この度、住んでいる浜田市の若者会議の委員に選任されました。 やることとしては、委員各々が持つスキルとかを使って若者が過ごしやすい街づくりを進める感じです より詳しいことは下記のPDFを読んでいただければわかります。 https://www.city.hamada.shima…

雑にBacklogのチケットを一括で作成できるスクリプト書いた

はじめに 仕事の関係で一括でBacklogに複数のチケットを登録する必要があり、作成したものになります。 手作業なんて面倒くさいことしたくない人は是非使ってみてください。 作ったもの github.com 使い方 使い方は簡単。 上記のコードをクローンした後、必…

高校生にプログラマーってどういう仕事か話してきた

経緯 Hamada.rbとかCoderDojo浜田とかでアレコレ作ったりしてたのがきっかけで知り合った方から「授業(という体のインタビュー)をしてみませんか?」とお誘い頂いたのがきっかけですね。 で、話を聞いてみると浜田高校では以下のような取り組みをしていて「…

GoでZoomのMTGを作成してみた

はじめに この記事は、仕事で触ることになったGo製Zoomライブラリを触った時の備忘録です。 実際に試せるサンプルコードもありますので、気になった人は以下のリポジトリをクローンして試してみてください。 github.com やりかた まず、Zoomの開発者登録とか…

Goのライブラリにはじめてパッチを投げた

はじめに この記事は、仕事で必要なライブラリにパッチを投げてそれがマージされた時の備忘録です。 今後もパッチを投げる可能性があるのでメモ書きとしてまとめている感じです。 背景 最近、仕事ではもっぱらGoを書いているんですが、ライブラリにパッチを…

Zoomの録画ファイル自動アップロード&自動文字起こしをterraformでできるようにしてみた

はじめに 以前書いた以下の記事の内容をそのままterraformでできるようにしてみました。 gamelinks007.hatenablog.com gamelinks007.hatenablog.com またついでにSlackなどに投げれるように文字起こししたファイルを受け取るLambda関数も追加してみました。 …

Zoomの録画データを自動で文字起こししてみた

はじめに この記事は先日書いたAWSとRubyを使って動画ファイルの自動文字起こしを試してみた時の続きです。 gamelinks007.hatenablog.com 今回は実際にZoomの録画データを自動的に文字起こしできるようにしてみました。 注意事項 とりあえず、手順をまとめた…

Ruby/AWS S3/AWS Lambda/Amazon Transcribeで動画の文字起こしをする

はじめに RubyとS3とLambdaとTranscribeを使ってS3にアップロードされた動画を自動的に文字起こしするフローを作ってみました。 この記事はその時の手順などをまとめたものになります。 何故やったかというと、妻が「中国語の動画の字幕が欲しい」と言ってい…

Rubyのしくみ輪読会を完走した話

はじめに 半年くらい前から少人数で「Rubyのしくみ」の輪読会をやっていて、最近完走しました。 これはその輪読会のまとめ記事です。 ことの発端 半年くらい前に「Rubyのしくみ、輪読会とかないと読む機会無いよね」という話が出て、「じゃあ、輪読会やりま…

Rubyのエラーメッセージを日本語に差し替えてみた

はじめに Rubyの初学者の方から「エラーメッセージの読み方がよくわからない」という話を聞き、「Rubyのエラーメッセージを日本語化できないか」試してみた記事です。 作ったもの Konnyakuというgemを作りました。 github.com rubygems.org gem install konn…

Refinementsで遊んでみた

はじめに Refinementsで遊んでみた記事です。具体的な内容としてはトップレベルでRefinementsが使えないかなと試してみたとき備忘録です。 Refinementsとは Rubyでは、後から自由にクラスにメソッドを追加することができる。 class Integer def hoge puts :h…

【Ruby 3.0 Advent Calendar 2020】Dataクラスが廃止された【23日目】

はじめに Ruby 3.0 Advent Calendar 2020 23日目の記事になります。 昨日は、【Ruby 3.0 Advent Calendar 2020】Ruby 3.0 で WEBrick と SDBM が標準ライブラリから削除される【22日目】です。 secret-garden.hatenablog.com 今日は、Ruby3.0でC拡張などで使…

【Ruby 3.0 Advent Calendar 2020】C APIのヘッダーが分割された話【16日目】

はじめに Ruby 3.0 Advent Calendar 2020 16日目の記事になります。 昨日は、【Ruby 3.0 Advent Calendar 2020】ArrayやStringのメソッドの返り値が変更された話【15日目】です。 今日は、Ruby3.0でC APIのヘッダーが分割れたことを紹介します。 C APIとは?…

【Ruby 3.0 Advent Calendar 2020】ArrayやStringのメソッドの返り値が変更された話【15日目】

はじめに Ruby 3.0 Advent Calendar 2020 15日目の記事になります。 昨日は、「Ruby3.0で導入される型定義!TypeprofでBlockやProcを解析してみる」です。 qiita.com 今日は、ArrayやStringの返り値が変更された話を紹介します。 これまでの返り値 これまで…

【Ruby 3.0 Advent Calendar 2020】Win32APIが廃止された【11日目】

はじめに Ruby 3.0 Advent Calendar 2020 11日目の記事になります。 昨日は、【Ruby 3.0 Advent Calendar 2020】Arguments forwardingがちょっと便利になった【10日目】です。 gamelinks007.hatenablog.com 今日は、Win323APIが廃止されたことを紹介します。…

【Ruby 3.0 Advent Calendar 2020】Arguments forwardingがちょっと便利になった【10日目】

はじめに Ruby 3.0 Advent Calendar 2020 10日目の記事になります。 昨日は、【Ruby 3.0 Advent Calendar 2020】Ruby 3.0.0-preview2 がリリースされた【9日目】です。 secret-garden.hatenablog.com 今日はRuby 3.0で入ったArguments forwardingの変更につ…

さくらのVPSでのNginx+ティラノスクリプトでのリリース処理

はじめに この記事は過去に書いた以下の記事のティラノスクリプトのゲームをさくらのVPSにリリースした時の覚書です。 gamelinks007.hatenablog.com 前提 さくらのVPSとNginxを使い、ティラノスクリプトのゲームをリリースする手順。 前提として標準OSのイン…

【Ruby 3.0 Advent Calendar 2020】Ruby3.0で非推奨から廃止になるメソッドたち【4日目】

はじめに Ruby 3.0 Advent Calendar 2020 4日目の記事になります。昨日は、【Ruby 3.0 Advent Calendar 2020】Ruby3.0でRubyで実装されたメソッドたち【3日目】です。gamelinks007.hatenablog.com 長らく非推奨だったメソッドを「Ruby3.0のリリースに合わせ…

【Ruby 3.0 Advent Calendar 2020】Ruby3.0でRubyで実装されたメソッドたち【3日目】

はじめに Ruby 3.0 Advent Calendar 2020 3日目の記事になります。昨日は、【Ruby 3.0 Advent Calendar 2020】Ruby3.0に投げたPull Request【2日目】です。gamelinks007.hatenablog.com今日はRuby 2.7から対応されている一部メソッドがRubyで実装されている…

【Ruby 3.0 Advent Calendar 2020】Ruby3.0に投げたPull Request【2日目】

はじめに Ruby 3.0 Advent Calendar 2020 2日目の記事になります。昨日は、【Ruby 3.0 Advent Calendar 2020】Ruby に右代入がやってくる【1日目】です。 secret-garden.hatenablog.com右代入、このまま何事もなく入るといいなぁ……この記事では、僕が投げたP…

社会人になってからプログラマーになった話

はじめに 少し前にFediverseのTLで「別業種とかからプログラマーになった話があるとよさそう」と盛り上がってた。 僕自身は社会人になってからプログラマーとして仕事してるので、その辺の経験とか経緯を記事にしてみると需要がありそうかなと思い、書いてみ…

Google Cloud Run + Nginx でティラノスクリプトのゲームをPWAでリリース

はじめに そこそこ規模の大きいティラノスクリプトで作られたゲームをPWAでリリースしようとした際に起きた現象とその対策について書いた記事です。 内容としてはPWAでリリースすることを考えている人向けの記事になります。またDockerなどを使っているので…

GitHub Pages + PWAでティラノスクリプトのゲームをスマホで動かしてみた

はじめに ティラノスクリプトで作ったゲームをPWAにしたい人でGitHub Pagesを使いたい人向けの記事です。 動機 以前、この記事を読んでティラノスクリプトでもPWA対応ができることは知っていたんですが試したことがなかったのでやってみた。qiita.comで、PWA…

JavaScriptのexportとimportっぽいものをRubyで書いてみた

はじめに とある勉強会で以前聞いた「JavaScriptのimportとexportみたいなのがRubyで出来ないか?」という話をもとにRubyでやってみた記事です。 実際のコード module Klass @@klasses = {} def export(*klasses) klasses.each{ @@klasses[_1.to_s.to_sym] =…

Ractor超入門

はじめに この記事はRuby3で導入される並列・並行処理のための新機能Ractorに興味のある方向けの記事になります。 簡単なRactorを使ったサンプルコードを解説しつつ、理解を深めることができるように書いてみました(ほとんど未来の僕へ向けた記事になってい…

Rubyで型宣言っぽくコードを書けるようにしてみた

結論 以下のようなコードが動くようになります。 n = int 42 # => 42が代入される f = int 4.2 # => TypeError! やったこと 以下のようにKernelモジュールにモンキーパッチします module Kernel module_function def int(var = 0) if var.is_a?(Integer) var…

Ractorで複数のオブジェクトを渡せるようにしてみた

結論 Ractorで以下のコードを動くようにしてみました。 r = Ractor.new do v1, v2 = Ractor.recv puts v1 puts v2 puts v1.class puts v2.class end r.send(1, 2) r.take # => 1 # => 2 # => Integer # => Integer Ractorって? Ruby3で導入される並行・並列…

CRubyのFloatクラスの結構なメソッドをbuiltinで書き直してみた

はじめに Hamada.rbでCRubyのFloatクラスをbuiltinで書き直してみた記事です。どちらかといえば作業ログな内容です。 builtinとは? 過去にいくつか記事にしているので詳細はそちらを見て頂ければと思いますgamelinks007.hatenablog.com gamelinks007.hatena…