GitHubのGraphQL API v4にて、EmailのScalar型を定義していない理由を考察してみた

GitHubのAPI v4は、GraphQLで開発されている。バックエンドの開発者で参考にされることが多い。 GraphQLは、StringやIntなどビルドインのScalar型以外に独自定義を行うことで型安全なAPIを開発することができる。 GitHubのAPIにおいても多くのカスタムScalar…

IRBをアップデートすると undefined method `encoding_system_needs' for Reline:Module エラーになるときの対応

環境 $ irb -v irb 1.2.3 (2020-02-15) $ ruby -v ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-darwin18] 解決方法 reline をインストールする gem install reline 参考文献 IRB 1.2.3 does not boot with Ruby 2.7 on my mac · Issue #87 · ruby/i…

WebAPIは、HTTP通信という制約を持ったPublicメソッドである

エンジニアになって1年経ったので考えを整理しておく。 タイトルの通り、「WebAPIとは、HTTP通信という制約を持ったPublicメソッド」である。 HTTP通信という制約下で実行するため、通信による失敗が多いことやデータベースによるトランザクションを利用でき…

メトリクスをなぜ、とるのか

note.com 「スタートアップ経営で現れる壁と事例とその対策について」を読んでメトリクスをなぜ、とる必要があるのか考えてみたので、メモとして残しておく。 資料を摺り合わすことなく考えたため、大枠すら捉えられていない可能性があるので注意したい。 メ…

Enumerable#none?でReadableなコードにする

Railsにて要素が存在しないことを blank? や empty? で確かめることがある def purchased_book payments payments.none? "未購入" : "購入済み" end しかし、あるユースケースではRubyの Enumerable#none? を利用した方が意味が明らかになるので、積極的に利…

新規プロジェクトでGraphQL-Rubyを利用する際に気をつけること

GraphQL-RubyでAPI開発する際に、以下のように--apiオプションをつけたくなる。 rails new iikannzino_service --api そうすると、rails generate graphql:installとした時にgraphiql-railsがinstallされなくなってしまう。 rails g graphql:install --no-ap…

「Design It!」は、人生に影響を与える本になりそうです

設計から携われるタスクがあり希望の上、チーム異動しました。どのように設計を行うか、何を考慮する必要があるのか、どのように関係者(ステークホルダー)に説明するかなど、ありとあらゆることが手探り状態です。「Design It!」を読んだことで具体的なアク…

Best Practice Ruby on Rails Refactoringは、Rails開発を初めて半年のエンジニアにピッタリの本だった

Rails AntiPatterns: Best Practice Ruby on Rails Refactoring (Addison-Wesley Professional Ruby Series) (English Edition)作者:Chad Pytel,Tammer Saleh出版社/メーカー: Addison-Wesley Professional発売日: 2010/11/09メディア: Kindle版 Best Practi…

Design Patterns in RubyでStrategyパターンを学んだ

Design Patterns in Ruby でStrategyパターンを学んだ。自分用のメモとして残しておく。 Design Patterns in Ruby (Adobe Reader) (Addison-Wesley Professional Ruby Series) (English Edition)作者:Russ Olsen出版社/メーカー: Addison-Wesley Professiona…

Rubyであるメソッドの定義場所を知る方法

OSSなど実装を見る機会が乏しいコードに触れる時、あるメソッドがどこに定義されているか継承を辿るとデバッグに時間がかかる時がある。 そんな時は、methodとsource_locationメソッドを利用すると便利である。 GraphQL::Types::String.method( :graphql_def…