タグ

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

  • パーフェクト Ruby on Railsの改訂2版を書きました - おもしろwebサービス開発日記

    ここ数年、色んな人に「パーフェクト Ruby on Railsの改訂版まだですか」と言われて申し訳ない気持ちでいっぱいでした。が、ついに改訂版が発売されることになりました!もちろん最新のRailsである6.0に対応しています。 発売日は7月25日ですが、先行して発売している書店もあるそうです。 パーフェクトRuby on Rails 【増補改訂版】:書籍案内|技術評論社 ブログで振り返ると、第1版を書いたのは6年前だったようです。6年前といえばRailsは4.1がリリースされた頃で、フロントエンドはCoffeeScriptを書いてSprocketsでコンパイル、デプロイはCapistranoを使うのが主流だったような気がします。6年でだいぶRailsによる開発の進め方が変わりましたね。このあたりはもちろん第2版で更新されて、WebpackerやDockerに置き換わっています。 改訂2版の

    パーフェクト Ruby on Railsの改訂2版を書きました - おもしろwebサービス開発日記
    invent
    invent 2020/07/17
  • 株式会社ウィルネットは設立2周年を迎えました - おもしろwebサービス開発日記

    昨日、2月21日は弊社の設立記念日でした*1。 株式会社ウィルネット二周年記念 (\( ⁰⊖⁰)/) (\( ⁰⊖⁰)/) (\( ⁰⊖⁰)/) pic.twitter.com/Ll3nDwbl4X— willnet (@netwillnet) 2019年2月21日 というわけで法人成りして2年経ちました。最初はフリーランスの延長のつもりだったのですが、会社という形態にしたことで意識が少しだけ変わってきた気がします。 これまではなんでも全部自分一人でやるというのが自然だったのですが、会社の予算を使って誰かに仕事を手伝ってもらう、という形態を徐々に受け入れられるようになってきました。空いた時間で少しずつ開発を進めているsavanna.ioも、いまはデザインに関しては職にお願いするようになっています。 昔は、一つのスキルだけを伸ばすのではなくいろんな分野を学んでいくのがよい、と思ってデザイン

    株式会社ウィルネットは設立2周年を迎えました - おもしろwebサービス開発日記
    invent
    invent 2019/02/22
  • 良いエンジニアを採用するにはどうしたらいいか - おもしろwebサービス開発日記

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

    良いエンジニアを採用するにはどうしたらいいか - おもしろwebサービス開発日記
    invent
    invent 2018/09/26
  • 定期的にyarn updateするには - おもしろwebサービス開発日記

    ライブラリは定期的かつこまめにアップデートすることで辛さを減らしていく、というのは最近の開発現場では定説ではないかと思います。Railsプロジェクトの場合、Gemfileの定期更新を実施している現場も多いのではないでしょうか*1。 最近のRailsアプリケーションはjsライブラリの管理にyarnを使っているところが多いかと思いますが、これもGemfileと同じように定期的にアップデートしたいところです。 商用のものもいくつかありますが、僕は普段使っているCiecleCIを活用して定期的にyarn updateしています。 使っているツールはこちら。CiecleCIに限定されているわけではないので、定期実行できる環境さえあればどこでも活用できると思います。 taichi/ci-yarn-upgrade: Keep NPM dependencies up-to-date with CI, pr

    定期的にyarn updateするには - おもしろwebサービス開発日記
    invent
    invent 2018/03/19
  • Rails 5.x について発表した - おもしろwebサービス開発日記

    昨日開催された、Increments ++ Tech TalkにてRails 5.xというタイトルの話をしました。 内容はWEB+DB PRESSの連載ではページ数の関係で載せられなかったRails 5.0のトピックと、Rails 5.1で入る(入りそう)な機能の話です。分量が多くなってしまい、いろいろ端折りながら喋りました。 スライド中でも触れていますが、発売中のWEB+DB PRESS Vol.93でRails 5のメジャーな変更について取り上げ済みですので、気になる方はぜひ一読ください。 WEB+DB PRESS Vol.93posted with amazlet at 16.08.19原田 騎郎 吉羽 龍太郎 松浦 隼人 須藤 涼介 生沼 一公 森下 雅章 前島 真一 鍛治 匠一 伊藤 直也 のざき ひろふみ うらがみ 高山 温 佐々木 健一 わかめ まさひろ ひげぽん 遠藤 雅伸

    Rails 5.x について発表した - おもしろwebサービス開発日記
    invent
    invent 2016/08/20
  • 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サービス開発日記
  • 権限管理のgemで良いのはどれ? - おもしろwebサービス開発日記

    昨日は ginza.rb 31回目のミートアップでした。 Ginza.rb 第31回 ユーザの権限管理どうしてます? - Ginza.rb | Doorkeeper @kyuden_ さんに、現状の二大認可 gem である cancancan や pundit、それらの問題点を解決するために作った banken について発表してもらいました。 感想 個人的には pundit のリソースベースでの権限管理は悪くないと思っています。ただスライドで書かれているような、Admin::UsersControlller と UsersController で処理を分けたい時などのエッジケースで回避策を模索しなきゃいけないのはだるいですね。banken だと、コントローラベースなのでコード記述量は増えてしまうのですがその分ハマりどころが減るので、そのトレードオフを考慮しつつ案件によって使い分けるのがいい

    権限管理のgemで良いのはどれ? - おもしろwebサービス開発日記
    invent
    invent 2016/01/20
  • Rails で fat model を避けるための、あまり知られていない方法について - おもしろwebサービス開発日記

    このエントリで書いた内容は、ほぼ Growing Rails Applications in Practice の内容が元になっています。英語ですが、ここで挙げた内容以外にもコードを綺麗に保つテクニックが書かれており、かつページ数も少なく読みやすいです。コードを綺麗に保つのが好きな方は一読してみることをおすすめします。 はじめに Rails で fat model を避けるための方法は、7 Patterns to Refactor Fat ActiveRecord Models を始めとして、多くのやり方が存在します*1。 validation や callback は ActiveRecord(以下AR) を継承せずとも利用することができます。7 Patterns to Refactor Fat ActiveRecord Models の 「3. Extract Form Objects

    Rails で fat model を避けるための、あまり知られていない方法について - おもしろwebサービス開発日記
    invent
    invent 2015/08/24
  • ActiveJob はまだちょっと使うには早いかも - おもしろwebサービス開発日記

    Rails 4.2 から導入された ActiveJob は、sidekiq や resque などのバックグラウンドジョブ系 gem を、同じ利用方法で扱えるようにしてくれます。 これは便利だなーと思い、sidekiq を ActiveJob を通じて使ってみたのですが、しばらく使った後に「まだ格的に使うのは早いかも」と感じました。 リトライ機能が貧弱 sidekiq は、ジョブが失敗した時にリトライする機能があります。失敗するたびに次にリトライする間隔が伸び、一定回数失敗したら完全に失敗として扱われます。リトライ間隔や、完全に失敗になるまでの回数はもちろん変更可能です。 Web上でリトライしているジョブや完全に失敗したジョブを確認することもできます。 ActiveJob を使うと、この細やかなリトライ機能を失うことになります。例えば、次のように例外を拾って再度キューにジョブを入れること

    ActiveJob はまだちょっと使うには早いかも - おもしろwebサービス開発日記
    invent
    invent 2015/07/24
  • refile というファイルアップロード用 gem がよさそう - おもしろwebサービス開発日記

    File Uploads with Refile | GoRails を見ての感想文です。 carrierwave の作者が作った後継 gem refile がなかなかよさそうな感じです。 S3へのブラウザからの直接アップロードのサポート サムネイルの動的生成サポート アップロード時じゃなくて、ブラウザからリクエスト来た時に生成 もちろん番時はCDNなどと併用しないとダメです ファイルを選択したら即アップロードのサポート など、carrierwave にあったらいいなーと思っていた機能が盛り込まれています。あとは参考記事に書いてある文章を読む限りでは、ソースコードも見やすくなっているぽいですね(carrierwaveのソースコード追うのは結構辛かった記憶があります)。 次ファイルアップロード機能をつけるときには使ってみようと思います。 GoRails GoRails、スタート当初は ra

    refile というファイルアップロード用 gem がよさそう - おもしろwebサービス開発日記
    invent
    invent 2015/01/06
    refile というファイルアップロード用 gem がよさそう (via @Pocket) -
  • ゆるふわ Development Club というサークルができた - おもしろwebサービス開発日記

    僕は個人でコツコツとwebサービスを作っているのですが、実際はチームで開発するほうが好きです。GitHub 上でミサワや寿司ゆきを貼ったり、チャットで機能の相談をしたり、雑談したりしながら開発を進める。やったことがある人なら、きっとその楽しさを理解してもらえるのではないでしょうか。 当たり前ですが、個人で開発するとなるとそうはいきません。チームで開発する楽しさを覚えてしまうと個人の開発は味気なくて物足りないです。 モチベーションの維持も課題です。納期や他者の目がないと、際限なく脇道にそれることができてしまいます。一人だとなかなか開発が進まない…><。 個人だけどチームっぽく楽しく開発を進めたい。 そこでポエムに、「僕みたいに個人で開発をしている人たちを集めたら、チームっぽい開発ができるのでは?」という内容を書いたところ、色々あってサークルが出来ました。 ゆるふわ Development C

    ゆるふわ Development Club というサークルができた - おもしろwebサービス開発日記
    invent
    invent 2014/08/06
  • パーフェクト 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サービス開発日記
    invent
    invent 2014/05/03
  • Travis CI から heroku にデプロイするのってセキュリティ的に問題ないのか調べた - おもしろwebサービス開発日記

    Travis CI べんりですね。「テストが通ったらherokuにデプロイする」ということもできるようなのでやってみました。すでに Travis CI の基の設定は済んでいる前提です。 gem i travis # travis gem を入れていなかったら cd YOUR_APP_PATH travis setup heroku とすると、アプリケーションルートにある.travis.yml に必要な設定を追記してくれます。これをコミットしてプッシュするだけ。とても簡単でした。 でも少し気になることがありました。 疑問1 ここでは heroku のトークンを暗号化したものを.travis.ymlに記述しているようです。github に公開して、別の誰かにトークンを複合されたりしないでしょうか? 回答1 公開鍵で暗号化されていて、秘密鍵はtravisが保持しているのでとりあえず大丈夫そう。

    Travis CI から heroku にデプロイするのってセキュリティ的に問題ないのか調べた - おもしろwebサービス開発日記
  • tachikoma を使って毎日自動で bundle update - おもしろwebサービス開発日記

    sanemat さんが作っている tachikoma という gem があります。tachikoma の機能は簡単に言うと「github の指定のプロジェクトbundle update して、差分を pull request してくれる rake タスク」です。cron や jenkins などで定期的に実行するようにすると、依存する gem のバージョンを常に最新に保つことができます。べんり! そんなべんりな tachikoma なのですが、ドキュメントが分かりづらくて損をしている気がします…><。すこしでも足しになるように、僕が作っている revenger というプロジェクト(github 上のプライベートリポジトリに置いてある)の tachikoma 設定手順をまとめましたのでご参考あれ。 前提 github のプライベートリポジトリで管理してる jenkins サーバ上で定期実

    tachikoma を使って毎日自動で bundle update - おもしろwebサービス開発日記
    invent
    invent 2014/04/22
  • 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サービス開発日記
    invent
    invent 2014/04/20
  • ginza.rb 第0回を開催して Rails 4.0 のリリースノートを読んだ - おもしろwebサービス開発日記

    先月にginza.rb 第0回を開催しました。ちょっと遅れましたがやった内容などを書きます。 やったこと Ruby on Rails 4.0 Release Notesを頭から一通りざっくり読んで、Rails 4.0 の新機能と変更点を勉強しました。 まず、4.0 での大きな追加項目なはずの Strong Parameters Turbolinks Russian Doll Caching についてはなぜか冒頭に名前が書かれているだけで、機能の説明がありません。なので下記のサイトを見つつざっくりどんな機能なのかを説明しました。 Rails4.0に含まれる strong_parameters について - willnet.in Rails 4.0 に入る予定の turbolinks について調べた - willnet.in #387 Cache Digests - RailsCasts 残り

    ginza.rb 第0回を開催して Rails 4.0 のリリースノートを読んだ - おもしろwebサービス開発日記
    invent
    invent 2013/10/27
  • Rails 4.0 で新しく追加される予定の find_or_create_by メソッドについて - おもしろwebサービス開発日記

    EdgeRails.info見てたら気になったので調べました。 最近 rails の master に、 rails 3.x 系でよく使っていた first_or_create と似たメソッド find_or_create_by が追加されました。そして first_or_create の方はメソッドの説明が削除され、depricated ぽい扱いになるようです。 詳しくは rails/activerecord/CHANGELOG.md at 300d080ada31ac297264e6abba6ca16cd2db5925 · rails/rails · GitHub の真ん中辺りに書かれていますが、どうやら first_or_create は where などのメソッドが先にいくつかチェーンでつながってから書かないといけないので読みづらい!ということみたいですね。大事なことを最初に書きた

    Rails 4.0 で新しく追加される予定の find_or_create_by メソッドについて - おもしろwebサービス開発日記
    invent
    invent 2013/09/01
    Rails 4.0 で新しく追加される予定の find_or_create_by メソッドについて - willnet.in
  • ランダムで日本人の名前を返す 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サービス開発日記
    invent
    invent 2013/07/26
    ランダムで日本人の名前を返す gem を作った - willnet.in
  • timecop のちょっと便利な書き方について - おもしろwebサービス開発日記

    みなさん、 timecop 使ってますか?timecop は、テストで時間を扱う時に必須と言えるライブラリです。テスト中の時間を止めたり(Timecop.freeze)時間を移動させたり(Timecop.travel)できます。似たようなライブラリとして delorean があります。RailsCasts でも紹介されています。 さて、timecop の README には下記のようなコード例が書いてあります。 t = Time.local(2008, 9, 1, 10, 5, 0) Timecop.travel(t) 僕はこれまで上記のように書くしか方法が無いと思っていたのですが、今日下記のようにも書けることに気づきました。 Timecop.travel(2008, 9, 1, 10, 5, 0) また、ブロックを使うこともできます。 Timecop.travel(2008, 9, 1,

    timecop のちょっと便利な書き方について - おもしろwebサービス開発日記
    invent
    invent 2013/01/17
    timecop のちょっと便利な書き方について - willnet.in
  • 僕が参考にしている Ruby, Rails の情報源まとめ(海外ブログ編) - おもしろwebサービス開発日記

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

    僕が参考にしている Ruby, Rails の情報源まとめ(海外ブログ編) - おもしろwebサービス開発日記
    invent
    invent 2012/09/29
    僕が参考にしている Ruby, Rails の情報源まとめ(海外ブログ編) - willnet.in