タグ

ブックマーク / qiita.com (75)

  • Railsでやってしまいがちな保守性を下げてしまうコードとその解決策 - Qiita

    こんにちは。COUNTERWORKSアドベントカレンダー13日目担当の疋田です。 先月からエンジニアとしてJOINしました。現在、業務ではshopcounterというサービスのRailsアプリケーション開発や日々の運用、データ集計や分析を元にしたプロダクトの改善などをメインで行っています。 スタートアップのエンジニアを経験していく中で、常に素早くPDCA回してユーザからのフィードバックをプロダクトに反映することが重要になってくるため、エンジニアとしてはコードの変更のしやすさとか捨てやすさ、読みやすさってかなり重要だなーと改めて強く思ってます。 今回は3年くらいRailsやってきた中でちょっとずつ溜まってきたメンテするときこういうコード辛かったなって部分を共有できたらなと思います。 ちなみに、これらはすべて今までの自分自身もやっていた時期があるコードであり、反省の意味も込めて書いてみます。

    Railsでやってしまいがちな保守性を下げてしまうコードとその解決策 - Qiita
    kattton
    kattton 2017/12/18
    "オブジェクト指向設計実践ガイド" kindleで10時間くらいかかるぽいけどいまのところとても楽しく読めているしオススメ
  • webpack時代の終わりとparcel時代のはじまり - Qiita

    設定不要のビルドツール parcelというビルドツールが空前の勢いでGitHubスターを集めており、リリース数日で5000スターを超えています。今日だけでも1000スター以上増えており、Googleなどの有名企業リポジトリ以外でこのスピードで人気がでるのは異例です。 https://github.com/parcel-bundler/parcel https://parceljs.org/ 実際に試してみたところ、これはwebpack一強時代を終わらせるレベルの使いやすさだと確信しました。 作者はAdobeのエンジニアで、その他著名エンジニアも続々と参加している様子です。 webpack疲れ webpackが出た当初、webエンジニアgulp/grunt疲れの状態だったことを覚えている方もいるかと思います。 webpackの統合された設定ファイルは、タスクランナーで逐次処理していたものを

    webpack時代の終わりとparcel時代のはじまり - Qiita
    kattton
    kattton 2017/12/09
    そろそろフロントエンドの歴史家とか考古学者が必要になるレベル
  • Rubyを好きな理由、使い続ける理由 - Qiita

    なぜRubyが好きなのか なぜRubyを使い続けるのか Rubyの何が「楽しい」のか 自分の整理がてらこのあたりを言語化してみたいと思い、この記事を書く。 Rubyは「楽しい」 Rubyはよく「書いていて楽しい」とか「書いていて気持ちがいい」とか言われている。 僕自身もこの感覚は持っているし、Rubyを使い続けている人の殆どは少ならからず同じような感覚を持ったことがあるんじゃないかと思っている。 いくつかその例を。 以下は『Rubyソースコード完全解説』を書かれた青木峰郎さんのサイトから引用。 Ruby が Ruby たる所以は「書くのが楽しい」ところなのである。 これはめちゃくちゃ重要なことだからもう一度書こう。 Ruby は書くのが楽しいプログラム言語なのだ! どうしてそんなにLove Ruby? 以下は伊藤直也さんのブログから引用。 ※ ただし、RubyではなくRu

    Rubyを好きな理由、使い続ける理由 - Qiita
    kattton
    kattton 2017/12/09
    たのしい
  • 「プロを目指す人のためのRuby入門」別館のカレンダー | Advent Calendar 2017 - Qiita

    書籍「プロを目指す人のためのRuby入門」(チェリー)の中に収録できなかった技術記事を、著者が自ら公開していくアドベントカレンダーです。 以下のような記事を公開していきます。 ページ数の関係でカットせざるを得なかった記事 書のコンセプトや対象読者にマッチしないと判断して収録を見送った記事 「あ、あの話も書いておけば良かった」とあとから思った記事 チェリーではもともとあった原稿からトータル100ページ以上の記事をカット(!)しました。 ですが、このままお蔵入りにしてしまうのはもったいないので、このアドベントカレンダーで無償公開します。 もともとは書籍の原稿だったということで、文にはときどき章番号や項番号が登場するかもしれませんが、ご了承ください。 チェリーもここで公開したものと同じような雰囲気で説明していますので、興味を持った方はお近くの書店で書を手に取ってみてください!

    「プロを目指す人のためのRuby入門」別館のカレンダー | Advent Calendar 2017 - Qiita
    kattton
    kattton 2017/12/01
    なにこのアドベントカレンダー期待すごい
  • SQLQL - Qiita

    概要 GraphQL で柔軟なリクエストができるようになれば、サーバー側の実装をせずとも新しい機能を効率よく作れて便利みたいな話を見かけた GraphQL では独自のクエリ言語でサーバーに対してデータを要求するが、クエリ言語と言えば SQL というものがあるので、どうせなら SQL をサーバーに投げつけるようにすれば、似たようなことが出来るのではないかと考えたのでやってみた サンプルアプリケーション ソースコード sqlql_sample 仕様 ユーザー ユーザーは key(Token) を持っていて、リクエストの時にヘッダーに Token をつける privacy という属性を持つ。privacy が true のユーザーは他のユーザーからは不可視となる コメント ユーザーが投稿する事ができる privacy という属性を持つ。privacy が true のコメントはコメントのオーナー

    SQLQL - Qiita
    kattton
    kattton 2017/09/23
    SQLQL、敵を倒せれば、ワンチャンあるとおもう
  • エンジニアのための「Sketch入門!」 1時間コース - Qiita

    ※「Sketch」はMac専用アプリです。Windows版はありません。 「演習ファイル+動画+演習付き」で記事を書いてます。 エンジニアの人から「Sketch使ってみたい」「日語の記事が少ない」という声を聞いて、最近社内で勉強会しました。 Sketchについて日語の記事を調べてみたところ、このレベルの記事はけっこうありました。 ただ、学びやすいか?といえばそうではないらしいので、少し工夫して学びやすいように書いてみました。 ハンズオン用などにご利用ください。 Sketchとは Sketchについて一応さらっと書いておきます。 ・アプリやWebのデザイン・UI設計などに使われるMac用アプリケーション IllustratorやFireworksのようなツールです。 ・$99 買いきり(2016/02 現在) 有料です。 ちなみにApp Storeでは買えなくなりました。ショバ代かかるか

    エンジニアのための「Sketch入門!」 1時間コース - Qiita
    kattton
    kattton 2017/07/07
    これ、週末やろう
  • ローカル環境でのフルテストを60分短縮した話 - Qiita

    Viibarアドベントカレンダーのトップバッターは @yagince が担当致します。 テスト書くのが当たり前になってきた昨今、フルテストはCIサーバに任せるのが当たり前になっている方も多いのではと思います。 しかし、こんな事ありませんか? CIのキューがめっちゃ溜まってしまう インターネット繋がらない環境にいる時にリモートにpushできない そんな時、ローカルでフルテスト流したい!ってことになりますよね。 はい、私はなりました。 というわけで、今回はローカル環境でフルテスト流すのを頑張るためにやったことを書きます。 ※今回はテスト自体をリファクタリングするのではなくツールや設定を変更する事で改善を試みます 前提 Ruby: 2.2.2 Rails: 4.2.3 MySQL: 5.6.27 OS: Mac OSX 10.10.5 まずはフルテスト流してみる

    ローカル環境でのフルテストを60分短縮した話 - Qiita
    kattton
    kattton 2016/12/16
    test-queue!
  • Wercker CLI - Qiita

    WerckerはCIツールのひとつで、BitBucketやGitHubのリポジトリをターゲットにビルドや自動テスト/デプロイを実行することが出来るツールです。特にβ期間だからというのもあるのでしょうが、Github のプライベートリポジトリをターゲットにしても無料で利用できるというのは大きな魅力で人気があります。 このポストでは、Werckerをローカルで実行するためのツール、Wercker CLIについて解説したいと思います。 OverView WerckerはCIのホスティングサービスです。あらかじめWerckerのサイト上でGitHubのレポジトリを登録しておき、そのレポジトリ上にstep(一つ一つのビルド上の手続き)やpipeline(stepや後処理の集合)を定義したwercker.ymlというYAMLファイルに配備します。そしてその対象のリポジトリ上でGitHubのPull R

    Wercker CLI - Qiita
    kattton
    kattton 2016/12/09
    まとまっていて助かる
  • ナイーブベイズ分類器を頑張って丁寧に解説してみる - Qiita

    ============================================= ナイーブベイズ分類器、あるいは単純ベイズ分類器という分類器について解説したいと思います。 何それ?という方。まずはわけがわからないとしてもWikipediaのエントリを見てみましょう。 http://ja.wikipedia.org/wiki/単純ベイズ分類器 上の説明でよくわかったという方はこれ以上先に進む必要はありません。 ナイーブベイズ分類器は、一言でいうと、 分類問題ってベイズの定理を使えば解けるんじゃね? というものです。入力 $X$ が与えられた時に出力 $Y$ が得られる確率 $P(Y|X)$ は以下の等式で表す事が出来ます: $$ P(Y|X) = \frac{P(Y) P(X|Y)}{P(X)} $$ これがベイズの定理です。 $P(Y)$ は事前分布と呼ばれ、 $P(X|Y)$

    ナイーブベイズ分類器を頑張って丁寧に解説してみる - Qiita
  • SalesforceとRuby On Railsを連携させる開発のポイント - Qiita

    Salesforce(SF)とRuby On Railsを連携させるシステムを作成する時に気をつける点をまとめました。 良かったら参考にしてください。 ちなみにRails開発者側からの視点で書いてあります。 環境 サーバー: Heroku DB: PostgreSQL 連携用gem: Restforce(REST API) データ設計 データ設計はSF側から始めよう SF側には制限や制約が多く存在します。 例えば作成できるオブジェクト数は1番安いプラン(1ユーザ3,000円)だと10オブジェクトまでしか作成できない(11オブジェクト以上使いたかったら値段が3倍上がるっ!)とか。 Railsでいうhas_oneや、belongs_toに個数の制限があったりとか。 とかとかRails開発者には想像も及ばない制限があったりするので、RailsからDB設計をすると痛い目をみます(した)。なのでSF

    SalesforceとRuby On Railsを連携させる開発のポイント - Qiita
  • 複数のcsvファイルを一つのcsvファイルにマージ - Qiita

    require 'pp' require 'csv' class CSVMerger def save_csv CSV.open("./merged.csv", "wb") do |csv| merge_array_from_csv.each do |element| csv << element end end end def merge_array_from_csv list1 = load_csv("1.csv") list2 = load_csv("2.csv") generated_array = [] generated_array_element = [] for i in 0..(list1.count.to_i - 1) for j in 0..(list2.count.to_i - 1) if (list1[i][0] == list2[j][0]) generated

    複数のcsvファイルを一つのcsvファイルにマージ - Qiita
  • rails runnerで起動するスクリプトにオプションを渡す - Qiita

    require 'optparse' options = {} OptionParser.new { |o| o.banner = "Usage: #{$0} [options]" o.on("--opt1=OPT", "option1") { |v| options[:opt1] = v } o.on("--opt2=OPT", "option2") { |v| options[:opt2] = v } }.parse!(ARGV.dup) p options $ bundle exec rails runner script/do_something.rb --opt1=foo --opt2=bar {:opt1=>"foo", :opt2=>"bar"} $ bundle exec rails runner script/do_something.rb --help Usage: r

    rails runnerで起動するスクリプトにオプションを渡す - Qiita
  • リバースプロキシって何?触りだけ学んだサーバー/インフラ入門 - Qiita

    Goでリバースプロキシを作ったものの、そもそもリバースプロキシが何なのか、何で必要なのか分からなかったのでまとめてみた。 主に [24時間365日] サーバ/インフラを支える技術 ‾スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ) を勉強して、理解に必要そうなところだけ抽出した。 冗長化の必要性 冗長化とは、障害が発生しても予備の機材でシステムの機能を継続できるようにすること。 Webサービスでいえば、webサーバが1つ死んだり障害が発生したりしても、サービスには支障を出さずに運用を続行出来るようにすること。 システムを冗長化するとは、 障害を想定する 障害に備えて予備の機材を準備する 障害発生時に予備の機材に切り換えられる運用体勢を敷く ことをいう。 予備機材を導入して障害に備える 先の冗長化の方法にあるように、予備機材を導入する。 これでw

    リバースプロキシって何?触りだけ学んだサーバー/インフラ入門 - Qiita
    kattton
    kattton 2016/01/14
    こういうの有り難い
  • Media Queriesの指定について - Qiita

    Media Queriesの指定方法 Media Queriesを使ってcssを読み込む方法は3つ HTMLのlinkタグのmedia属性に記述 css内に@media記述 css内に@import記述 代表的なmedia type

    Media Queriesの指定について - Qiita
  • ある日、目が覚めたらRails(のテスト)が壊れていた - Qiita

    <この記事は「Money Forward Advent Calendar 2015」の12日目の記事です> Railsでアプリを書いたり、RubyRailsを書いたり(主にBug Fix)しています。金子です。 前書き RailsのCIではRailsのmasterとRubyのtrunkでテストが回っています。普段、趣味でこのテストを眺めていて、テストが壊れたりすると原因を調べてFixしたりしています。 RubyにもRailsにも毎日新しい機能が入っていますので、それらが衝突して思わぬバグが生まれることもあります。今年見ていて面白かったバグを3つほど紹介したいと思います。 第3位 突然の大量Error 例えばテスト結果はこちら。 1) Error: BelongsToAssociationsTest#test_with_select: ArgumentError: wrong number

    ある日、目が覚めたらRails(のテスト)が壊れていた - Qiita
    kattton
    kattton 2015/12/24
    Rails edge test watcher!!
  • 【Ruby】リバーシのプログラムを書いたりするためのgemをつくった - Qiita

    require 'reversi' Reversi.configure do |config| config.disk_color_b = 'cyan' config.disk_b = 'O' config.disk_w = 'O' config.progress = true end game = Reversi::Game.new game.start puts "black #{game.board.status[:black].size}" puts "white #{game.board.status[:white].size}" これを実行すると... 対戦が開始されます。 ソースコードへのリンク先のREADMEで実際に動いてる様子を見ることができます。 実行前の設定 Reversi.configure にデモの例の様にブロックを渡すことで各種設定を行います。 変更が無い限り、

    【Ruby】リバーシのプログラムを書いたりするためのgemをつくった - Qiita
    kattton
    kattton 2015/12/09
    ふぁー大変だなあこれ
  • Ahoy でらくらくイベントトラッキング - Qiita

    概要 ahoy という gem を利用すると、Rails アプリケーション内でのイベントトラッキングが簡単にできるようになります。 ankane/ahoy ahoy では主に 2 つのエンティティを操作します。 #カッコ内は対応するテーブル名 Visit (visits) Event (ahoy_events) Visit はユーザがサイトに新たにアクセスした場合に生成され、 Event は開発者が定義したイベントが実行された場合に生成されます。 また、ahoy ではクライアントサイド、サーバサイド両方でのイベント計測が可能となります。 導入方法 公式通りに行いましょう。 ankane/ahoy gem をインストールして、

    Ahoy でらくらくイベントトラッキング - Qiita
    kattton
    kattton 2015/11/27
    “導入や利用が手軽な一方、個人的にはアプリとアクセストラッキングが密に結合してしまうことにはやや抵抗があります”それ
  • サンプルコードでわかる!Ruby 2.3の主な新機能 - Qiita

    はじめに Ruby 2.3が2015年12月25日にリリースされました。 そこでこの記事ではRuby 2.3の主な新機能を紹介していきます。 対象となるバージョン 以下のとおり、この記事では ruby 2.3.0 を使っています。 参考文献 今回紹介するサンプルコードは下記のサイトにあったコードをベースにしています。 New features in ruby 2.3 - BlockScore Blog ただし、実行結果を確認するために Minitest を使ったり、コードをいくつか変更したりしています。 サンプルコードはGitHubにあります この記事で使ったサンプルコードはGitHubに置いてあります。 興味のある方は手元で動かしてみてください。 JunichiIto/ruby-2.3-sandbox それではここからRuby 2.3の新機能を紹介していきます。 深い階層にあるハッシュの

    サンプルコードでわかる!Ruby 2.3の主な新機能 - Qiita
    kattton
    kattton 2015/11/17
    帰りながら読もう
  • Rack解説 - Rackの構造とRack DSL - Qiita

    Rackとは RackはRubyによるWebアプリケーション開発のHTTP送受信処理を担当するモジュール(gem)で、Ruby on Railsを始めとする多くのWebフレームワークの一番下のレベルで利用されています。 稿ではRackの基的な部分を中心に説明します。 簡単なRackアプリケーション まず基を理解するため説明用の簡単なアプリケーションを作成します。 最初にrack gemのインストールが必要ですが、Ruby on Railsをインストールしている場合はすでに必須モジュールとして入っています。単独でインストールする場合は次を参考にして下さい。 次にconfig.ruという名前の小さなファイルを作ります。これはRackのサーバ起動コマンドrackupの設定ファイルで、中身はRubyで記述します。 class ShowEnv def call(env) [ 200, # ステ

    Rack解説 - Rackの構造とRack DSL - Qiita
  • 複数の子レコードを作成・更新する. accepts_nested_attributes_for - Qiita

    Active Record Nested Attributesの記事の抜粋です。 accepts_nested_attributes_forは、親子関係のある関連モデル(Project has_many :tasks や Enquate has_many :questionsなど)で、親から子を作成したり保存したりするときに使える。 1対1の時 class Member < ActiveRecord::Base has_one :avatar accepts_nested_attributes_for :avatar end params = { member: { name: 'Jack', avatar_attributes: { icon: 'smiling' } } } member = Member.create(params[:member]) member.avatar.id

    複数の子レコードを作成・更新する. accepts_nested_attributes_for - Qiita
    kattton
    kattton 2015/11/10
    accepts_nested_attributes_forか、なるほど。