タグ

ブックマーク / blog.willnet.in (21)

  • APIに利用制限をかけるとしたらどういうやりかたがあるのか - おもしろwebサービス開発日記

    この記事はSmartHR Advent Calendar 2020 11日目の記事です。 僕のお手伝いしているSmartHRでは、毎週バックエンドエンジニアが集まり、技術的なトピックについて共有、相談しあうミーティングを開催しています。そのミーティングでは僕がTipsなどを共有するコーナーが常設されています*1。 このエントリでは、そのコーナーで共有した内容をひとつ紹介します。 APIに制限をかける方法について APIを外部に提供するとき、一定の制限をかけてユーザがAPIを乱用するのを防ぐことはよくあることではないでしょうか。素直に考えると「1時間に5000回までAPIを実行できる」のようなやり方を思いつきますね。GitHubAPIもそのやり方ですし、SmartHRAPIも同様です。 じゃあそれでいいのでは。となるかもしれませんが少し待ってください。いろんなクライアントがAPIを大量に

    APIに利用制限をかけるとしたらどういうやりかたがあるのか - おもしろwebサービス開発日記
    peketamin
    peketamin 2020/12/11
  • 良いエンジニアを採用するにはどうしたらいいか - おもしろwebサービス開発日記

    以前ソフトウェア開発者採用ガイドの読書感想文を書いたときに反響が思ったより大きかったので、エンジニア採用というテーマは関心が高いのだなと感じました。 上記感想文のエントリでも書いていますが、お手伝いしている会社の方などから「どうやったら良いエンジニアを採用できますか?」と聞かれることがよくあります。先のエントリでは「頑張るしかないですねとしか答えようがない」と書きましたが、頑張るとはいったい何を頑張るのか、きちんとまとめておいたほうが良いなと思いエントリをしたためる次第です*1。 あくまで僕はこう思いますという話で、この通りにしたからといって必ず良いエンジニアを採用できる保証はありません。あしからず。 想定読者 良いエンジニアを採用したい偉いひと、もしくは人事のひとです。 前提: 良いエンジニアとは このエントリでの「エンジニア」とはいわゆるweb系のエンジニア(例: サーバサイドエンジニ

    良いエンジニアを採用するにはどうしたらいいか - おもしろwebサービス開発日記
    peketamin
    peketamin 2018/09/25
  • Railsの可読性の高いコードについて議論するコミュニティを作りました - おもしろwebサービス開発日記

    Railsで可読性の高いコードを書くにはどうしたらいいのか。コミュニティやブログなどで個別の事例について言及されることはありますが、横断的なまとまった情報はほとんどないのではないかと思います。みんな、散らばった情報を集めて自分なりのやり方を模索しているのではないでしょうか。 そこで、自分なりのやり方を研ぎ澄ませるような、可読性の高いコードについて議論できる場所を作ってみました。clean-rails.orgというドメイン*1です。コミュニティ体はサブドメインのdiscourse.clean-rails.orgで、オンライン上できれいなコードについて議論できるようにしています。 可読性の高いコードを書くのが好きな方、参加してコメントいただけるとうれしいです(\( ⁰⊖⁰)/) これまでの経緯 Railsのきれいなコードについて議論する勉強会 - おもしろwebサービス開発日記チラシの裏 続

    Railsの可読性の高いコードについて議論するコミュニティを作りました - おもしろwebサービス開発日記
    peketamin
    peketamin 2018/04/16
  • 技術顧問業を始めて2年がたった - おもしろwebサービス開発日記

    2年ほど前から「フリーランスRails技術顧問」みたいな肩書で複数社のお手伝いをしています。すると知り合いに、技術顧問って実際どんな感じで仕事してるの?と聞かれることが多いので、「これ読めばわかるよ」と言えるように実際にどんなことをしているのかまとめておこうかと思います。 ざっくりどんなことしてるの お手伝いしている会社によってやっていることが違うので一言では答えにくいですね。基的に「僕の身につけたRailsとシステム開発の知見を提供する」というのが共通しているところ。僕はCTO経験などないのでエンジニア組織についてはあまり触れず、技術寄りの知見について特化して伝えている感じです。 だいたい次のような会社が対象。全部Railsを使っているか、これから使おうとしている会社です。 創業から数年たち業務が拡大してきたが、負債が溜まって身動きが取りづらくなってきたのでちゃんと体制を整えたい 負債

    技術顧問業を始めて2年がたった - おもしろwebサービス開発日記
    peketamin
    peketamin 2018/04/10
  • RejectKaigi2017でファイルアップロードについて発表した - おもしろwebサービス開発日記

    先日行われたRejectKaigi 2017でファイルアップロードについて発表しました。資料はこちら。 内容的には、WEB+DB PRESS Vol.95で書いたファイルアップロード話を最新にしたものになります。Rails5.2で新しく追加されるActive Storageというファイルアップロード機能を紹介しつつ、ファイルアップロード全般の話題について触れています。 ファイルアップロードをただしく実装するにはそれにまつわる様々な要素についての知見が必要で、webエンジニア的には腕の見せ所ではないかと思います。Active Storageの登場でファイルアップロードについての知見が広まって、ただしく実装できる人が増えるといいなと思います(( ⁰⊖⁰)/) あわせて読みたい WEB+DB PRESS Vol.95posted with amazlet at 17.08.20小出 淳子 黒澤

    RejectKaigi2017でファイルアップロードについて発表した - おもしろwebサービス開発日記
    peketamin
    peketamin 2017/08/21
  • Rails Developers Meetup で綺麗なテストコードの書き方について発表した - おもしろwebサービス開発日記

    昨日のRails Developers Meetupで綺麗なテストコードの書き方について発表してきました。 Rails Developers Meetup #1(東京会場) - connpass 資料はこちら 余談 もともと数年前くらいから、テストコードの書き方についてまとめたいなーと思っていたのですがなかなかキッカケがなくて手を付けられていませんでした。今回のミートアップ駆動で一通り形にするところまでいけて今とてもスッキリした気持ちです 😇 もっと多くの人にテストコードの書き方を意識してもらいたいので、また機会があればどこかで喋りたいですね。 昨日発表した内容はGitHubリポジトリにまとめたものの一部です。綺麗なテストコードの書き方について詳しく知りたい方は下記のリンクからどうぞ。 willnet/rspec-style-guide お願い 今回まとめた内容はあくまで僕が考えるテスト

    Rails Developers Meetup で綺麗なテストコードの書き方について発表した - おもしろwebサービス開発日記
    peketamin
    peketamin 2017/05/19
  • ソフトウェア開発者採用ガイドを読んだ - おもしろwebサービス開発日記

    読みました。自分はフリーランスなので直接誰かを採用することはないですが、お手伝いしている会社の方に「どうやったらいいwebエンジニア採用できますかねー?」と聞かれることがよくあるので、そのヒントになるかなと思い。 ソフトウェア開発者採用ガイドposted with amazlet at 16.10.29Joel Spolsky 翔泳社 売り上げランキング: 406,688 Amazon.co.jpで詳細を見る 感想 基的に自分の考えているやり方で間違ってなさそうだという気持ちになれました。 エンジニアにとって良い環境を整える いいエンジニアはまず応募してこないので基こちらから出向いて探す コミュニティやインターンシップなどを利用する 面接の時は、その人が問題に対してどのようにアプローチするのか見る 迷うくらいの人であれば採用しない よくweb上で見かけるエンジニア採用関係の文章は、この

    ソフトウェア開発者採用ガイドを読んだ - おもしろwebサービス開発日記
    peketamin
    peketamin 2016/10/31
    「この人なら手伝って上げたい」と思える人はたまにいる。報酬とかでなく。
  • Rails::API について発表した - おもしろwebサービス開発日記

    FiNC さんの社内マイクロサービス勉強会と、表参道.rb にて、そろそろリリースされそうな Rails 5 におけるメジャーフィーチャの一つ Rails::API について話しました。 雑感 スライド読むと分かるように、Rails::APIAPI サーバを作る時の銀の弾丸でもなんでもなくて、条件に合致したときに使うとちょっとだけ速くなりますよ、軽くなりますよという機能なのでした。 Rails::API の機能面としてはそれだけなのだけど、Rails は Rack Middleware や ActionController::Base 内の Module が疎になっていて、着脱が簡単なんですよというのを示す良い例にもなっていると思います。使っていない Middleware や Module を外すことで、手軽にちょっぴり速く/軽くできるので、API サーバに限らず不要なものがある場合

    Rails::API について発表した - おもしろwebサービス開発日記
    peketamin
    peketamin 2016/03/07
  • 最近の Rack サーバ事情について - おもしろwebサービス開発日記

    先月、heroku推しサーバが unicorn から puma に変わったという発表がありました。unicorn だとスロークライアントの影響を受けやすいというのが理由なようです。 もう少し詳しく調べてみましょう。 そもそもスロークライアントってなに その名の通り遅い回線のクライアントです。3G環境のモバイル端末などが該当します。 「unicorn だとスロークライアントの影響を受けやすい」とは unicorn はプロセスモデルのサーバであり、blocking I/O モデルを採用しています。つまり、クライアントとの通信中プロセスが専有されるということです。 例えば unicorn がワーカプロセスを3つ立ち上げていて、そこへ通信完了に10分かかるようなスロークライアントが3つ接続されたら…、続くクライアントはスロークライアントの通信が完了するまで実行を待たなければならなくなります。プ

    最近の Rack サーバ事情について - おもしろwebサービス開発日記
    peketamin
    peketamin 2015/02/25
  • 僕が参考にしている Ruby, Rails の情報源まとめ(海外ブログ編) - おもしろwebサービス開発日記

    昨日 @bekkou68 さんに「前島さんってどうやってRubyRails関連の情報を収集しているんですか?」って聞かれたのでまとめてみます。とりあえず海外のブログ限定で。日ブログ編は気が向いたらやります…。 RailsCasts 有名すぎて説明不要かもしれませんね。毎週2つ(うち1つは有料購読が必要)の Rails 関連動画をアップロードしてくれているサイトです。良質な情報を定期的に届けてくれるすばらしいサイトですね。1ヶ月9ドル払って有料購読する価値は間違いなくあると断言できます。動画中で紹介しているライブラリの情報もすばらしいですが、コード例もかなりRailsっぽく綺麗に書かれていて大変参考になります。 RubyFlow いろいろなRuby開発者のブログの更新情報をまとめたブログ。簡単な紹介文に各ブログのリンクがくっついているような形式です。日によってばらつきがありますが、だいた

    僕が参考にしている Ruby, Rails の情報源まとめ(海外ブログ編) - おもしろwebサービス開発日記
    peketamin
    peketamin 2014/09/22
  • rails new のデフォルトオプションを設定しよう - おもしろwebサービス開発日記

    みなさんは ~/.railsrc 使ってますか? rails new したときのオプションを書いておけるファイルです。Rails 3.2 から使えます。 僕は test-unit を基的に使わないし、rails new のタイミングで bundle install が走るのが嫌なので次のように設定しています。デフォルトの設定を書いておくことで、何も考えずに rails new できるので便利です。 -T --skip-bundle -T が Test::Unit 系のファイル生成のスキップ、--skip-bundle が bundle install のスキップです。rails new -h とすると他のオプションも見れます。 たまに ~/.railsrc を使わずに rails new したくなる時もあります。そんな時は次のように、--no-rc オプションを利用するとよいでしょう。

    rails new のデフォルトオプションを設定しよう - おもしろwebサービス開発日記
    peketamin
    peketamin 2014/06/17
  • RSpec 3 時代の設定ファイル rails_helper.rb について - おもしろwebサービス開発日記

    rspec-rails、3.0.1 がリリースされていますね。インストールして rails g rspec:install とすると、spec/rails_helper.rb という見慣れないファイルが作成されます。これは一体何でしょうか。 rspec-rails のREADMEを読むと、これからは spec/rails_helper.rb に Rails 特有の設定を書き、spec/spec_helper.rbには RSpec の全体的な設定を書く、というようにお作法が変わるそうです。これによって、Railsを必要としないテストを書きやすくなるんだとか。 というわけで、これまで require 'spec_helper' としていた箇所の大部分は require 'rails_helper' に置換してあげる必要がありそうですね。パーフェクト Ruby on Rails のテストの章は

    RSpec 3 時代の設定ファイル rails_helper.rb について - おもしろwebサービス開発日記
    peketamin
    peketamin 2014/06/10
  • パーフェクト Ruby on Rails のサンプルアプリケーションを Github 上で公開しました - おもしろwebサービス開発日記

    パーフェクトRuby on Rails 中の第6章で取り扱っている題材、イベント開催支援系のRailsアプリケーション awesome_events のソースコードを Github 上で公開しました。 ソースコードは技術評論社さんのサポートページからダウンロードすることもできますが、やっぱり Github から持ってこれたほうがいいですよね。 さて awesome_events とはどんなアプリケーションでしょうか。すごくざっくり書くと、Doorkeeper や ATND の簡略版です。 使っている gem は、Rails を普段使っている人から見たらかなり普通な感じ。特筆すべきなのは carrierwave と ransack くらいでしょうか。omniauth で「Twitterログイン」機能を作ったりもしています。 gem 'rails', '4.1.1' gem 'sqlite3'

    パーフェクト Ruby on Rails のサンプルアプリケーションを Github 上で公開しました - おもしろwebサービス開発日記
    peketamin
    peketamin 2014/06/02
  • パーフェクト Ruby on Rails という本を書きました - おもしろwebサービス開発日記

    ここのところブログの更新頻度が下がっていたのはそういうことです。 @sugamasao、@udzura、@joker1007と共同で書きました。 パーフェクト Ruby on Railsposted with amazlet at 14.05.02すが まさお 前島 真一 近藤 宇智朗 橋立 友宏 技術評論社 売り上げランキング: 272 Amazon.co.jpで詳細を見る 執筆経緯 個人的な発端は去年の9月くらい。当時常駐していた会社のメンバーたちでランチ行く途中、@udzuraさんに「Railsを書く話があるんですが興味あります?」と聞かれたので、査読でもお願いされるのかなと思いながら「興味ありますよー」と答えたらいつの間にか著者になっていました。とはいえ、もともとRailsは一回書いてみたいと思っていたので結果オーライ。 どんななの このは、著者陣たちが「Railsを始

    パーフェクト Ruby on Rails という本を書きました - おもしろwebサービス開発日記
    peketamin
    peketamin 2014/05/03
  • Rails 4.1.0 で新しく導入された便利メソッド - おもしろwebサービス開発日記

    Rails(ActiveSupport) は標準クラスを拡張した便利メソッド群を提供してくれています。時々これは使わないなー…という微妙なやつもありますが、僕はけっこう好きです。 Rails 4.1.0 で新しく入ったそんなメソッドをまとめます。 Numeric#in_milliseconds 数値をミリ秒の単位に合わせて返す。 1.hour.in_milliseconds #=> 3600000 実装は単に1000倍しているだけ。 def in_milliseconds self * 1000 end すごくたまに使うかもしれない。 Date#middle_of_day, DateTime#middle_of_day, Time#middle_of_day 昼の12時を返す。 date = Date.today date.middle_of_day => Sat, 19 Apr 2014

    Rails 4.1.0 で新しく導入された便利メソッド - おもしろwebサービス開発日記
    peketamin
    peketamin 2014/04/20
  • ランダムで日本人の名前を返す gem を作った - おもしろwebサービス開発日記

    gimei という、ランダムで日人の名前を返す gem を作りました。 似たようなライブラリに faker があります。faker は人の名前だけではなく、住所やメールアドレスやユーザ名や電話番号など、たくさんのジャンルのダミーデータを返してくれるすごい gem です。しかも i18n に対応しており、yaml ファイルを定義すれば日語も使えます。 じゃあ faker でいいじゃん!って思いますよね。しかし一つだけ問題がありまして…。ふりがなが使えないのです。 そこでgimeiです。gimeiは下記のような形でふりがな(フリガナ)に対応しています。 gimei = Gimei.new gimei.kanji #=> "斎藤 陽菜" gimei.hiragana #=> "さいとう はるな" gimei.katakana #=> "サイトウ ハルナ" gimei.last.kanji #

    ランダムで日本人の名前を返す gem を作った - おもしろwebサービス開発日記
    peketamin
    peketamin 2013/07/10
  • railsのクッキーとセッションについてまとめ - おもしろwebサービス開発日記

    こないだ、よくわからんので今度調べると書いたところについて。 CSRFの対応について、rails使いが知っておくべきこと - おもしろWEBサービス開発日記 まずクッキーとセッションの違いから。自分の認識はこんな感じ クッキーもセッションも、ブラウザにデータを保存させる仕組み。 クッキーはデータをそのままブラウザに保存させる。 セッションはセッションIDをブラウザに保存させ、データはサーバ側が保持する。サーバはセッションIDをキーにしてデータを取り出す。 railsでクッキーを設定するには railsでは、クッキーは基的に使わないと思ってますが、一応使い方をメモ。 cookies[:hoge] = { :value => "value", :expires => "30.days.from_now", :path => "/store", :domain => "www.example.

    railsのクッキーとセッションについてまとめ - おもしろwebサービス開発日記
    peketamin
    peketamin 2013/06/25
  • Hack Design 読書会をやりたい - おもしろwebサービス開発日記

    第2回 プログラマ向けデザイン勉強会に参加した 感想。とても為になる勉強会で素晴らしかったのだけれど、当にデザインのレベルを上げたかったら、「たまに少しだけ勉強する」のでは不十分で、プログラミングを勉強するときにやってきたのと同じように定期的に手を動かしたりを読んだりして研鑽に努めないとダメなのだよなあということを強く感じました。かと言って一人だとモチベーションが続かず挫折する可能性が高い。なのでエンジニアのためのデザイン勉強会を定期的にできたらよいなと思っています。 勉強会のネタとしては、Hack Design というエンジニア向けのデザイン教材的なサイトがあるので、差し当たってこれを読み進めていくのがよいのかなと。これがイマイチだったら別の何かを探すか、もしくは単にそれぞれがデザイン関連の勉強をもくもくする会にするのでもよいです。 都内週一くらいのペースで一緒にやってもいいよという

    Hack Design 読書会をやりたい - おもしろwebサービス開発日記
    peketamin
    peketamin 2013/03/23
  • js で利用する DOM の名前をどうやってつけたらよいのか - おもしろwebサービス開発日記

    js で DOM をゴニョゴニョしたい時、きっと皆さんは id や class で DOM に名前を付けて、その名前を利用して js の処理を書いていると思います。 例えば<input type="button" class="update" value="更新" />のようなボタンがあったとして、 js 側で更新処理を書くときには下記のように書きます。 $('.update').on('click', function () { // update 処理 }) でもこれだと問題になるケースがあります。よくあるのが、マークアッパーとフロントエンジニアが分業していて、マークアッパーがデザインのために class 名を変えてしまい js が動かなくなるパターン。分業せずに一人で全部やってたとしても、時間が経つにつれ使っている class 名が js だけで使っているのか、css でも使っている

    js で利用する DOM の名前をどうやってつけたらよいのか - おもしろwebサービス開発日記
    peketamin
    peketamin 2013/03/04
  • CSRFの対応について、rails使いが知っておくべきこと - おもしろwebサービス開発日記

    以前、CSRFについてのエントリを書きました。 CSRFについて - おもしろWEBサービス開発日記 上記エントリではCSRFの概念について書きましたが、もう少しつっこんで調べる必要が出てきました。調べたことを書いてゆきます。 基礎 application.rb(ないし適当なController)にprotect_from_forgeryメソッドを定義すれば、railsが自動的にCSRF対策をしてくれます。というか、デフォルトでapplication.rbに下記のように書いてあるので、特に何もせずともCSRF対策はバッチリなのです。 protect_from_forgery # :secret => '8ff3ed33f86a431662d8dfe255acdb4a' railsは、get以外の動詞のリンクに、authenticity_tokenというパラメータを自動的に付け加えます。ge

    CSRFの対応について、rails使いが知っておくべきこと - おもしろwebサービス開発日記