Linkers Tech Blog

リンカーズ株式会社の技術ブログです。

リモートオフィスでの仕事を紹介! 2019年3月Matz会ダイジェスト

こんにちは、リンカーズ情報システム部の鈴木です。今回は弊社に残るMatz会アーカイブから2019年3月開催分をお送りします。

  • 似た企業名を探す
    • アルゴリズムの紹介
    • パフォーマンス計測
    • Ruby本体での採用例
  • リモート勤務3年目
    • 東海オフィスの環境
    • メリット・デメリット・注意していること
    • まつもとさんから
  • まとめ
  • We are hiring!!
続きを読む

イベントトラッキング用gem ahoyで、deviseの複数のユーザモデルを取り扱う

ahoy導入の経緯と課題

ahoyはRailsアプリケーションにアナリティクスツールを組み込むためのgemで、Railsアプリケーション上でユーザ行動ログを取得し、保存することができます。データの保存先としてActiveRecordを選択することができるので、最小構成のインフラでも簡単に導入することができます。また、Railsアプリケーションの一部として動くため、Google Analyticsへの接続を制限している環境のユーザの行動も補足することができるというメリットもあります。

開発中のRailsアプリケーションは認証用のライブラリとしてdeviseを利用しており、お客様と社内のスタッフをテーブル単位で分けています。ahoyは標準では複数のモデルに対応していないため、導入するにあたってこの問題を解決する必要がありました。

GitHub上に、deviseの複数のユーザモデルに対応させたいというIssue( Multiple Devise models · Issue #38 · ankane/ahoy · GitHub )が上がっており、 polymorphic関連で解決する、というgemの作者からの回答があるのですが、その具体的な手続きまでは書かれていません。 今回はその手順をまとめました。

ahoyの導入方法

公式のREADMEか、わかりやすいQiita記事を読んでください。

github.com qiita.com

複数のdeviseのモデルのユーザをトラッキングする設定の手順

ここでは、deviseのユーザモデルが、staff, cutomerの二種類あるとして話を進めます。

まずREADMEのcustom user methodにあるように、コントローラ内でアクセス中のユーザのデータにアクセスするための設定を変更します。

# config/initializers/ahoy.rb
Ahoy.user_method = ->(controller) { current_staff || current_customer }

Ahoy::Visit, Ahoy::Eventのモデルのbelong_toの部分をポリモーフィック関連に置き換えます。

# event.rb
class Ahoy::Event < ApplicationRecord
  include Ahoy::QueryMethods
  self.table_name = 'ahoy_events'
  belongs_to :visit
  belongs_to :user, optional: true, polymorphic: true
end
# visit.rb
class Ahoy::Visit < ApplicationRecord
  self.table_name = 'ahoy_visits'
  has_many :events, class_name: 'Ahoy::Event'
  belongs_to :user, optional: true, polymorphic: true
end

データベースに保存するので、カラムの追加が必要ですね。追加しましょう。

class AddUserTypeToAhoyVisitsAndEvents < ActiveRecord::Migration[5.2]
  def change
    add_column :ahoy_visits, :user_type, :string, after: :visitor_token
    add_column :ahoy_events, :user_type, :string, after: :visit_id
  end
end

また、eventに保存されるデータにカラムを追加する手続きが必要になります。

# config/initializers/ahoy.rb
class Ahoy::Store < Ahoy::DatabaseStore
  def track_event(data)
    data[:user_type] = controller.current_staff ? 'Staff' : 'Customer'
    super(data)
  end
end

以上で完成です。 あとは、好きなページにトラッキングコードを入れることで、複数のユーザモデルに対応した状態でユーザの行動を分析できるようになります。

自己紹介

浜田です。開発に関わるいろんなお仕事とサーバのお守りを担当しています。

「ポストMatz」はいつ、誰が? 2019年2月Matz会ダイジェスト

こんにちは、情報システム部の鈴木です。

弊社では技術顧問: まつもとゆきひろ氏を招いて定期的に勉強会(通称: Matz会)を行なっています。お待たせしました、今回は今年2月開催分のレポートです。

今回のテーマはこちらです。詳しいレポートは「続きを読む」より。

  • Rubyで音楽を奏でる
    • 目指す挙動と実装方針
    • 実装と課題
    • まつもとさんによる補足
  • "xruby syndrome"
    • エンジニアへの提言
    • Pythonコミュニティで起きたこと
    • Ruby長期運用計画
  • まとめ
  • We are hiring!!
続きを読む

リンカーズは「RubyKaigi 2019」にスポンサーとして参加します

f:id:ryota_suzuki_linkers:20190411120411j:plain

おはようございます。情報システム部の鈴木です。

いよいよ今月18日から RubyKaigi 2019 が福岡にて開催されます。リンカーズは Platinum スポンサーとして RubyKaigi 2019 を応援しています!2017年広島開催から、3年連続3回目の協賛になります。

ブース出展

ブースでは弊社社員が皆様のご来場をお待ちしています。またこのようなノベルティも用意しているので、ぜひお気軽に立ち寄って手にとってください。

  • ソースコードの見通しに・デスククリーナー
  • レビュー漏れへの確かな実感・メガネ拭き
  • ビジネスマッチング祈願・ステッカー

f:id:ryota_suzuki_linkers:20190411160118j:plain
リンカーズオリジナル デスククリーナー・メガネ拭き・ステッカー

この他、皆様に楽しんでいただけるちょっとした企画も用意する予定です。詳細は当日をお楽しみに!

メンバーの参加

弊社からメンバー7名が RubyKaigi に参加します。一部は先述の通りブースに常駐している他、セッションの聴講もする予定です。セッションの合間やパーティ会場などでお会いした際はよろしくお願いします。また、代表前田も参加します。リンカーズの事業についてや、経営・起業についてお話したい方もどうぞお越しください!

リンカーズは RubyKaigi に参加するエンジニアも応援しています。社員はイベント当日と前日の移動日は出勤扱いの上、諸経費も会社が負担します。このあたりの制度に興味を持った方、ぜひリンカーズ社員にお声がけください。

Ruby エンジニアにとって最大のイベントを、リンカーズが少しでも盛り上げられたら幸いです。それでは当日楽しみにお待ちしております!

リンカーズは「Rails Developers Meetup 2019」にスポンサーとして参加します

みなさんこんにちは、情報システム部の大河原です。

リンカーズは、3/22金から23土に日本オラクル社様にて開催されるRails Developers Meetup 2019 に1日目のケータリングスポンサーとして参加します!

railsdm.github.io

RailsDMは2017年より継続的に開催されているRuby on Rails開発者が集まる勉強会です。

2018年は計4日間に渡って開催され、いずれも好評を博しました。

今回は、なんとRailsの生みの親・David Heinemeier Hansson(DHH)氏がリモートで参加されるとのこと。

また、登壇者も非常に豪華な顔ぶれとなっており、3トラックになっているのが逆に残念なほどです。体が3つ欲しいですね笑

なお、弊社社員からの登壇者はいませんが、技術顧問の前島真一(@netwillnet)氏が2日目に登壇されます。

テーマは「Clean Test Code, Revised」とのことです。良いテストコードを書いていくため、ぜひご聴講ください!

ところで、これだけの大規模イベントではありますが、オーガナイズされているのは企業ではなく個人の方です。参加者としては本当に頭が下がりますね。

そんなイベントに対するささやかなサポートとして、リンカーズは1日目懇親会にてワインに合う美味しいお肉やチーズを提供します。

どうぞご賞味ください。

また、ノベルティとしてデスククリーナー・メガネ拭き・ステッカーを持っていきますので、見かけたら手にとっていただけると幸いです。

f:id:expajp:20190319125009j:plain

では、当日またお会いしましょう。

「コーディング不要の時代」は来るか 〜 2019年1月度Matz会レポート

こんにちは、情報システム部エンジニアの大河原です!

弊社技術顧問:まつもとゆきひろ氏との勉強会(通称:Matz会)について、11月度、12月度と記事を書いてきました。

linkers.hatenablog.com

linkers.hatenablog.com

今回は1月度のMatz会についてレポートします。年明け一発目、1/9の開催です。

新年のあいさつと新メンバー2名の紹介を行ったあと、いつものように「メンバーがLTを行い、それに対してコメントをいただく」という形式で進めました。

今回のテーマはこちらです。

  • Ruby歴1年の僕が逃げに逃げ続けたProc/lambdaに立ち向かう話
  • システムエンジニアに求められてるスキル

詳しいレポートは「続きを読む」より。

  • Ruby歴1年の僕が逃げに逃げ続けたProc/lambdaに立ち向かう話
    • なぜ書き方が複数ある?
    • Proc/lambdaの使いどころ
  • システムエンジニアに求められてるスキル
    • システムエンジニアとは?
    • プログラミングは必要なくなるか?
  • まとめ
  • We Are Hiring!!
続きを読む

開発チームにスクラムを導入した話

はじめに

リンカーズ株式会社エンジニアの鈴木です。2018年6月からリンカーズで勤務しております。今回は当プロジェクトのタスク管理について、自分が取り組んできたことを紹介します。

Linkers for Bank について

私は入社から一貫して「Linkers for Bank」システムチームに所属しています。これは銀行をターゲットとしたビジネスマッチング業務支援システムで、現在とある地方銀行において導入・運用しています。「金融機関システム」というとレガシーなイメージがありますが、我々はこうした背景ながらクラウドを活用したモダンな開発体制を実現しています。

もくじ

  • はじめに
    • Linkers for Bank について
  • もくじ
  • 最初の状態
    • 課題だった事
  • アナログの時代
    • 過渡期
    • 意識を定着させる
  • デジタルの時代
    • JIRA移行にあたっての追加ルール
  • 導入して変わったこと
    • タスクの見える化
    • 改善への意識
    • 時間管理
  • 今後の課題
    • 差し込みタスクの扱い
    • 計画会議の進め方
  • We're hiring!
続きを読む