アトラシエの開発ブログ

株式会社アトラシエのブログです

rails Gem入れすぎ問題について。負債化するGemとは

こんにちは。tkotです。今回はrailsのgemについて。 オススメのgemについて紹介する記事は頻繁に取り上げられるのですが、その反対に使うと弊害が出てしまうgemや、gemを多用することのデメリットについて解説されているものはなかなか無いように思います。 …

開発者・ウェブ関係者必携。入れておきたいchromeアドオン

Chromeアドオンで開発を効率化したい こんにちは、tkotです。私は普段のブラウジングや開発でMacのGoogle Chromeを使っています。最近はSafariのほうが電源の持ちが良いと聞き試していたんですが、いつの間にか戻っていました。 最近はクラッシュしたり妙に…

Ruby初心者にオススメ。Array・Hashの練習問題

tkotです。 弊社ではRuby・Railsを覚えたい初心者の方向けに学習用のプログラムを用意しています。基本的にはRailsで動くものを作っていく中で細かい文法やプログラミングのルールを覚えていこうという方針でやっています。 Railsはすぐ動くものができるので…

Railsではてな記法っぽい独自の記法を実装する

弊社のリフォームメディア、ミライエはRailsで開発しています。 miraie.me システム的にはCMSを実装しているのですが、データ的にはmarkdownとHTMLを混在させて保存しています。これでも回っているのですが、 引用, リンク などは一定のフォーマットで入れた…

シンプルなデコレータで記事内のページングを実装する

シンプルなデコレータで記事内のページングを実装する ブログのような記事の内容をページングしたいとき、どうやって実装するか?というお話です。 ページングといえば検索結果のページングと、東洋経済のようなサイト(こういうやつ http://toyokeizai.net/a…

railsで煩雑なリダイレクトの管理

ウェブサービスを運用していると設計の変更や記事・ページの削除が頻繁にあります。 例えば今まで:author_name/articles/:idというURLで提供していたページがあったとして、これをシンプルにarticles/:idで提供するとします。 このとき何も考えずにURLを変更…

nasneでiMacをテレビ化する

nasneとは? nasneはSonyから出ているレコーダー兼ストレージです。wifiのネットワークにつなげば、パソコンやスマホから録画予約ができてスマートフォンで再生できます。 ↓これが実物 nasneはmacで再生できなかった 以前からMacで再生したいなと思っていた…

railsの画像最適化でpietを使う

前回の記事でレスポンシブの画像は多少妥協しても大きめのものを使うしかまともな解決方法がないという話をしました。 blog.attracie.com ところで、弊社の運営しているミライエはリフォームの施工を解説しているのですが、写真が多いものだと20~30枚くらい1…

ベンチャーにとってのLTV(顧客生涯価値)

顧客生涯価値とは? 最近顧客生涯価値(Life Time Value = LTV)について考えることがあったので、その内容をまとめてみます。 LTVとは顧客一人を獲得したときにどれだけ企業にとって価値があるかを、長期に渡って考える一つの考え方です。 例えば新聞を購読す…

responsiveなサイトの画像サイズ問題は無理やり頑張るより妥協したほうが良さそう

ミライエは工数の問題やSEOの観点からレスポンシブレイアウトを採用しています。 miraie.me レスポンシブレイアウトがSEO上良いという点はこちらを御覧ください。 www.suzukikenichi.com ところがこの記事で言及されている通り、基本的にPCと同じhtmlやasset…

起業する場所の選び方

弊社は2014年4月設立ですが、2014年2月に私が港区赤坂に引っ越し、2ヶ月後に自宅兼事務所という形で自宅住所を使って会社登記しました。 こういうように、起業する場合でも自宅を事務所にしたり、バーチャルオフィスを使うことで、いきなり事務所を借りたり…

Railsであまり重要でないcolumnをスキーマレスに設定したい

Railsではserializeをうまく使えばスキーマレスにシンプルなデータを定義することができます。 これをもう少し通常のカラムライクに使用したかったので、gemを作成しました。 github.com 使い方ですが、まずはRailsのモデルを作成します。このとき適当でいい…

bootstrapでresponsiveのgrid systemだけ使いたい

bootstrapでは.containerでセンタリングし.rowでマイナスマージンをセット, .col-sm-3や.col-xs-6等でデバイス幅に応じたレスポンシブレイアウトを可能にする グリッドシステム を提供しています。 この機能は非常に便利です。他にグリッドシステムを提供し…

ERROR Rack::Multipart::MultipartPartLimitError: Too many open files - Maximum file multiparts in content reached

Rails4.2がリリースされましたね。 目玉機能はActiveJobということですが、これは実態はSidekiqやresqueのアダプタということで、本質的には新機能という感じではないですね。 AdequateRecordはすごそうですね。要するに内部でもろもろをキャッシュしてうま…

default_scopeよりaround_actionとscopingを使おう

default_scope is evil は浸透してきたが... qiita.com 最近では Railsでdefault_scope使うのはやめよう! という意見が強くなりましたね。 default_scopeは default_scope -> { where(removed: false) } こんなふうに論理削除を実装するときに便利です。 し…

Railsでfull_messagesを加工したい

基本的にRailsのvalidationは class Blog < AR::Base validates :title, presence: true validate :title_or_content_needed end のようなとき、@blog.errors.full_messagesにはattribute名 + エラー本文に加工されます。 ところで、title_or_content_needed…

Railsでbase64エンコードされた画像を使う方法

例えば必須の入力フォームの左側に小さい※を画像で出したい時、画像を使ったほうが楽なケースがあります。ただ、小さい画像でも画像数が増えてしまうと当然Webサーバのリクエスト頻度が増えるので、このような画像はbase64エンコードした上でcssに埋め込みた…

定番 スタートアップとは何か・スタートアップを知るための本

ビジネスモデル・ジェネレーション ビジネスモデル・ジェネレーション ビジネスモデル設計書posted with amazlet at 14.12.12翔泳社 (2013-10-03)売り上げランキング: 12,693Amazon.co.jpで詳細を見る ビジネスモデルの構造をパートナーや顧客セグメントとい…

社内共有ツールのまとめ

t-kot です。社内共有ツールは多くの企業でも使われていると思います。一般に社内の重要な情報が特定の人にしか知られていない場合、その人が退職するとフローが回らなくなるなどのリスクがあるので暗黙知は減らすべきとされています。 弊社ではQiita team …

スマホネイティブ時代のログインUXを考える

最近の若い世代はパスワードを打ち込むことに全く慣れていなくて、facebookなんかのパスワードも覚えてないらしい。 というのは、スマホならアプリは常時ログイン状態だし、うまく作りこんであるサービスなら別アプリでログインする際もfacebookアプリが一度…

Google Cloud Vision APIを使ってみる

qiita.com この記事が随分バズりましたが、去年後半にGoogleが画像認識APIを公開しました。 画像認識APIにはいくつか種類があって、安全な画像か(アダルトや暴力が含まれないか)を判定するAPI、画像に何が写っているか判定するAPI、画像中の文字列を解析する…

gem使わなくても簡単にできるrailsのtips

それgem使わなくてもできるよまとめ gemは便利なのですが闇雲に入れるべきものでもありません。とくに用途が限られていて、わざわざgemを使うまでもないことや使用目的以上にgemが巨大な場合は簡単に自分で代替物を作ったほうがメンテナンスやコントロールが…

carrierwaveで画像フォーマットを複数持つ方法

carrierwaveはサンプルを読む限りでは保存形式をjpegとかpngとかに決め打って、versionではリサイズしかしないのが一般的な使い方のようです。 しかしこれだと「ネイティブアプリではwebp形式で配信し、ブラウザにはjpeg形式で配信したい」というようなユー…

sidekiqを使用する際に注意したい覚え書き

Railsで非同期処理を行う際にデファクトになりつつあるSidekiqですが、実際の運用ノウハウや少し踏み込んだトラブルシューティングは意外とまだウェブ上にリソースが不足しているという印象があります。そこでいくつか、基本的なことから少し踏み込んだ話ま…

UICollectionViewのHeaderをxibから出し分ける

UICollectionView vs UITableView UITableViewのtableHeaderViewのように、UICollectionViewの上端にheaderを入れたい時、collectionView:viewForSupplementaryElementOfKind:atIndexPath:というメソッドでsectionの先頭にヘッダーを追加すると、UITableView…

rackアプリケーションでリビジョンを知らせてくれるrack-git-revision

動作中のRailsアプリケーションのバージョンを確認するためのrack middlewareとしてrack-git-revision というgemを作成しました。 何が嬉しいのか 本番環境にコードをデプロイしたときにそれが正しく反映されているのか、わかりづらいことが意外とあります。…

google compute engineでSSLを有効化するまで[Rapid SSL]

HTTPSが必要になったので、SSL証明書の購入、その有効化までをやってみました。 SSL証明書の購入 SSL証明書はRapidSSLとかGlobalSignのような大手がその発行元になるのですが、購入自体はそれ以外の代理店からもできて、むしろ代理店経由のほうが一般的に安…

NSObjectを継承した独自クラスをNSUserDefaultsに保存する[Swift]

iPhoneアプリで手軽にローカルにデータを保存する際にNSUserDefaultsが重宝します。 ただ、通常の方法だと単純なデータ(文字列、Dictionaryなど)を格納することはできるのですが、NSObjectを継承して作ったような独自クラスの保存はできません。 NSUserDefau…

tumblrをやめてはてなブログに開発ブログを移行する理由

評判が良かったtumblrを使って技術ブログをしばらく書いてみましたが、あまりにストレスが多かったのではてなブログに移行しました。 以下、tumblrで駄目だった点です。 1. 編集画面が小さい そもそもtwitter, instagramとブログを合わせたようなニュアンス…

大塚家具の中期経営計画を読んでみる

大塚家具のお家騒動が話題です。一般に創業時の成功体験に固執する父と、一橋大卒でエリートコースを辿りビジネスモデルの転換を図る長女という構図になっており、世間の評判では長女有利なようです。 どちらかといえば私も長女の久美子さんを支持したい気持…