サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
災害への備え
patorash.hatenablog.com
うちの会社は期首が9月で、今期で昇進した。世間では退職エントリーとか入社エントリーが多いから、自分は昇進エントリーを書く。(2回目) なお、1回目はこちら。3年前ですね。 patorash.hatenablog.com 課長に昇進した うちの会社ではキャリアとしてマネジメント職と専門職がある。前期までは専門職だったが、今期からはマネジメント職になる。マネジメント職になった経緯は、まぁ正直なところ横滑り的な感じではある。昨年、このポジションにいたカズさんこと id:tech-kazuhisa が退職したことで、傍から見ていた感じではあるが、チームが一気に硬直化してしまったように思えた。カズさんの存在の大きさがよくわかった1年だと感じた。 まぁそんなこんなで日々の雑談タイムや読書会などで彼らの話を聞いていると、色んな不安や不満の話が出てきたりするのだけれど、当時の自分は、違うチームのリーダーだ
ようやくやりたかった社内イベントであるRails ISUCONを開催できたので、そのことについて書いていく。 Rails ISUCONの目的 目的は、主に3つ。 自身の知見をチームメンバーに拡げる(チームメンバーから知見を得る) コミュニケーション 様々な角度からRailsアプリのパフォーマンス改善を学ぶ うちのグループは全てRailsで作られた製品を扱っているので、Railsに特化したISUCONをやった方が効果があるし、製品へのフィードバックもしやすいという目論見がありました。 チーム構成 特に重視していたのは、1番目のチームメート同士での知見を交換することでした。そのため、1人チームや2人チームを作ることはやめました。1人だとコミュニケーションも生まれないし、知見の共有ができません。2人だと1人が一方的に作業をして、残された1人がただただ眺めてるようなことにもなりかねません。そこで、
前回の記事で、社内ISUCONをしたという話を書きました。 patorash.hatenablog.com そのときにベンチマーカーを作るのに、isucandarを使ったので、あとでまた記事を書く!と宣言していたのですが、なかなか書けず…。でも忘れないうちに書く! isucandarとは? isucandarとは、ISUCON用のベンチマーカーフレームワークです。 github.com @catatsuy さんが作ったISUCON9のベンチマーカーに感銘を受けた @rosylilly さんが作成したそうです。 @catatsuyさんがisucandarについて書いたZennの記事があります。 zenn.dev 私も実装前はこの記事読みながらも「わからんな?😇」と思ってましたが、今読むとなんとなくわかるくらいにはなりました(なんとなく、かい!) 私なりの雑な説明 以下、私なりの雑な説明をし
この記事を読んで、SeleniumからCupriteに移行できたらテストがまた速くなるんじゃないか?と思ってここ数日動作検証してるのですが、思った以上にうまくいかないので、一旦移行を諦めようかなという気持ちになっています。 techracho.bpsinc.jp とはいえ、今までやってきたことを何もメモに残さないのも勿体ないので、とりあえずそれらは今後のために残しておこうかなと。 バージョン情報 この記事の執筆時点での私の環境です。開発環境はDockerにしています。 Mac Catalina Ruby 2.7.3 Rails 6.0.3.7 Capybara 3.35.3 Cuprite 0.13 Cupriteとは? CupriteはCapybaraのドライバーで、Chromeを直接操作するCDPプロトコルを使えるFerrumを使ってブラウザを操作します。 cuprite.rubycd
最近、月一の社内勉強会がまったくの不定期開催になっていたので、Teamsの予定で毎月でスケジューリングしておいた。そして、PowerAutomateで1週間前になったら「来週勉強会やでぇ〜」と告知するやつをたった今作った。— パトラッシュ💉💉@リーダー業 (@patorash) 2021年1月5日 まだちゃんと動くか検証できてないですけど、これをやったので、その実装の話を書いておこうと思う。まぁメモです。 PowerAutomateの繰り返しは、しょぼい Teamsの会議の予定は、繰り返しでカスタムを選択すると、毎月第3水曜日に会議を予約することができる。いいですね。 Teamsの予定表は第3水曜日の指定が可能 しかし、PowerAutomateの繰り返しは、それができない…。 PowerAutomateでは、第3水曜日とか指定できない 毎週水曜日とか、隔週水曜日とか3週間毎とかはでき
TLで良書だというのをチラホラと見かけていたのだけれど、結構古い本なので迷っていたのだが、今でも通用しそうな内容っぽいので買って読んでみた。 TLで見かけてた、楽々ERDレッスンを手にいれたので読んでいく。 pic.twitter.com/f7WEl6mHft— パトラッシュ@エキスパート職 (@patorash) 2021年2月1日 感想から書くと、これもまた「UNIXという考え方」と同じで、もっと若いうちに読みたい本だった…😇 この本の内容を知っていれば、データベース設計で悩むことも相当減っていたと思うし、プログラムで苦しむことも減っていたと思う。つまり、この本は「買い」です。かなりお薦めできる。もう読んでいる途中から社内のTeamsでは良書だと言いまくった。めちゃめちゃプッシュしたからか、後輩の何人かも買ってくれたみたいだった😋 ちなみに「UNIXという考え方」の感想はこちら。
先日のOSO2020で、はてなの吉田さん(id:syou6162)がカラムのコメント数をMackerelのサービスメトリックとして登録して可視化したという話をして感銘を受けたので早速rake taskを作ってみた。 なお、先日の記事。 patorash.hatenablog.com 言及されていたのは、スライドのここ。一番下に書いてありますね。 オープンセミナー岡山 これから始めるデータ活用 from syou6162 ところで私はMackerel初心者です 会社ではMackerel使っているし、私自身も一応恩恵は受けているのですが、Herokuを使っているから外形監視くらいなもんで、じゃあどうやって可視化したらええねん?っていうところで、早速家にあるMackerelサーバ監視入門を引っ張り出したわけです。1回は読んだんですよ!なかなか使う機会がないだけで! Mackerel サーバ監視[
オープンセミナー岡山2020は新型コロナウィルスの影響で延期となり、2021年になってしまいましたが、オンライン開催ということになっていました。運営委員会の皆様、ありがとうございます。 oso.connpass.com 今年のテーマは「エンジニアリング x ○○(なんか)」ということで、異業種とのコラボ話のような感じかな?と思っていたのですが、もっとエンジニアリングした話でめっちゃよかったです。まさに、○○(なんか)の部分が様々で、枠にとらわれないセッションの数々でした。 今年はオンライン開催ということもあり、セッションの動画も公開されています。気になる方はセッションの動画を見ながらトゥギャッターを見るのがお薦めです。 togetter.com 講演内容の特徴 今回のオープンセミナーの講演は、全体的に「どう課題と向き合うか」というテーマになっていたかと思います。エンジニアリングで課題を解決
タイトルで全てを語ってしまいましたが、これです。 WSL2でRailsアプリの動作確認をしようとbin/rails sを実行後、 http://localhost:3000 にアクセスしたのですが、何故か表示されず…。pumaも起動していますが、ポートフォワーディングに失敗しているようです。.wslconfigには、LocalhostForwarding=Trueを設定してあるのに…。 ググったところ、close済みのissueにたどり着きました。 github.com このコメントの途中に、「高速スタートアップをオフにしろ」と書いてありました。やり方は以下のサイトにありますが、英語です。 https://www.tenforums.com/tutorials/4189-turn-off-fast-startup-windows-10-a.html 高速スタートアップをオフにする方法 まず
元ネタはこのQiitaの投稿。 qiita.com この投稿のように、UserモデルとArticleモデルが1対多になっていて、ユーザーに紐づいた最新の記事を取得したいこととかはあると思います。私がやってるプロジェクトでも似たようなことがありました。ユーザーに紐づいたデータがバージョン管理されていて、最新のが欲しいとき、とか…。 N+1が起きるコード 以下のようなModelがあったとします。 class User < ApplicationRecord has_many :articles, dependent: :destroy end class Article < ApplicationRecord belongs_to :user end これで最新の記事を取るためにメソッドを定義したら、こうなります。 class User < ApplicationRecord has_many
タイトルと本の見た目から、なんとなく難しそうだからと読んでなかったんじゃないかと思うんだけれど、お薦めの本として紹介されていたので読んでみた。感想としては、もっと若い時に読んでおくべき本だったなぁ~と思った。私、もうオッサンなので…。いや、オッサンだと学びが少ないとかではなくて、こういう考え方を若いうちから取り入れておけば、作ってきたアプリケーションやライブラリにもこの考え方を適用することができただろうから、柔軟なものを作ることができただろうになぁ…というやつです。 そして、この考え方を知っていれば、なぜこのライブラリはこんな作りになっているのか?とか、どうしてシェルだとパイプを使ってゴニョゴニョせにゃならんのか?という理由もわかる。わかると「便利だな」と思うんだけれど、わからないと「なんでこんなに組み合わせなければならないんだ!?」と思ってしまって苦手意識がついてしまうんじゃなかろうか?
ようやくSprocketsからWebpackerに移行したので、そのためにやったことをまとめておきます。 移行前の状態 Railsのバージョンは6.0系 Sprockets4 CoffeeScript Sass Bootstrap3を使用 yarnは使ってる 筆者(私)はECMAScriptに関してはそこまで詳しくなくて、今後習得していきたいと思っているレベル。 方針 「とにかくWebpackerに移行する」ということを念頭に置き、JavaScriptを完璧にモジュール化する等は目指さない。Webpackerで動けばいい。後でリファクタリングしていくから! Webpackerをざっくり理解する Webpackerはwebpackの設定などをほとんど意識することなく、いい感じに使えるようにしてくれるやつです。 webpackをざっくり理解する じゃあwebpackって何?となるかと思いますが
MacでRailsアプリを開発しているとなぜかセグメンテーション違反が起きまくって開発に支障が出てきたので、開発環境を全部Dockerに載せてしまおうと思ってここ2週間くらい取り組んでいます。 とりあえず、CircleCIのテスト以外はちゃんと動くようになったかな?と思えるところまできたので、まとめておきます。 ベストプラクティスに学ぶ ファイル群を公開 Dockerfile Aptfile entrypoint.sh docker-compose.yml railsコンテナとtestコンテナを分けている理由 参考サイトからの学びポイント Dockerのvolumesを使いこなす .dockerignoreを使いこなす コンテナ間のネットワーク指定 PostgreSQL Elasticsearch Redis Memcached Minio MailHog Chrome docker-co
私が担当している製品の機密情報の管理は、Rails 5.1で導入されたEncrypted Secrets(secrets.yml.encを使う方式)を使っていて、5.2になって導入されたCredentials方式の導入は見送っていました。 理由は、5.2のCredentials方式だと、各環境毎の設定が行えなかったからです。そのため、5.2のリリース後にはCredentialsを複数の環境で扱えるようにするためのgemがいくつか出てきました。しかし、そこまでしてCredentialsに移行しても、ある意味レールから外れたカスタマイズをすることになりますし、Encrypted Secretsが非推奨になったわけではなかったので、Encrypted Secretsを使い続けていました。 現在もまだRails 5.2系を使っているのですが、これを6系にバージョンアップするために引っかかりそうなと
うちの会社は期首が9月で、今期で昇進した。世間では退職エントリーとか入社エントリーが多いから、自分は昇進エントリーを書く。 専門職に昇進した 私の勤める会社はキャリアとしてマネジメント職と専門職がある。今回は専門職に昇進した。専門職というキャリアパスは、私が入社した当初は存在せず、役員との面談の際などで「管理職以外のキャリアパスがないと、管理職になれなかった人たちや、プロパーの人達の目指すべきキャリアパスがない。意欲のある人は辞めていくのでは?」と言っていたら、数年前に作られた(私が言ってたからだけではないと思うけど) 専門職の職責 専門職にもランクはあるが、今回は一番下のもの。職責は、 エキスパートとしてのプロダクト開発 技術選定の舵をとる 後輩の育成 その他、幅広く課題解決に取り組む みたいなところで、一般職より範囲が拡がっている。 専門職になるには? マネジメント職は、ポジションが空
ここ最近は並列化による処理速度アップを色々試しています。 Railsプロジェクトのデータに少々不備があることに気づいたので、それを修正するために該当データを抽出しようと思って雑にループを回したら、データ量が多いせいか、全然終了しませんでした。業を煮やした私は、これも並列化してしまおう!と思って並列化の情報を集めることに。 Rubyでの並列処理は、parallelというgemを使うと並列処理がすごく簡単にできました。 github.com parallelのいいところ parallelのいいところは、 並列処理したい対象の配列データを渡すだけでいい map, each, any?, all? などに対応している マルチプロセス、マルチスレッドの両方に対応している というところでしょうか。 簡単な使い方の例 Parallelに対して、配列を渡したら、自動的にCPUの数だけプロセスをフォークして
Rubocopを一応入れているのに、滅多に動かしてなくてあんまり意味を成していなかった。issueにずっとあったCIにRubocopを取り入れるというやつに着手しようと思ってようやく取り組み始めた。 reviewdogを知る CircleCIのワークフローにRubocopのチェックを入れて、自動的にコメントをしてもらいたいなぁと思って調べていたら、reviewdogを知った。 blog.toshimaru.net 自分がやりたかったことはまさにこれだったので、これを参考にすることに。 reviewdogのインストールは本家を参考にした。 github.com バイナリで配布もされているが、goenvでgoを入れているので、go getを使って入れた。 $ go get -u github.com/haya14busa/reviewdog/cmd/reviewdog reviewdogが実行
会社で使っているCircleCIをPerformance Planに移行しました。 きっかけは以下のブログを読んだことでした。 moneyforward.com 弊社でのCIの課題 弊社ではMoney Forwardさんほどの並列数ではないんですが、16コンテナ契約していて、大きいプロジェクトでは8並列、他のプロジェクトでは4並列を基本として、テストしていました。 大きいプロジェクトを16コンテナではなく8コンテナにしたのは、 大きなプロジェクトであってもテストが並列で2つは走るようにしたかった 大きなプロジェクトにコンテナを占有されてしまわないようにするため です。 昔は早くテストを終わらせたいということで16コンテナ全てを割り当てていたのですが、逆にテスト詰まり(CI待ちがどんどん増えていくこと)が発生してしまい、他のプロジェクトのテストが実行されるのが数時間後になることもありましたが
昨日、CircleCIで失敗したテストのファイル一覧を取得するという記事を書きました。 patorash.hatenablog.com 今度はそれを使って、CircleCIで前に落ちたテストを先に検証するワークフローを組みました。 こんな感じです。 CircleCIで再テストを先に行うワークフロー 何故そうしたのか? 以前に落ちたテストはまた落ちる可能性が高い、と感じています。全体テストを流すと結果が出るまで長時間かかりますが、以前に落ちたところだけ流すのは数分で済みます。そして、落ちたらそこでテストは終了するので、時間の節約ができる!と思ったわけです。 もし再テストを通過したら全体テストが行われます。そうなると、再テストの後に全体テストとなるので、その分時間はかかります。 CircleCIの設定を行なう ワークフローを組む まずは先にワークフローの部分を書いていきます。 version:
2019-01-25 追記:CircleCI 2.1を使うとデフォルトで共通化ができるようになっています。 patorash.hatenablog.com 以下より、投稿時の原文です。 私が担当している製品では、RailsのテストをCircleCIで4並列で動かしているのだけれど、これがいちいち各コンテナ毎にコードのチェックアウト、ライブラリのインストールをしているのは無駄じゃないかなー?と常々思っていました。これが、workflowを使ったら解決できそうだとわかったので、やってみることにしました。 目標を定義する 作業前は、以下のようになっていました。 コードのチェックアウト・・・各コンテナ毎に実行 bundle install・・・各コンテナ毎に実行 yarn install・・・各コンテナ毎に実行 rspec・・・各コンテナ毎に実行 作業後は、このようにしたい。 コードのチェックアウ
Macではshellにfishを使っているのですが、fishをさらに便利にするためにoh-my-fishを使っていました。ansibleでもoh-my-fishを入れるようにしていたのですが、ansibleの記事を公開後に、ひむひむ氏からfishermanイイよーというアドバイスをもらいました。 話逸れるけどfishermanおすすめ。omfのpluginも使える。— えいる (@eielh) 2017年9月17日 README 日本語訳されてるので参照ください。 https://t.co/y1ycKFdSlm— えいる (@eielh) 2017年9月18日 そういう面もあるけど、そこは個人的にはおまけかなー。oh-my-fishがもってる利点は全部もってて改善されてるって感じ。— えいる (@eielh) 2017年9月18日 fisherコマンドに限っていえば、 autoload f
Ruby on Railsを開発したDHHの会社のBasecampがStimulusというJSライブラリを発表したという話があり、気になっていたので試してみました。 Stimulusとは? Stimulusはいわゆるフロントエンド系のJSライブラリなのですが、JSでゴリゴリにHTMLを操作する系ではなく、あくまでHTMLを拡張するためのものという位置づけのようです。なんといってもTurbolinksとの親和性を重視したものになっているので、Railsエンジニアでフロント系のコーディングをJS側に寄せすぎることに違和感を感じていた人たちにとってはとてもいいものなんじゃないか?という予感がします。 stimulusjs.org Railsで使うには? 2018-03-05現在、Rails5.1.5にて新たにRailsアプリケーションを作成した場合には、rails newの段階でwebpackで
先日、次男が産まれました。産まれてからお知らせしようと思っていましたので、ご報告します。 今回私は、株式会社リゾームで男性初の育児休暇を取得しました。子供が2人になり、妻一人で同時に2歳児と新生児の相手は難しいだろうということで、育児休暇を取りたいという相談を会社でしてみたところ、OKをいただけました。 自分の中では、自宅でのリモートワークも検討したのですが、新生児が産まれたばかりの慌ただしい中でフルタイムのリモートワークは厳しいんじゃないかと考えました。そして、会社の制度として育児休暇があるので、男性でも育児休暇を取っても大丈夫ということを確認したかったというのもあります。総務の方や開発部の部長・リーダーと相談しながら、できる範囲の仕事量に抑えていけばいいんじゃないか?ということになり、育児休暇に入ることになりました。 育児休暇といっても、完全に1年間休みというわけではないようにしました
この記事はDart Advent Calendar 2017の2日目の記事です。 qiita.com Dartは個人的に数年前からDart本を読んでやってみようと思って頓挫、を繰り返していました。 ただ、2016年にGoogleがAdwordsとAdsenseにDartを使っているという記事を読んだり、Sassの実装をRubyからDartにするという記事を見かけてから、Dartはやっぱりいい言語なんじゃないか?と思うようになりました。今年から本腰を入れてやってみようと思ってこのブログにもいろいろと記事を書いていってます。とはいえ、まだアプリは作っていません…。 Dartのよいところは、 非同期プログラミングに特化 基本的にはシンプル サーバサイドもクライアントサイドもいける という点だと思います。クライアントサイドはAngularDart以外はほぼ選択の余地がありませんが、Googleがチ
CircleCI 2.0でだいぶテストが速くなったものの、1回のテストが20分くらいかかっているので、もっと速くしたいなぁと思っていました。お金を払えば並列化は簡単にできるのですが、CircleCIの並列化にも今のところ上限があり、1度のテストで16コンテナまでしか使えません(例え20コンテナ契約していたとしても)。しかし、CircleCIの1コンテナには、2CPU 4GBのメモリがあります(デフォルトでは)。 そこで目をつけたのが、gem parallel_testsです。 parallel_testsとは? github.com parallel_testsは、マシンにあるCPUの数だけテストのプロセスを起動して並列実行するgemです。Hyper Threadingが有効な場合は、論理コア数で数えるので、CPU数*2のプロセスが起動することになります。以前はCIを使わずローカル環境でr
会社で新しいMacBookProが支給されたので、開発環境のセットアップを行いました。その際に、何を入れたらいいかなどをチェックするのが大変だし、毎度毎度手間がかかっても面倒です。やることはだいたい決まっているのに、セットアップに1日か2日費やすことになるのは勿体ないなと思いました。また、OSを更新するときにはクリーンインストールしたいと思いまして(High Sierraも出るし)、Macの環境構築の自動化に乗り出すことを決意しました。 これができたら、他のメンバーの環境構築も自動化できるし、githubに構築スクリプトをアップしといたらPull Reqがくるかもしれないしなぁという算段です。 開発環境の自動化は、Ansibleを使うことにしました。Ansibleはサーバの構築の自動化ツールとしてよく使われていますが、Macなどの環境構築でもよく使われていて実績がインターネット上にたくさん
CloudGarage Release Tourに参加してからなんかやってみようと考えていたところで、本でDockerの勉強をしていたら、Dokkuの存在を知りました。 Dokkuとは? Dokkuとは、自分でPaaSを作ることができるツールです。Dockerコンテナべースで組める他、Herokuのようにgit pushでのデプロイに対応しています。また、Herokuのbuildpackを使ったコンテナ作成が行われるので、動作環境としては本当にHerokuに近いんじゃないかなと思います。 Dokku - The smallest PaaS implementation you've ever seen 動作環境 UbuntuやDebianがオススメで、メモリは最低でも1GB以上必要です。CloudGarageのお試しプランでは、メモリが1GBなのでギリギリ試すことができました。 やってみる
このページを最初にブックマークしてみませんか?
『patorashのブログ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く