Kaigi on Rails 2023 での発表資料です。 https://kaigionrails.org/2023/talks/zuckey/
はじめに 僕はフィヨルドブートキャンプでメンターをやっています。 その一環として生徒さんが書いたRubyのコードをレビューすることもよくあります。 そんなとき「そこはこんなメソッドが使えますよ」「こう書いた方がシンプルですよ」みたいなコメントを入れると、「なんでそんなにたくさんメソッドを知ってるんですか?」「どうしたら豊富な知識を身につけられるんですか?」という返事が返ってくることがあります。 このエントリではその質問に対する回答をあれこれ書いてみようと思います。 【もくじ】 はじめに 前提として 仕事で毎日コードを書いてるから(コードを書いてる時間が長いから) とことんリファクタリングする リファクタリングに欠かせない、テストコードとgit コードレビューしてもらう / コードレビューする モブプロやペアプロをする 人に教える コラム:自分で自分好みの勉強会を主催してみる 情報をインプッ
概要: Puma 5は当プロジェクトの大きなメジャーリリースであり、実験的な新パフォーマンス機能がいくつも導入されたほか、多数のバグ修正や機能追加も行われました。その中でも最も重要な目玉機能についていくつかお話しいたします(1839 word/7分)。 Puma 5(コードネーム Spoony Bard1)が本日リリースされました(私の誕生日です!)。このリリースにはさまざまなものが盛り込まれていますので、Pumeユーザーの皆さまが自信を持ってアップグレードできるよう、Pumaのさまざまな機能や変更点についてお話しいたします。 ⚓ MRI + クラスタモードでの実験的パフォーマンス機能 今回のリリースの見出しを飾るのはたぶんこれでしょう。メモリ使用量を削減する機能が2つと、レイテンシを削減する機能が1つ加えられました。 Puma 5には以下の3つの実験的パフォーマンス向上機能が含まれていま
※本記事は筆者RyotaKが英語で執筆した記事を、弊社セキュリティエンジニアkoyuriが日本語に翻訳したものになります。 はじめに こんにちは、Flatt SecurityでセキュリティエンジニアをしているRyotaK( @ryotkak )です。 先日、特定の条件を満たした場合に攻撃者がWindows上でコマンドインジェクションを実行できる、いくつかのプログラミング言語に対する複数の脆弱性を報告しました。 本日(2024/04/09(訳者注: これは英語版記事の公開日です))、影響を受けるベンダーがこれらの脆弱性に関するアドバイザリーを公表しました。 その影響は限定的なもののCVSSスコアは非常に高く、混乱が予想されるため、脆弱性に関する詳細を本記事にまとめます。 はじめに TL;DR CVSSスコア 技術詳解 根本原因 CreateProcessのラッパー cmd.exeのパース規則
今年もRubyKaigiが始まりましたね!noteはrubyスポンサーとして協賛しています。三重の会場にきている方は、ぜひnoteのブースにも足を運びください。 さて、noteはRuby on Railsを用いたwebサービスとして2014年にリリースされました。現在でも継続してRailsのコードベースを利用しています。 しかし、多くの機能がリリースされ、開発者も増えたため、モノリスの巨大化が進んでおり、開発効率に影響が出始めていました。 今回はそれらの問題を解消するために、noteが継続的に取り組んでいる・取り組んできたバックエンドの改善プロセスについて説明していきます。 モジュールでサービスを構成するモノリスは大きくなるとメンテナンスが難しくなります。Railsは、MVCの各層に全てのドメインがフラットに並び、レイヤごと・レイヤ間の結合度が高くなる設計思想で、巨大モノリス化への対処が難
※この記事は、2022 Speee Advent Calendar11日目の記事です。 昨日の記事はこちら tech.speee.jp こんにちは、DX事業本部エンジニアのさとーる(@satotoru2000)です。 私は今年の6月から「イエウール」というプロダクトのSEOコンテンツ開発チームで開発をしています。今回はその中でやったことをまとめながら、 モノリシックRailsアプリの一部のドメイン領域を担当する状況下で、自信をもって変更できる領域をどうやって広げたか? という話をしようと思います。 当初のイエウールの課題 イエウールは、アーキテクチャ的にはいわゆる一般的なモノリシックRailsアプリです。下の図のように、一つのRailsアプリケーションにほぼ全ての必要な機能が乗っているような状態です。 イエウールcoreに乗っているものたち また、サービスとしてもそれなりに歴史があるプロダ
uiu です。ハローでは普段バックエンド開発をメインに担当していますが、創業以来片手間でインフラも担当しています。 ハローでは、少数精鋭のメンバーの意識をプロダクト開発に集中するため、インフラ面では Cloud Run などマネージドなサービスを最大限に活用しています。 今回は、久しぶりにインフラに意識の一部を捧げ、いくつかの眠れない夜を過ごす機会があったので、インフラ面の話について紹介しようと思います。 スタートアップと PostgreSQL AutoReserve はサービス立ち上げ以来、DB は PostgreSQL、APPサーバーは Ruby on Rails のバックエンド構成で運用してきています。 特に PostgreSQL は立ち上げ以来安心して使い続けられている技術要素です。サービス運用から(ある規模までの)分析まで PostgreSQL だけで回せる点は、少人数でプロダク
ここ数年、色んな人に「パーフェクト Ruby on Railsの改訂版まだですか」と言われて申し訳ない気持ちでいっぱいでした。が、ついに改訂版が発売されることになりました!もちろん最新のRailsである6.0に対応しています。 発売日は7月25日ですが、先行して発売している書店もあるそうです。 パーフェクトRuby on Rails 【増補改訂版】:書籍案内|技術評論社 ブログで振り返ると、第1版を書いたのは6年前だったようです。6年前といえばRailsは4.1がリリースされた頃で、フロントエンドはCoffeeScriptを書いてSprocketsでコンパイル、デプロイはCapistranoを使うのが主流だったような気がします。6年でだいぶRailsによる開発の進め方が変わりましたね。このあたりはもちろん第2版で更新されて、WebpackerやDockerに置き換わっています。 改訂2版の
はじめに こんにちは。 mybest でBackendエンジニアをしている rince です。 現在、弊社ではRails6.1から7.0へのアップグレードを進めています。 → 2023/3/2にRails7.0にアップグレード完了しました! アップグレードを進める中で新たに追加された便利なメソッドを使用する機会があったので、今回はそんなRailsの最新便利メソッドをまとめました。 また、Rails7.0だけでなく、6.0や6.1で追加されたメソッドの中にもまだ割と知られていない便利なメソッドがあったりするので、それらについても合わせてご紹介します。 よりシンプルにわかりやすくコードを書けるメソッドがたくさん追加されていますので、ぜひ読んでみていただいて、皆さんの開発の手助けになれば嬉しいです。 ActiveRecord destroy_by / delete_by (6.0〜) 特定条件の
ほぼ独学・未経験者がモダンな技術でポートフォリオを作ってみた【Rails / Nuxt.js / Docker / AWS / Terraform / CircleCI】RailsAWSCircleCITerraformNuxt はじめに こんにちは! akiと申します! 当記事はほぼ独学・未経験者がモダンな技術でポートフォリオ(以下PF)を作ってみたので、ご紹介させて頂きたいと思います。 昨今、未経験者がモダンな技術を使用して作成した、PFの作成記事も多く存在するので、何番煎じかにはなってしまいますが、この記事も同じ初学者の方の参考になれば幸いです。 自己紹介 私は22歳・高卒で、現在(2021年3月時点)も工場で製造の仕事を続けております。 そんな私ですが「Webエンジニア」という職種に興味を持ち、2020年4月よりプログラミング学習を開始しました。 今回紹介するPFの作成期間は約3ヶ
ファイルの読み書きをマルチスレッドで並列に行うための仕組みを、各種プログラミング言語(C++、C、Java、Ruby、Python)で利用できるようにライブラリを整備した。メモリマップI/O、通常I/O、ダイレクトI/Oを同じインターフェイスで利用できる。Tkrzw-0.9.38からこの機能が利用できる。メモリマップI/Oと通常I/Oは全ての処理系で、ダイレクトI/OはLinuxとMacとWindowsで利用できる。 データベースライブラリTkrzwはマルチスレッド環境での並列処理性能を重視して開発しているが、そこで利用しているファイル層の機能を直接利用できるようにAPIを整備した。データベースとしてではなく、単なるフラットなファイルとして利用するためのAPIである。テキストにもバイナリにも利用できる。 C++ API C API Java API Python API Ruby API
wkhtmltopdfというライブラリは、HTMLからPDFを生成してくれるライブラリです。Rubyからだとwicked_pdfや pdfkit 経由で使われることが多いです。 さてそんなwkhtmltopdfですが、GitHubリポジトリ を見るとわかるようにアーカイブされてしまっています。公式ページ に経緯が書いてありますが、要約するとwkhtmltopdfが依存しているQtWebkitのメンテが止まったのが原因でメンテが続けられなくなったということのようです。 wkhtmltopdfが参照しているQtWebkitはかなり古いものなので、モダンなブラウザでの描画と差分が出たり、脆弱性を付かれたりする可能性がありそう。なのでなにか別のやり方に乗り換えたい。 選択肢を考えてみる 乗り換え先は具体的に何がいいの、というと僕も自信を持ってこれだ!という解を持っていないのですが、headless
昨今のフロントエンドトレンドを鑑みてフロントエンドの技術構成を考えると今はどんな選択肢が主流でしょう? それぞれ並列なものではないですが、React? Vue? Next? Nuxt?そんなワードがきっと頭に浮かぶでしょう。 今の時代、jQueryでゴリゴリUIを記述するとなんだか白い目でみられる。 そう、令和とはそういう時代です。 界隈の最先端おじさんをみると、build processがあるのは当然で、HTML/CSSはjsが吐き出すもので、それが最大限正しいように語られています。 確かにExising Domのアプローチで界隈から評価されてるライブラリはなく、さほどいい選択肢には見えません。(個人の主観) ではそれらのアプローチの何がそんなにいいんでしょう? 過去から現在まで我々は何に苦心して、それらはそれをどう解決してくれたのでしょう? 雑に紐解いていきましょう。(今回はUI構築の
今年で30歳、社会人9年目、在米5年目になった。今年は 趣味でRJITを作り、仕事でYJITを超高速化した 初めて論文を国際会議に投稿し、採択された 子供とプリスクールに行き始めた という感じの一年だった。 仕事 大変ありがたいことに、自分が今一番興味のある仕事であるYJITの高速化に集中できた一年だった。 いろいろやったが、代表作は以下の三つかなと思う。 スタックオペランドのレジスタアロケータ 最適化未対応なメソッド呼び出しのフォールバック 例外ハンドラのコンパイル どれもベンチマークがかなり速くなった。 特に二つ目と三つ目は、自分で発案してかつ主に僕が重要性を訴えていた奴で、 それらで大きな成果が出たときはかなり達成感があった。 単独のPRでRailsベンチが7%速くなった時はこりゃ昇給するわと思ったが、実際めちゃくちゃ昇給した。 ベンチマークも速くしている一方、僕は本番アプリの最適化
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Performance impact of the memoization idiom on modern Ruby | Rails at Scale 原文公開日: 2024/02/14 原著者: Jean Boussier(byroot) Ruby 3.2における主要な内部変更のひとつに、オブジェクトシェイプ(object shape)の導入があります。 本記事では、オブジェクトシェイプが導入された理由、仕組み、制限事項について解説します。 🔗 オブジェクトのインスタンス変数はどのように保存されるのか Rubyは非常に動的な言語なので、インスタンス変数へのアクセスという単純な操作でも多くの作業を伴います。 Rubyオブジェクトは、ほとんどの場合インスタンス変数を「参照の配列」に保存します。 たとえば、インスタンス変数を2個持つ
いわゆる退職エントリです。(遅) ということで最終出社キメてきました🙏フォトブックが特に嬉しすぎる😂😂😂色紙、前チームメンバーのメッセージが適当すぎて、ほんとそういうところやぞ!!!(満面の笑み)というお気持ち😂😂😂 pic.twitter.com/NOStaZmV1c— ぷぽ (@pupupopo88) 2019年10月18日 高円寺のとあるIT企業に総合職で入社、気づけば7年7ヶ月と在籍していました。この業界からすると、長く務めた方かなと思います。 まともに自己PRもできず、文系未経験だったのにも関わらず、エンジニアとしてここまで成長させてもらったことは大変感謝しています。 社内向けエントリ(?)をがっつり書いたので「もういいか」とも思ってたのですが、ここ最近の某社のエントリに若干触発されてしまいました。あと、周りに「まだですか?」と煽られる。(人のせい) 社内向けのでも
こんにちは. メディアサービス開発部 Webアプリケーション開発課の しののめ(佐々木) です. 今年の4月にブックウォーカーへバックエンドエンジニアとして中途入社し,この10月で半年になりました. 入社の経緯から半年仕事をしてみての状況と働いてみて思ったことを書いていこうと思います. 転職活動を考えている/している方に少しでもブックウォーカーでの仕事や環境についてイメージを持っていただけたら幸いです. 入社の経緯から現在まで 入社の経緯 オンボーディング期間 チームへ配属されてのOJT 入社して半年経ってみて 技術や環境について思ったこと Ruby / Ruby on Rails CI/CD 楽をするために苦労をする 技術への好奇心 まとめ カジュアル面談してみませんか? 入社の経緯から現在まで 入社の経緯 これまではWebベンチャーやSESでAWSを利用したインフラの設計構築を中心にS
One of the longest running schisms in programming is that of static vs dynamic typing. I've heard a million arguments from both sides throughout my entire career, but seen very few of them ever convinced anyone of anything. As rationalizations masquerading as reason rarely do in matters of faith. The rider will always justify the way of the elephant. That's not to say there aren't people who've sw
この記事は ANDPAD Advent Calendar 2022 の 9日目の記事です。 こんにちは柴田です。 Ruby のフルタイムコミッタとして活動を開始した 11/7 から 12/1 までに行った Ruby の開発についてご紹介します。 毎日多くの時間を Ruby に費やす事ができるようになり、最初に手をつけたのはつぎはぎの時間では集中して解決まで持っていく事が難しかった ruby-lang.org の裏側にあるサーバー群のリプレイスです。 今回は複数のサーバーのうち、neon と呼ばれる debian で稼働し続けていたメールサーバーを別の何かしらの SaaS またはクラウド環境へ同等の機能を有したまま移設を行う部分を担当しました。この neon というサーバーは私が Ruby コミッタになった10年ほど前から NaCl の shugo さんが管理する Xen 環境で稼働を続けて
以前こんな記事を書きまして、こちらではいわゆる Rails とかである Factory Bot みたいな感覚で使えるものが欲しいなと思い作りました。 ただ、実際にこれを使ってテストを書き始めてみたものの、すぐにまだ足りないものを見つけました。 それは relation を持つもののデータを作るのがめんどくさい default のデータを書くのがめんどくさい の2点です。これらが解ければユニットテストのデータ準備周りで困ることはなさそうだと思い、ソリューションを考えてきたのでご紹介します! relation を持つもののデータを作るのがめんどくさい まずこちらですが、relation の持ち方については次の二つがあるのでそれぞれ個別に考えます。 foreign key を持っているパターン 中間テーブルで紐づけているパターン foreign key を持っているパターン こちらに関しては P
すべてのRubyKaigiの運営に携わる。Señor RubyKaigi Organizer。Asakusa.rbメンバー。主な訳書に『研鑽Rubyプログラミング』『なるほどUnixプロセス』『Rubyのしくみ』『ユニコーン企業のひみつ』『Clean Agile』『アジャイルサムライ』『アジャイルな見積りと計画づくり』など。好きなメソッドはObject#extend。
下記の記事を見て、PKにUUIDを使った際に内部的にどうなっているのかを確認してみました kccoder.com 比較対象として、PKにULIDを使った場合も調べてみました。 github.com ULIDはUUIDと互換性がある、ソート可能な識別子です。 MySQLのバージョン % mysql --version mysql Ver 8.0.19 for osx10.14 on x86_64 (Homebrew) スキーマ mysql> SHOW CREATE TABLE innodb_auto_increment\G *************************** 1. row *************************** Table: innodb_auto_increment Create Table: CREATE TABLE `innodb_auto_incr
Test which reminded me why I don't really like RSpec | Arkency Blog (日本語訳:Rails: RSpecが好きでないことを思い出したテスト(翻訳)|TechRacho by BPS株式会社) を見ての感想。 元のコードのイマイチなところは 4 つあって、 params を before で書き換えている *1 it "will succeed" の文言 it { is_expected.to be_success } と expect(result.success?).to eq(true) が混ざっている let が不思議な順序で連発されていて事前条件を読み解けない すべて、これによって何をテストしているのかが分かりづらくなっているという問題を引き起こす。 params を before で書き換えている let(:pa
こんにちは、ウォンテッドリー株式会社でインフラエンジニアをやっている @fohte です。 筆者はウォンテッドリーに join して 1 年が経過しようとしており、ようやくウォンテッドリーが採用しているアーキテクチャについて全貌が掴めてきました。そこで改めてウォンテッドリーの技術スタックを考え直してみると、ウォンテッドリーのバックエンド領域において利用している言語はなぜ採用されているのかが気になりました。今回はそれを読み解くべく、過去から現在までに利用されている言語の比率から、その背景と歴史を追っていきます。 ウォンテッドリーで採用している言語とアーキテクチャの歴史まずはじめに、ウォンテッドリーでは下図の技術およびアーキテクチャを選定しています。 (参考: 技術とアーキテクチャ - Wantedly Engineering Handbook) 本記事では、この図での "The System
Rubyをはじめとする「動的型付け」のプログラミング言語は、ソースコード中に型に関する記述が陽に出てこないことが特徴で、プログラムの実行前に(静的に)型検査をすることはありません。しかし、このようなプログラミング言語においても、大規模な開発における品質の向上や開発体験の改善、実行の高速化のために、静的な解析を活用しようという試みは多くなされてきました。この記事では、動的型付けの言語のための型検査の歴史を簡単に振り返って、現在私が開発しているRuby向けの型検査器Steepとその基盤となっている型記述言語RBSについて説明し、今後の展望を議論します。 著者:松本宗太郎さん(@soutaro) Rubyコミッター。大学院でRubyプログラムの型検査の研究に取り組み、修了後はスタートアップでWebアプリケーションの開発に従事。2017年から型検査ツールSteepの開発を始め、2019年からはRu
長らく改訂版をお待たせしていたパーフェクトRailsがついに新しくなります。 私は、やはり人間は締切が近くならないと働かない、という極めて重要な事実を改めて学ぶことができたのが良かったと思っています。 そろそろ献本させていただいた本は届き始めている様で、ブログやTwitter等で紹介していただけて嬉しい限りです。 全体の解説や紹介はそちらに任せるとして、私は今回担当していた箇所が大きく変わったので、それについての感想や裏話を書こうかと思います。 前回担当していた箇所 前回は、基本的に終盤のRailsの基本機能を越えたアプリケーションを作る時に助けになる章を担当していました。 元々は、そういう仕事としてRailsアプリケーションを書く上で気にしておきたいこと、というのが書かれた本が余り無く、何とかそういう本を作りたいという思いがあったので、あの辺りの章を担当させてもらいました。 正解の無い部
要は以下の記事の繰り返しなのだが。 k0kubun.hatenablog.com Kaigi on Rails _2022_ new というイベントの LT で、メソッド定義を探ろうという話があった。 speakerdeck.com Rails のソースをシュッと眺めに行くという、非常に尊い良い発表でした。 Object のことは Object に聞け、は Ruby の非常に面白いところなので、Method を取り出して source_location を尋ねるのは一度体験して感動して欲しいんだけど、実務だとタイプ数の少ないやり方も知っておくと更に便利に使えるのでご紹介。 irb の show_source も武器に加えてあげたい #kaigionrails— Takafumi ONAKA (@onk) October 9, 2022 Pry の $ https://github.com/
こんにちは。よわよわRailsエンジニア愛知代表のshitaです。 最近フィヨルドさんやmofmofさんのミートアップで、駆け出しエンジニアの方達に就職の相談をいただくことがありました。 自分は未だによわよわなのですが、駆け出しエンジニアの頃は今よりもっとよわよわでした。その時にRails友達と話していた悩みを思い出したのでここで共有させてください。 よわよわRailsエンジニアのジレンマ よわよわRailsエンジニアはよわよわな現場にしか入れず技術力が上がらないので、ずっとよわよわな現場から脱出できない。 つよつよな現場はつよつよRailsエンジニアを求めるため、よわよわRailsエンジニアはよわよわな現場に入るしかない しかしよわよわな現場では技術力を上げるのが難しい 技術力が上がらないので、よわよわエンジニアはつよつよな現場に入ることができず、ずっとよわよわな現場から脱出できない そ
メドピアエンジニアの難波です。 医師専用コミュニティサイト「MedPeer」では、今年の8月にMedPeer Journalというサービスのクローズを行いました。今回の記事ではその時に行った作業の紹介をしたいと思います。 サービスの新規開発に関する記事というものは世の中にたくさんあれど、大規模なサービスにおける一部機能(サービス)の終了に関する経験や知見は中々オープンにされにくいものです。しかしサービスを滞りなく素早く終了させることは新しいサービスを作るリソースの確保という観点でも大事なことであり、今回の記事が将来の参考になればと思い1つの事例としてここに認めます。 MedPeer Journalについて MedPeer Journal(以下Journal)とはPubMed(Wikipedia)という医学を中心とする生命科学の文献情報を収集したオンラインデータベースへの検索エンジンを利用し
本稿は、Webアプリのプロトタイプを作るための道具として RedwoodJS を紹介する記事です。 前説:プロトタイピングにおける技術選定 シンプルなWebアプリのプロトタイプを作るとき、みなさんはどのような技術選定を行うでしょうか。 プロトタイプと言えど UI の検証もある程度は含んでいる場合がほとんどなので、筆者としては UI の構築には React を利用したい[1]ところです。テンプレートエンジンでは著しく開発効率が落ちるので、フルスタックフレームワークとしての Rails や Django はこの時点で選べないことになります。 しかし、React を選んだとしても大半のアプリケーションでは永続層が必要ですし、フロントエンドで計算させたくないロジックも多々あります。バックエンドを別で作る場合に直面するのは、クライアント側とのAPIスキーマの整合性をどう取るかという問題です。できれば
過去記事ページの UI 考察 ずっと過去記事をどうやって効率よく見せるか(自分自身が効率よく読むか)ばかり考えている。一つ前の記事では絞り込み UI について書いた。ブログというものが生まれたとき、誰も 10 年以上にわたっ... portalshit.net ブログのアクティビティダッシュボード Archive ページにこだわってしまう理由、グラフを表示させてみて(ブログ過去記事をカテゴリーごとに集計してグラフ化 - portal shit!)何となくわかった気がする。過去記事ページとい... portalshit.net このブログの維持管理で一番時間を割いているのが Archives ページだ。しかしアクセスログを見ると自分以外はほとんど利用していない。完全に自己満なのだが、過去の自分を振り返ることができてとても自分には有意義なページだ。 過去記事を振り返るときには検索をしたくなる。
こんにちは、@r_takaishiです。今回は、モノリシックなRailsアプリケーションが提供するAPIについてエンドポイント毎にSLOを設定できるようにしたので紹介します。 解決したい問題 ReproではRailsアプリケーションが様々なAPIを提供しています。このとき、APIのAvailabilityやLatencyについて可視化して障害が起こっていないか、パフォーマンスが低下していないかを調べることがあります。また、APIについてSLOを設定し、サービスの信頼性を保ちつつ開発を行うこともあるでしょう。 Reproでも可視化やSLOの設定は行ってきました。しかし、それらの対象がALBのTargetGroup単位だったり、APIを提供するECS Service単位でした。このような単位だと、API全体についての状況は分かりますが、個々のAPIについての情報は得られません。例えばエンドポイ
The State of Ruby 3 TypingIntroducing RBS, Ruby’s new type signature language We're pleased to announce Ruby 3’s new language for type signatures, RBS. One of the long-stated goals for Ruby 3 has been to add type checking tooling. After much discussion with Matz and the Ruby committer team, we decided to take the incremental step of adding a foundational type signature language called “RBS,” which
ShopifyやGithubに代表される大規模なWebアプリケーションの開発では、開発チームが膨大になることで必ず課題が生じます。この状況に変化をもたらすのがRuby on Railsです。 「なぜ大規模開発にRailsを導入すべきなのか」生みの親であるDHH氏にお伺いしました。 巨大アプリケーション開発の課題とRailsの関係性 大規模なチームでソフトウェア開発を行うことは開発環境に関わらず困難です。ソフトウェア開発という職業自体が本質的には「大規模なソフトウェアプロジェクトの失敗」の長い物語なのです。しかしRuby on Railsはそのような状況を改善するための手段になり得ます。 Ruby on Railsが長年構築されてきたアプリケーションを見てみると、 ・Github ・Shopify ・Airbnb ・Zendesk ・Cookpad ・Square ・Stripe などがあり
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く