orangeliner.net BLOG logo

 カテゴリ:IT&技術

1 / 2 (全 16 件)

[GCP] Cloud Functions が Ruby に対応! ローカル環境でサクっと開発

GCP の FaaS (Functions as a Service)、Cloud Functions がついに Ruby に対応しました!!

AWS Lambda では2018年末の時点で既に Ruby が使えていたので、Cloud Functions にも来ないかな~と思っていた人には朗報ですね。

GETパラメータあり

現在はβ版で、Ruby 2.6 および Ruby 2.7 のバージョンをサポートしています。
Cloud Functions の公式ドキュメントにも既に Ruby 用のサンプルコードが追加されており、普段 Ruby を書いてる人であればすぐに使えると思います。

Cloud Functions の Ruby サポートと併せて、ローカル環境での Ruby を使った Cloud Functions & Cloud Run 開発をサポートする Functions Framework for Ruby (α版)も公開されました。

作成した関数(スクリプト)のデプロイ方法は他の言語とほぼ変わらないと思うので省略しますが、今回は Functions Framework for Ruby(以下、Functions Framework)を使って、ローカル環境でどれほどスムーズに開発ができるのか試してみました。


[GCP] Cloud Functions でレベル付きログを出力する一番簡単な方法

GCPで提供されているFaaS (Functions as a Service)、Cloud Functions ではちょっとしたスクリプトやバッチ(「関数」と呼ばれる)をクラウド上で実行でき、十分な無料枠も準備されているので、個人ユースでもとても便利なサービスです。

Cloud Functions で関数を実行した結果を確認するために、GCPのログ管理サービス Cloud Logging へログを出力できます。
CLoud Logging に保管されたログは GCP のスマホアプリで確認したりもできますが、全てのログを表示すると確認が不要なログも多く表示されてしまい、必要な情報が埋もれてしまいます。

そこで、構造化ログ として出力することで、ログ毎にレベルを設定し、絞り込みをして必要なログのみを表示させることが可能です。

ログの作成、表示、処理 - Google Cloud Functions に関するドキュメント
しかし、GCPの公式ドキュメントを読むと Cloud Logging クライアント ライブラリ とか Logging API とか書いてあってよく分からなくなった(あとで使い分けを理解した)ので、サクッと使えるように一番簡単な方法をまとめてみました。

※ Cloud Functions だけでなく、Cloud Run でも同じ方法が使えるようです。

結論

標準出力にJSONで出力する

1
{"severity":"INFO","message":"This is info message."}

"severity" の値にログレベル"message" の値にログテキストを指定する。
GCP側で "severity" の値を読み取って、ログにレベルを設定してくれる。


Ruby 3.0 型の静的解析機能について(RBS&TypeProf)

2020年12月に正式版がリリースされた、Ruby のメジャーアップデート「Ruby 3.0」において実装されている 静的解析 について調べてみました。

最近では爆速で走る静的型付け言語 Go も人気ですが、Ruby で導入された静的型付けはどのようなものなのでしょうか?


PythonでJSONを整形&記法チェック

Pythonの標準ライブラリである「JSONエンコーダ・デコーダ」のCLIを使って、JSONデータの整形表示や記法が正しいかをサクッとチェックすることができます。

LinuxやPowerShell等で、Pythonを実行出来る環境があればOK。
Pythonのプログラム外でも簡単に実行出来て便利です。


[Go] JSONファイル(ネストあり&配列型)を読み込む

Goでネスト構造を持つ&配列型のJSONファイルを読み込む方法

読み込むJSONデータ

Twitter APIからのレスポンスを模したJSONをGoで読み込んでみます。
(実際のTwitter APIからのレスポンスにはもっと多くのデータが含まれていますが、ここでは簡略化しています)


WSL2+Docker+VSCodeでGo言語環境構築

VS Code (Visual Studio Code) のRemote Containers拡張機能をWSLやDockerと組み合わせることで、自分でDockerfileを書かなくても、開発環境コンテナをサクッと立ち上げることができます。
今回はGo言語の環境を作ってみました。


WordPressやめました(Middlemanへの移行)

2017年からWordPressで運用してきたこのブログですが、次のようなデメリットが目立ってきたこともあり、SSG(静的サイトジェネレータ)へ乗り換えたので、メリット・デメリットや仕組みについてまとめてみました。
SSGにはRubyをベースとした Middleman を採用しています。

WordPressで感じていたデメリット

  • アップデート時の仕様変更
    • 特に、投稿画面がよく変わるので嫌
  • セキュリティリスク
    • Webアプリケーションである以上、どうしても脆弱性を持つ
    • 後方互換重視のため、内部設計も古い
  • レスポンスが遅い
  • 誰でも使える
    • 一般的にはメリットなのですが、エンジニアとしてはさすがにWordPressを卒業したかった

一周回って WebサーバにはHTML/CSS/JS/画像を置くだけ のシステムになったわけですが、個人の趣味ブログなのでこれで十分だと感じました。


Ruby中級者を目指して「チェリー本」を写経してみた

9月に「Ruby技術者認定試験 Silver」を受験し、90点台で無事に合格できました。

しかしながら、Silver試験はどちらかと言えば”覚える”要素が多かったような印象があり、特にクラスやモジュールについての理解が足りてないのでは?と自分自身で感じていました。

そんな中、「チェリー本」の前書きの

「Rubyプログラミングを始めてしばらく経ったが、まだまだ自信が持てない人」を想定

の部分を読んで「これだ!」と。

Ruby の知識が付け焼き刃にならないよう理解を定着させてから Gold試験にも臨みたいと思い、「チェリー本」の写経に取り組んでみました。



[Middleman 4] カスタムヘルパの作成

Rubyベースの静的サイトジェネレータ「Middleman」では、主要なHTML要素を生成するためのヘルパーメソッドが予め用意されています。
ヘルパーメソッドの引数にオプションを指定することによって、id や class 等の属性値を指定することができますが、頻繁に使用する組み合わせがあるならば専用のヘルパーメソッド(カスタムヘルパ)を作ってしまった方が便利です。

例として、今回は Middleman に予め用意されている <a>タグを生成する「リンクヘルパ」 link_to メソッドを元に、リンクを新しいタブで開くようにする link_to_blank メソッドを作成してみました。


広告募集中!
1 / 2 (全 16 件)