hotoolong's blog

プログラムのことやエンジニアリングに関することを記事にしています。

embed_callbacksに機能追加した

概要

前回の記事embed_callbacksというgemを紹介しました。
こちらの機能を追加したので紹介していきます。

追加した機能

  • メソッドがエラーになったときに処理を呼び出せる
  • メソッドエラーになっても呼び出せる

rescue

これはその名の通りでrescueを設定するとエラー時に呼びされます。
コードを見てもらったほうがわかりやすいかと思うので下記にサンプルを記載しておきます。

require 'embed_callbacks'

class Sample
  include EmbedCallbacks
  set_callback :target, :rescue, :rescue_callback

  def target
    raise 'target'
  end

  def rescue_callback
    puts 'rescue_callback'
  end

end
sample = Sample.new
sample.target

#=> rescue_callback
#=> RuntimeError (target)

encure

こちらも同様にencureになります。
こちらはafterに近いかもしれないですが、
エラーが発生しても必ず呼び出されます。

require 'embed_callbacks'

class Sample
  include EmbedCallbacks
  set_callback :target, :ensure, :ensure_callback

  def target
    puts 'target'
  end

  def ensure_callback
    puts 'ensure_callback'
  end

end
sample = Sample.new
sample.target
#=> target
#=> ensure_callback

その他

RubyGemsへの登録

前回からの進捗はない状態ですが、
slackの#rubygemsで質問してみたところ、同様の問題質問があることを教えてもらいました。
Wrong emails when signup / Problems / Discussion Area - RubyGems.org Support
こちらを見ると SUPPORT STAFF で対応してもらい解決したようです。
一旦サポートにメールを送ってみました。
返信までは時間がかかるようなのでしばらく待ってみようと思います。

まとめ

callbackという感じではないですが、 rescue、ensureを後付で追加したいケースがあり作成してみました。
よかったらつかってみてください。

メソッドにcallbackを追加するgemをつくってみた

概要

以前からgemを作ってみたいと思いつつ作れてなかったので作成してみました。
methodにcallbackを追加するembed_callbacksというgemを作成しました。
探すと似たようなgemが出てくるので車輪の再発明的なものになりますが作成してみました.

gemの機能

まだそこまで機能はないのですが以下のようになります。

  • メソッドの前に処理を追加
  • メソッドの後に処理を追加
  • メソッドの前後に処理を追加

上記を簡単に呼び出せるようにしています。
今後更に機能は追加する予定です。詳細はGithubを確認していただければと思います。

gemの作り方

参考記事

https://qiita.com/coe401_/items/8e90373a76f590ef0abe
しおいさんがQiitaで取り上げてくれた記事を参考にしました。
丁寧に説明してくれていてとてもいい記事ですね。

gemの命名

https://guides.rubygems.org/name-your-gem/
こちらの記事でどのような命名するとよいか記載されている内容を参考にしました。

gem searchコマンドもしくは https://rubygems.org/ から作成するgem名を検索しておき
同じ名前にならないようにしておくのがいいかと思います。
はじめに考えていた名前はすでに登録されていたので別名を考えていた今回の命名になりました。
命名は先行優位ですね。

困ったこと

RubyGemsへの登録

RubyGemsにユーザ登録時のメールアドレスを間違ってしまい、
確認メールをチェックできなくなってしまいました。
ログインはできるのですが確認メールをチェックしてください。というような文言で確認できない状況です。
メールアドレスは一度目の登録からは変更できないようなので、
とりあえずはRubyGemsには登録しないでしばらくGithubだけで公開しておきます。
同様の問題で困っている人は少なそうですが、解決方法がわかる方いらっしゃいましたら情報いただければと思います。
どうしようもなくなったらhotoolong2みたいなのにして登録しようと思います。

gemの作成

参考記事にはbundle gem hogehoge などすると対話式にオプションを設定できるようなものもあったのですが、私の環境ではそうならなかったので引数などを設定しました。

$ bundle gem embed_callbacks --test=rspec --coc --mit
Creating gem 'embed_callbacks'...
MIT License enabled in config
Code of conduct enabled in config
      create  embed_callbacks/Gemfile
      create  embed_callbacks/lib/embed_callbacks.rb
      create  embed_callbacks/lib/embed_callbacks/version.rb
      create  embed_callbacks/embed_callbacks.gemspec
      create  embed_callbacks/Rakefile
      create  embed_callbacks/README.md
      create  embed_callbacks/bin/console
      create  embed_callbacks/bin/setup
      create  embed_callbacks/.gitignore
      create  embed_callbacks/.travis.yml
      create  embed_callbacks/.rspec
      create  embed_callbacks/spec/spec_helper.rb
      create  embed_callbacks/spec/embed_callbacks_spec.rb
      create  embed_callbacks/LICENSE.txt
      create  embed_callbacks/CODE_OF_CONDUCT.md
Initializing git repo in /Users/hotoolong/repositories/embed_callbacks
Gem 'embed_callbacks' was successfully created. For more information on making a RubyGem visit https://bundler.io/guides/creating_gem.html

まとめ

比較的簡単に作成まではいけそうなので、他にもgemにしていなかったものや放置してるものを徐々にupしていければいいかなと思っています。 なにか助言やPRなど私の困ったことへの解決の糸口になるものなどアドバイスいただければとてもありがたいです。

参考にした記事

はじめての自作gem 「Hello, Tama!」を出力してみる - Qiita
RubyGemはめっちゃ簡単に作れる! | 酒と涙とRubyとRailsと
意外と簡単!? Ruby Gemの作り方 - Qiita
RubyGemsの作り方 - Qiita
Bundler: How to create a Ruby gem with Bundler
Name your gem - RubyGems Guides
READMEの良さそうな書き方・テンプレート【GitHub/Bitbucket】 - karaage. [からあげ]
個人gemのCIをほぼ全部Travis CIからGitHub Actionsに移行した - くりにっき
GitHub Actions がローンチされたのでマイグレートしてる - HsbtDiary(2019-08-11)
GitHub - actions/setup-ruby: Set up your GitHub Actions workflow with a specific version of Ruby
今の時代だからこそオススメする車輪の再発明|erukiti|note

(7/17-7/30)[Kindle] 夏の読書フェア

イントロ

今回は 7月17日(金)~7月30日(木)にかけて夏の読書フェア ー ビジネス・IT・実用・ラノベなどが開催されています。
今回はSBクリエイティブの書籍が多く対象になっています。
今回もいつものようにpickupしていきたいと思います。

pickup

AWS

  • Amazon Web Services 業務システム設計・移行ガイド 一番大切な知識と技術が身につく (¥1,760)

  • AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト (¥1,309)

Web基礎

  • イラスト図解式 この一冊で全部わかるWeb技術の基本 (¥924)

  • イラスト図解式 この一冊で全部わかるサーバーの基本 (¥924)

  • イラスト図解式 この一冊で全部わかるクラウドの基本 第2版 (¥924)

ネットワーク

  • インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門 第2版 (¥1,650)

  • パケットキャプチャの教科書 (¥1,639)

パケットキャプチャの教科書

パケットキャプチャの教科書

  • DNSがよくわかる教科書 (¥1,254)

  • ネットワークがよくわかる教科書 (¥1,089)

ネットワークがよくわかる教科書

ネットワークがよくわかる教科書

  • インフラ/ネットワークエンジニアのためのネットワーク・デザインパターン 実務で使えるネットワーク構成の最適解27 (¥1,870)

セキュリティ

  • 体系的に学ぶ 安全なWebアプリケーションの作り方 第2版[固定版] 脆弱性が生まれる原理と対策の実践 (¥1,760)

  • イラスト図解式 この一冊で全部わかるセキュリティの基本 (¥924)

  • 動かして学ぶセキュリティ入門講座 (¥1,210)

動かして学ぶセキュリティ入門講座

動かして学ぶセキュリティ入門講座

デザイン

  • デザイン入門教室[特別講義] 確かな力を身に付けられる ~学び、考え、作る授業~ (Design &IDEA) (¥1,018)

フロントエンド

  • これからはじめるVue.js実践入門 (¥1,859)

これからはじめるVue.js実践入門

これからはじめるVue.js実践入門

Linux

  • 本気で学ぶ Linux実践入門 サーバ運用のための業務レベル管理術 (¥1,639)

Webデザイン

  • Webデザイン良質見本帳 目的別に探せて、すぐに使えるアイデア集 (¥1,265)

  • いちばんよくわかるWebデザインの基本きちんと入門 レイアウト/配色/写真/タイポグラフィ/最新テクニック (¥1,309)

まとめ

今回はAWS、ネットワーク関連の書籍が多く対象になっているので業務で利用している移行したいなどお考えの方はこのタイミングで購入を検討されてはいかがでしょうか。
他の書籍が気になる方はこちらのリンクからどうぞ!

(7/10-7/23)Kindle 高額書籍キャンペーン【最大50%OFF】

イントロ

今回は 7月10日(金)~7月23日(木)にかけて高額書籍キャンペーンが開催されています。
割引率が低いものもありますし、高額書籍以外のものもあるので若干なんのタイトルが怪しいですが、IT系の書籍がたくさん含まれていますのでpickupしていきたいと思います。

pickup

プログラミング

  • モデルベース要件定義テクニック (¥1,287)

モデルベース要件定義テクニック

モデルベース要件定義テクニック

  • レガシーコード改善ガイド (¥2,310)

機械学習

  • フリーライブラリで学ぶ機械学習入門 (¥1,188)

Ruby

  • Effective Ruby (¥1,760)

Effective Ruby

Effective Ruby

負荷分散

  • Apache Kafka 分散メッセージングシステムの構築と活用 (¥1,980)

JavaScript

JavaScript逆引きレシピ 第2版

JavaScript逆引きレシピ 第2版

インフラ

  • インフラCI実践ガイド Ansible/GitLabを使ったインフラ改善サイクルの実現 (¥2,310)

シェルスクリプト

  • 日経ITエンジニアスクール コマンド&スクリプト最強の指南書 (¥1,320)

Unix Linux

  • Ubuntuサーバー徹底入門 (¥2,090)

Ubuntuサーバー徹底入門

Ubuntuサーバー徹底入門

  • Linuxサーバーセキュリティ徹底入門 (¥2,090)

Linuxサーバーセキュリティ徹底入門

Linuxサーバーセキュリティ徹底入門

  • 詳解UNIXプログラミング 第3版 (¥4,565)

Docker

  • プログラマのためのDocker教科書 第2版 インフラの基礎知識&コードによる環境構築の自動化 (¥1,650)

  • しくみがわかるKubernetes Azureで動かしながら学ぶコンセプトと実践知識 (¥1,650)

  • ITエンジニアになる! チャレンジDocker仮想化環境構築入門 (¥1,485)

OAuth

  • OAuth徹底入門 セキュアな認可システムを適用するための原則と実践 (¥2,310)

組織

  • 組織パターン (¥2,090)

組織パターン

組織パターン

エッセンシャル スクラム

エッセンシャル スクラム

FinTech

  • FinTechの法律 2017-2018 (¥1,485)

ネットワーク

  • ネットワークトラブル完全ガイド (¥1,375)

- ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習 (¥2,090)

関数型プログラミング

  • 関数型リアクティブプログラミング (¥2,365)

テスト

DevOps

  • The DevOps ハンドブック 理論・原則・実践のすべて (¥1,760)

  • The DevOps 逆転だ!究極の継続的デリバリー (¥1,210)

GCP

まとめ

今回のキャンペーンはIT系の書籍がかなり含まれています。
割引率の高いものはこのタイミングで購入を検討されてはどうでしょうか。
他の書籍が気になる方はこちらのリンクからどうぞ!

(6/26-7/5)Kindle インプレスグループ10社合同フェア【最大50%OFF】

イントロ

7月になってしまいました。一年の半分が過ぎてしまいました。 早いですね。もっとアウトプットできるようにがんばります。

今回は6月26日(金)~ 7月5日(日)にかけてインプレスグループ10社合同フェアが開催されています。
かなり気になるIT系の書籍も含まれています。
私も何冊か購入したので、いつものようにpickupしていきたいと思います。

pickup

Git

  • Gitが、おもしろいほどわかる基本の使い方33 改訂新版 (¥1,100)

Vim

  • Vimが好きになる本 (技術の泉シリーズ(NextPublishing)) (¥990)

プログラミング言語

  • Elixirへのいざない (技術の泉シリーズ(NextPublishing)) (¥880)

  • Goプログラミング実践入門 標準ライブラリでゼロからWebアプリを作る impress top gearシリーズ (¥1,870)

  • はじめて学ぶバイナリ解析 不正なコードからコンピュータを守るサイバーセキュリティ技術 (OnDeck Books(NextPublishing)) (¥880)

  • Game Programming Patterns ソフトウェア開発の問題解決メニュー impress top gearシリーズ (¥2,090)

  • スターティングgRPC (技術の泉シリーズ(NextPublishing)) (¥880)

インフラ

  • 実践Terraform AWSにおけるシステム設計とベストプラクティス (技術の泉シリーズ(NextPublishing)) (¥1,210)

  • 実践入門 Kubernetesカスタムコントローラーへの道 (技術の泉シリーズ(NextPublishing)) (¥880)

  • AWS Lambda実践ガイド (¥1,650)

AWS Lambda実践ガイド

AWS Lambda実践ガイド

  • 実践Terraform AWSにおけるシステム設計とベストプラクティス (技術の泉シリーズ(NextPublishing)) (¥1,210)

  • RancherによるKubernetes活用完全ガイド ThinkIT Books (¥2,530)

  • Docker実践ガイド 第2版 impress top gearシリーズ (¥2,090)

認可認証

  • 雰囲気で使わずきちんと理解する!整理してOAuth2.0を使うためのチュートリアルガイド (技術の泉シリーズ(NextPublishing)) (¥880)

  • 「Auth0」で作る!認証付きシングルページアプリケーション (技術の泉シリーズ(NextPublishing)) (¥880)

フロントエンド

  • 迷わない!困らない!レガシーフロントエンド安全改善ガイド (技術の泉シリーズ(NextPublishing)) (¥880)

  • 実践Firestore (技術の泉シリーズ(NextPublishing)) (¥799)

OS

  • CentOS8 実践ガイド [システム管理編] impress top gearシリーズ (¥1,980)

機械学習

  • Nuxt.jsとPythonで作る!ぬるさくAIアプリ開発入門 データ分析からAIアプリ開発まで優しく解説! (技術の泉シリーズ(NextPublishing)) (¥999)

  • 機械学習 100+ページ エッセンス impress top gearシリーズ (¥1,925)

  • Python機械学習ライブラリ scikit-learn活用レシピ80+ impress top gearシリーズ (¥2,145)

  • Machine Learning実践の極意 機械学習システム構築の勘所をつかむ! impress top gearシリーズ (¥1,870)

  • いちばんやさしい量子コンピューターの教本 人気講師が教える世界が注目する最新テクノロジー 「いちばんやさしい教本」シリーズ (¥990)

個人開発

  • 個人開発をはじめよう!クリエイター25人の実践エピソード (技術の泉シリーズ(NextPublishing)) (¥990)

組み込み

  • mruby/cの小さな世界 (技術の泉シリーズ(NextPublishing)) (¥880)

デザイン

  • 初心者からちゃんとしたプロになる Webデザイン基礎入門 (¥1,375)

  • UIデザイン みんなで考え、カイゼンする。 (¥1,320)

  • できるクリエイター GIMP 2.10独習ナビ 改訂版 WindowsmacOS対応 できるクリエイターシリーズ (¥1,089)

まとめ

今回のキャンペーンでは最近でた書籍が含まれていたり、
私が気になる物が多く含まれていてとても嬉しいところです。
他の書籍が気になる方はこちらのリンクからどうぞ!

(6/12-6/25)Kindle 教育・学参関連本キャンペーン 【最大50%OFF】

6月12日(金)~ 6月25日(木)にかけて教育・学参関連本キャンペーンが開催されています。
プログラミング関係の書籍も含まれていますので,いつものようにpickupしていきたいと思います。

pickup

アルゴリズム

統計

Unity

  • 楽しく学ぶ Unity2D超入門講座 (¥1,480)

楽しく学ぶ Unity2D超入門講座

楽しく学ぶ Unity2D超入門講座

プログラミング教育

  • Scratchで学ぶ プログラミングとアルゴリズムの基本 改訂第2版 (¥1,265)

  • Scratchではじめよう! プログラミング入門 Scratch 3.0版 (¥1,045)

  • 親子で学べる いちばんやさしいプログラミング おうちでスタートBOOK (¥462)

まとめ

以前終わったキャンペーンが引き続き行われている書籍も少し含まれています。
個人的には英語関連の本もキャンペーン対象になっているのが嬉しいところです。このタイミングで購入されるのはどうでしょうか。
他の書籍が気になる方はこちらのリンクからどうぞ!

(5/29-6/11) Kindle本 ビジネス書キャンペーン【最大50%OFF】

5月29日(金)~ 6月11日(木)にかけてビジネス書キャンペーンが開催されています。
いつものようにpickupしていきたいと思います。

pickup

グロースハック

  • リーン・スタートアップ ムダのない起業プロセスでイノベーションを生みだす (¥990)

  • Hacking Growth グロースハック完全読本 (¥1,100)

テスト

  • はじめて学ぶソフトウェアのテスト技法 (¥1,320)

コンピュータ基礎

  • コンピュータはなぜ動くのか 知っておきたいハードウエア&ソフトウエアの基礎知識 (¥1,320)

デザイン

  • 突破するデザイン (¥1,100)

突破するデザイン

突破するデザイン

組織

  • OKR(オーケーアール) (¥825)

自己研鑽

  • すべての知識を「20字」でまとめる 紙1枚!独学法 (¥770)

  • 脳を最適化すれば能力は2倍になる 仕事の精度と速度を脳科学的にあげる方法 (¥763)

  • イシューからはじめよ ― 知的生産の「シンプルな本質」 (¥990)

  • すべての仕事は10分で終わる マルチタスクでも仕事がたまらない究極の方法 (¥770)

  • SOFT SKILLS ソフトウェア開発者の人生マニュアル (¥1,540)

まとめ

ひさびさのビジネス書のキャンペーンなのでこのタイミングで購入されるのはどうでしょうか。
他の書籍が気になる方はこちらのリンクからどうぞ!