タグ

ブックマーク / techracho.bpsinc.jp (21)

  • Web開発環境をMacBook ProからWindows機に移行してみた話|TechRacho by BPS株式会社

    メイン著者記事としてはご無沙汰しておりますmorimorihogeです。 今年もTechRachoではアドベントカレンダー特集ということで、普段あまり記事を書く機会がなくて表に出ないメンバーにも記事を書いてもらえる運びとなりました。クリスマスまではアドベントカレンダー特集進行のTechRachoをお楽しみ下さい。 今回は最近メイン開発環境をMacからWindowsに移行したので、そのあたりの感想や設定の勘所などをまとめてみたいと思います。 なぜMacから移行するのか? 僕はOS XのIntel Macが出たころからのMacユーザー(当時はまだRosettaとかがありました)で、かれこれ10年以上Macを使い続けてきました。多分Webシステム開発用途でMacを使い始めたという人の中では古参の方なのではないでしょうか。 というわけで、なんで移行するの?という話からぽえみーに綴ってみようと思いま

    Web開発環境をMacBook ProからWindows機に移行してみた話|TechRacho by BPS株式会社
  • Service Objectがアンチパターンである理由とよりよい代替手段(翻訳)|TechRacho by BPS株式会社

    近年、RailsアプリにService Objectを追加するメリットを説く記事が次から次へと量産されています。私は記事において、それがなぜ正しくないかを述べたいと思う次第であります。もっとよい方法はあるのです。 私はこれまで、Service Objectに関するネット上の議論にときおり参加しては、問題に対するまっとうな解決方法としてService Objectが正しくない理由について繰り返し見解を述べてきました。実際、私は多くの場合においてService Objectよりもっとよい解決方法があると考えるのみならず、Service Objectはオブジェクト指向設計原則への配慮が損なわれている兆候を示すアンチパターンとして取り扱っています。 このような深遠なポイントを細切れのツイートやコメント欄を追って理解するのは大変です。そこで私は、私の見解を正確に表すいくつかの現実的なコードを詳しく

    Service Objectがアンチパターンである理由とよりよい代替手段(翻訳)|TechRacho by BPS株式会社
  • Reduxストアの概念をRubyで再実装して理解する(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Understanding Redux store concepts by little Ruby reimplementation 原文公開日: 2018/01/30 著者: Josef Strzibny なお、reducerは「レデューサー」「リデューサー」の2とおりのカタカナがあるようですが、ネットで多数派の「レデューサー」にしました。 Reduxは最近のJavaScriptアプリのステート管理ライブラリとして人気が高まっており、実際にはその中心にシンプルなデータストアがあるだけです。Reduxのストアは他と何が違うのでしょうか?データを保存する点では他のストアと同様ですが、Reduxのデータ変更は常に「アクション」を「レデューサー」と呼ばれるものにディスパッチすることで行い、サブスクライブしているリスナーに通知します。Re

    Reduxストアの概念をRubyで再実装して理解する(翻訳)|TechRacho by BPS株式会社
  • 開発会社におけるエンジニアスキル向上施策の過去と今|TechRacho by BPS株式会社

    morimorihoge@Webチーム部長です。ご無沙汰しています。ゴ魔乙はギルド戦が実装されてから拘束時間が多くなり、そろそろ見切りを付けようかとも思い始めた今日この頃です。とりあえずポケモンGOは始めました。 しばらくTechRachoに投稿できていなかったわけですが、別に遊んでいたわけではなく、むしろ開発会社としての業の方で一杯一杯でなかなか記事を書く気合を充填できていませんでした。 今回は、最近社内で(というか主に僕のいるWebチームで)取り組んでいる社内エンジニアのスキルアップへの取り組みについて、これまでの経過と近況を書こうと思います。長いです。 ※今年に入ってから弊社は事業拡大を目指して採用活動を強化しており、現在進行形でメンバの増強を行っています。新しい人が入ってくる中で古くからの人もいるという当たり前のことではありますが、過去にこういう取り組みをしていたんだよという記録

    開発会社におけるエンジニアスキル向上施策の過去と今|TechRacho by BPS株式会社
  • 30人弱の開発会社で外部の新人研修を試してみた。感触まとめ。|TechRacho by BPS株式会社

    こんにちは。BPS株式会社代表の渡辺です。4月に3名新卒が加入し、5月には3名中途の方が加入してくれました。来年も新卒を採用したいですし、時期問わず中途採用には力をいれています。そのためにオフィスを綺麗にしたり、社内の制度を整備したり、入社を検討してくれる方に向けての試行錯誤は続けてきました。 新人研修の位置づけ ただ、入社してくれた方にたいして、仕事がしやすい環境作りの面では、まだまだ疎かだったかなと反省しています。というわけで今年度から新人向けには外部の新人研修を設け、中途向けには社内勉強会を活性化させてみています。 新人社員研修 社内勉強会 似たような規模の会社に務める方から、BPSはどうやって新人研修導入を役員で合意したの?導入してみてどうだった?聞かれたので、今回は新人研修についてまとめておこうかな、なんて思っています。なお、社内勉強会に関しては、外部にも公開していく予定で、また

    30人弱の開発会社で外部の新人研修を試してみた。感触まとめ。|TechRacho by BPS株式会社
  • 新規インストールしたEclipseでコード補完候補が出なくなってしまった場合の対処法|TechRacho by BPS株式会社

    Macを新しくした関係で開発環境を再構築しているのですが,Eclipse+ADTでAndroid開発環境を整えた段階で,なぜか全てのコード入力補完機能が使えなくなってしまいました(Mac OS X Lion + Eclipse 3.7.0). 具体的には,コード補完して欲しいところまで記述してAlt+/(人によってはCtrl+Space)を押してコード補完ウィンドウを出すと「No Default Proposals」と表示されてしまい,補完候補が0件になってしまう状況でした. ソースコード自体は別の環境で動作するのを確認しているものだったので,環境に依存するものだと思い,色々とぐぐっていたところ,EclipseではなくてZend Studioなのですが,以下のページを見つけました. Zend Studio 7.1でコードアシスト(コードの補完機能)が使えなくなった時の対処 Zend Stu

    新規インストールしたEclipseでコード補完候補が出なくなってしまった場合の対処法|TechRacho by BPS株式会社
  • Railsで大きなファイルを扱う際のポイント|TechRacho by BPS株式会社

    Railsで大きなファイルを扱う際のポイントをまとめてみました。 前提 大きなファイルとは だいたい100MB~10GBくらいのファイルをダウンロード・アップロードするのを想定することにします。 数MB程度だと、特別な工夫なしでもそれほど問題になりません。10GBを超えてくると、気をつけるべき点が変わってくるかと思います。 以下では主にサンプルとして、1GBのファイル(ISOファイルやZIPファイルなど)を想定します。 環境 以下のような環境を想定します。 Railsは4系 Nginx + Unicornのスタンダードな構成 サーバ1台のシンプルな構成(ロードバランサを使用した複数台構成については、末尾に少し記載しています) ダウンロード ファイルのダウンロード まずは、Railsアプリから大きなファイルを配信するケースを考えましょう。 たとえば、ISOファイルをサーバ内に保存しておいて、

    Railsで大きなファイルを扱う際のポイント|TechRacho by BPS株式会社
  • [Rails 4.0] 巨大なテーブルやserializeを使うときのActiveRecordオーバーヘッドを測定してみた|TechRacho by BPS株式会社

    2013.08.12 [Rails 4.0] 巨大なテーブルやserializeを使うときのActiveRecordオーバーヘッドを測定してみた Railsは遅い!とよく言われますが、高速化ポイントのうち最有力候補の1つがDB/モデル周りです。 N+1問題を修正するだけでも、体感できるレベルの高速化が期待できます。 しかし、RubyKaigiでCookPadの方も言っていたように、RDBMSSQLを実行する時間だけでなく、ActiveRecordオブジェクトの処理は非常に重いです。 モデル周りの最適化と聞いて、一生懸命SQLをEXPLAINするのも大事ですが、ログに出力される「Prefecture Load (0.5ms)」のような数値にはActiveRecordオブジェクト部分のオーバーヘッドが含まれていないため、全体でどの部分が遅いのかを理解しないと徒労に終わってしまう可能性がありま

    [Rails 4.0] 巨大なテーブルやserializeを使うときのActiveRecordオーバーヘッドを測定してみた|TechRacho by BPS株式会社
  • 最近知ったRailsの便利なメソッド

    最近になって知った Railsの便利なメソッドを紹介したいと思います。 pluck http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html#method-i-pluck User.select(:id).where("age >= ?", 20).map(&:id) こんなコードが User.where("age >= ?", 20).pluck(:id) こうなります Rails3系では指定できるカラムはひとつだけでしたが、Rails4から複数カラムを指定できるようになりました。 User.where("age >= ?", 20).pluck(:id, :name) #=> [[1, '太郎'], [2, '花子'], [3, '二郎']] Rails3系でもmultipluck というgemを使えば同じことが

    最近知ったRailsの便利なメソッド
  • Rails4 とsimple_form でBootstrap3 のform-horizontal を使う方法|TechRacho by BPS株式会社

    2014.06.27 Rails4 とsimple_formBootstrap3 のform-horizontal を使う方法 ワールドカップで寝不足なshibuso です。日は残念ながら敗れてしまいましたが、個人的にはオランダがどこまで勝ち進むかが楽しみです。 さて、タイトルのとおりsimple_form のお話です。これは2014 年 6月 26日現在でのまとめであり、この後変わる可能性は多々あります。また、手元の環境はRuby が2.1.0 でRails は4.1.1 です。 今まで何度かsimple_form を使ったことはあったのですが、毎回最低限の機能を適当に使っていて、カスタマイズするのは面倒そうだし名前の通りの「simple」ではないよなと思って詳しくは調べていませんでした。ただ、今回Bootstrap3 に適用させたいと思って調べたところ、少し工夫が必要だったのでま

  • FactoryGirlでtraitを使うとintegration test書くのが捗るという話|TechRacho by BPS株式会社

    注: factory_girlはfactory_botに改名されました。 おなじみfactory_girlがちょっと分かってきたので覚え書きがてらメモです. FactoryGirlって,あちこちで見る事例がシンプルすぎることが多くて手元のある程度複雑なデータ構造のFactoryをどうやって書くか,ピンと来ないことが多い気がします.要試行錯誤ですね. 前提Model この記事で使うModelの前提です.掲示板(Forum)があり,そこに対して記事(Post)を投稿するのですが,記事には商品(Product)が紐付いている,というものです. イメージとしては「おまえらのオススメガジェット教えろ」みたいなのがforumで,postには具体的なコメントと商品を選択して評価スコア(100点満点)と一緒に投稿できる,といったものになります. Rails4前提なので,attr_accessibleは書い

    FactoryGirlでtraitを使うとintegration test書くのが捗るという話|TechRacho by BPS株式会社
  • Railsで検索を高速化するならこれで決まり!Sunspotで始めるSolr入門|TechRacho by BPS株式会社

    Railsで簡単に使える全文検索と言えば、Sunspotが人気です。 非常に使いやすくできていて、わずか数ステップで格的な全文検索を始めることができます。 バックエンドは信頼と実績のApache Solrなので、性能・信頼性・拡張性は折り紙付きです。 そんなSunspotですが、実際にサーバに設置してサービス運用に乗せるとなると、ローカルで試しに動かす分には必要なかったことも気にする必要がでてきます。 データのバックアップはどうすれば良いんだ? 公開したあとにインデックス張り直すときは? この1000行以上ある設定ファイルはいったい何なんだ? 最近は、Railsシステムの高速化・パフォーマンスチューニングをさせて頂くことも増えたので、Sunspot/Solrも小規模ながら活用できるようになってきました。 これを機に社内勉強会を開催したので、そのスライドをSlideShareにアップロード

    Railsで検索を高速化するならこれで決まり!Sunspotで始めるSolr入門|TechRacho by BPS株式会社
  • 挑戦しないと失敗も成功もしないんだなと感じた2014年度前半~エンジニア20人の会社が投資してみてうまくいったこと・そうでもなかったこと|TechRacho by BPS株式会社

    2014.11.05 挑戦しないと失敗も成功もしないんだなと感じた2014年度前半~エンジニア20人の会社が投資してみてうまくいったこと・そうでもなかったこと 皆さまこんばんは。BPS渡辺です。“しゃっちょでもこのくらいコード書けるんだからもっとがんばれよ!”という激励が社内であったと聞いて、うちも先輩風ふかすやつがでてきて嬉しいなと感じる反面、微妙に心を痛めています。 ・・・ 皆さま含めて沢山の方々のおかげで今年もなんとか生き延びることができました。当にいつもありがとうございます。先週金曜日(10月31日)が設立日がだったので今年やってきたことを整理してみようかなと思います。 去年(2013年)の挑戦 以前記事にしたように去年度はプッシュ営業を捨てました。同時に開発者の採用に拍車をかけました。弊社はHP経由でお仕事の引き合いが多いため十分経営は安定しているし、社外よりも社内に目を向ける

    挑戦しないと失敗も成功もしないんだなと感じた2014年度前半~エンジニア20人の会社が投資してみてうまくいったこと・そうでもなかったこと|TechRacho by BPS株式会社
  • よくある?Rails失敗談 default_scope編|TechRacho by BPS株式会社

    モデルからデータを取得する際に常に特定の検索条件を指定することができるdefault_scopeですが、 デメリットについてあまり注意を払わずに使ってしまって失敗しました。 サンプル事例 環境 * Rails 3.2.12, 4.0 * MySQL 5.1.65 ※ 実際に問題が起きたバージョンが3.2.12 なのでそちらが中心になっています。 データを「名前」「年齢」どちらか指定された値で並び替えるという処理があったので、 特に指定が無ければid順で取得するという条件をdefault_scope を使って追加しました。 class User < ActiveRecord::Base default_scope -> { order(:id) } end これで、モデルからデータを取得する際に必ずORDERが指定されるようになります。 User.all #=> SELECT "users"

  • 肥大化したActiveRecordモデルをリファクタリングする7つの方法(翻訳)

    更新情報: 2013/11/19: 初版公開 2021/01/08: 訳文見直し、追記 こんにちは、hachi8833です。今回は、自分が知りたかった、Active Recordモデルのリファクタリングに関する記事を翻訳いたしました。1年前の記事なのでRails 3が前提ですが、Rails 4以降でも基的には変わらないと思います。リンクは可能なものについては日語のものに置き換えています。 なお、ここでご紹介したオブジェクトは、app以下にそれぞれ以下のようにフォルダを追加してそこに配置します。 注記: 以下は使われそうなフォルダを列挙しただけであり、実際にはこの一部しか使いません。 Value Object Service Object Form Object Query Object View Object Policy Object Decorator ⚓ 肥大化したActive

    肥大化したActiveRecordモデルをリファクタリングする7つの方法(翻訳)
  • Rails アプリケーション開発で役に立ったJavaScript デバッグの小技|TechRacho by BPS株式会社

    Chrome devtools でイベント監視 いろいろなJavaScriptプラグインを使っていると イベントの伝播を止めてしまうような動作をするものを使ってしまうことがあります。 function を割り当てたいイベントが止められていると厄介です。 代用できるイベントが生き残っていればそちらを使ってしまいたいです。 そんな時、どんなイベントが発生しているのかは Chrome devtools のmonitorEvents で確認することができます。 https://developer.chrome.com/devtools/docs/commandline-api#monitoreventsobject-events 第一引数で監視対象、第二引数でイベントを指定します。 monitorEvents(window, "resize"); イベントの指定はイベント名だけでなく、"mouse

    Rails アプリケーション開発で役に立ったJavaScript デバッグの小技|TechRacho by BPS株式会社
  • chefからansibleに乗り換えた5つの理由|TechRacho by BPS株式会社

    1年くらいchefを使ってサーバ構築をしていたのですが、最近ansibleに乗り換えたので紹介記事を書いてみます 1. サーバ側に何もインストールする必要がない chefは管理対象ノードにchef-clientをインストールする必要がありますが、ansibleはPython 2.4が入っていて、sshでログインできればOKです。 chefもパッケージや,knife bootstrapコマンド等があるので始めやすいですが、何もする必要がないansibleの方が敷居が低いのかなと思ってます。 例えばsshでログインできれば、以下のコマンドを打てば10.0.10.1~10.0.10.3サーバの情報をとってくれます(カーネルバージョン,CPU,メモリ,ディスクサイズ,ディストリビューション等)。 この機能はchefで使われているohai相当のことをしてくれます。 echo 10.0.10.1 >

    chefからansibleに乗り換えた5つの理由|TechRacho by BPS株式会社
  • [翻訳] Rails Guideの翻訳を進めました|TechRacho by BPS株式会社

    こんにちは、hachi8833です。これまでチマチマ翻訳してきたRails Guideへのリンクをご紹介します。ガイド全体から見ればまだ半分ぐらいですが、サイズの大きいファイルから先に翻訳を進めてきたので、残っているのは比較的小さなファイルです。 注意: これらのファイルは今のところ翻訳が完了しただけであり、レビューなどはまだ行われていません。各人の責任でご利用ください。 補足: Githubに置いたことでmarkdownは簡易整形されていますが、画像は表示されません。Railsガイド ガイドラインに記載されている方法で Railsガイドをビルドすれば画像+CSSのあるガイドが得られます。 ファイル間のリンクはビルドが前提なので、そのままでは無効です。 訳していて怪しいと思った箇所には●を付けてとっとと先に進んでいます。 原文に忠実な訳とは限りません。原文より情報を増やしたり言い方を変えて

  • Rails勉強会まとめ -- 非同期処理/RSpecなど|TechRacho by BPS株式会社

    こんにちは、hachi8833です。 今回は棚卸しとして、弊社CTOのbabaさんによるRails勉強会スライドから引用して記事にします。 勉強会自体はRails 3.x時代のものなので既出が多くなっていますが、棚卸しも兼ねて今のうちに記事にいたしました。 非同期処理 言うまでもなく、リクエストからレスポンスまでの時間が長くなるほどユーザー・エクスペリエンスの質が低下します。これを改善するためにさまざまな工夫が必要になるわけですが、その中の一つとして、時間のかかる処理をバックグラウンドで実施しておくというのがあります。 cron 最も素朴な方法はやはりunix標準のcronを使って定時に出力データを準備することでしょう。この場合、起動用スクリプト(rakeなど)やジョブ管理は自分で作成する必要があります。 delayed_job delayed_job gemを使用すると、ジョブをActi

  • ぐにゅぐにゅ動く直感的なGitクライアント ungit|TechRacho by BPS株式会社

    ungitはnode.jsで動くグラフィカルなgitクライアントです Learn Git Branchingみたいな直感的なGUIで操作できるので とても分かりやすいです インストール 今回はnvmを使用してnode.jsを入れます $ git clone git://github.com/creationix/nvm.git ~/.nvm $ source ~/.nvm/nvm.sh $ nvm install v0.10.22 $ npm install -g ungit $ nvm use v0.10.22 ログイン時も有効にしたい場合は.bashrcに以下のように書いておきます if &#91; -d $HOME/.nvm/ &#93; then source ~/.nvm/nvm.sh nvm use v0.10.22 &#62; /dev/null fi 起動 以下のコマンドで

    ぐにゅぐにゅ動く直感的なGitクライアント ungit|TechRacho by BPS株式会社