株式会社SmartHR主催のRubyKaigi 2024事前勉強会の発表スライド https://smarthr.connpass.com/event/315394/
こんにちは!ウィルゲート SREチーム 4年目エンジニアのことみん(@kotomin_m)です ウィルゲートでは24新卒エンジニア 内定者向けに新卒研修を実施しました! この記事では、新卒研修の内容と、研修の中でも私が担当した「エンジニア基礎」の作成の裏側や資料を公開したいと思います! 作成した資料は、私の3年間の学びを凝縮したものであり、そのためかなりボリュームがあります。 しかし、今日から新卒エンジニアの皆さんだけでなく、先輩エンジニアの皆さんにも見て頂き、是非後輩エンジニアの教育の際に使ってもらえると嬉しいです!(頑張って作ったので何卒……!!) 新卒研修の内容 エンジニア基礎 資料公開 エンジニア基礎 作成の裏側 研修作成の背景 研修作成で苦労したところ おわりに 新卒研修の内容 今回は講師11名、全12項目の研修が実施されました! 過去の研修資料をブラッシュアップしたものもありま
「自分の未来予測を信じてちょっと意地を張ってみる」 まつもとゆきひろ氏がRubyに型宣言を入れない理由 #17 動的型付け言語と大規模開発 テーマは「動的型付け言語と大規模開発」 まつもとゆきひろ氏:まつもとゆきひろです。Matzチャンネル17回目ということでお送りします。ちょっと前になりますが9月28日に私が技術顧問を始めたクラウドサーカスという会社さんがテックイベントを開催されて、その時のテーマが「動的型付け言語と大規模開発」というテーマでした。 その時に話したこととか、話そうとしたこと、話そうと思っていたんだけど時間の関係で話せなかったことなどを補足する意味も含めて今日はちょっと放送しようかと思います。というか、分量が多いので2回に分けて話そうかなと思っています。 このクラウドサーカスのイベントのテーマは別に私から指定したわけではなくて、先方が「こんなテーマで話したいんだ」とか「聞き
保守しやすく変化に強いソフトウェアを支える柱 自動テストとテスト駆動開発、その全体像 ~Software Design 2022年3月号「そろそろはじめるテスト駆動開発」より 今回、Software Design 2022年3月号 第2特集「そろそろはじめるテスト駆動開発 JavaScriptでテストファーストに挑戦」の第1章「保守しやすく変化に強いソフトウェアを支える柱 自動テストとテスト駆動開発、その全体像」を本サイトに掲載します。第2章以降については、本誌『Software Design 2022年3月号』電子版(Gihyo Digital Publishing、Amazon Kindle)をご購読いただければ幸いです。 第1章では、混同されることの多い自動テスト関係の概念を、自動テスト、テストファースト、テスト駆動開発の3つの段階に分け、それぞれの効果や注意点を説明します。ソフ
ランキング参加中プログラミング はじめに この記事では、Immutable Data Modelと呼ばれる設計手法をもとに、リレーショナル・データベースにおける、テーブル設計の話を書いています。また、今回の実践で利用する、別の考え方の背景を理解するために、Out of the tar pitという小論文の内容にも言及します。 「状態とは何か?」というややこしい話がたくさん出てきますし、データベースのテーブル設計についての話であることから、たくさんのSQLが出てきます。なので、データモデリングとか状態管理とか、特にSQLとかに興味がない人には面白くないと思います。 そのあたりに興味ある方は、読んでみて欲しいです。 Immutable Data Modelを、実際のアプリケーションで使うデータベースに採用するにあたり、どういう考え方で、どのようにテーブルを構成したか、自分なりの経験を書いていま
最近、毎日のようにEMのいくおさん( @dora_e_m )とTwitterXでわちゃわちゃしてる。彼のポストを見ていると、ガンプラをつくるかビールを飲むかしかしていないように見えるが、それで合っている。 という冗談はおいといて真面目な話をすると、エンジニアとしての僕は彼と仕事ができている今の時間のことを本当に貴重な時間だと思っている。とにかく仕事がしやすいし、いろいろな気づきを与えてくれるおかげで、自分自身の成長も感じている。 エンジニアリングマネージャとしての知識が豊富でスキルが高いというのはもちろん、人との接し方や日常的なふるまいもとても尊敬できるものなのだ。 そこで今日は、僕が彼とこの3ヶ月間仕事をしていて、やりやすい・尊敬していると感じていることの中から10個だけ簡単に紹介しようと思う。僕からいくおさんへの日頃の感謝の気持ちをあらためて書いておこうと思っただけとも言う(ふだんから
この記事はTimee Advent Calendar 2023シリーズ 1の1日目の記事です。 はじめに こんにちは、タイミーでバックエンドエンジニアをしている須貝(@sugaishun)です。昨年は弊社でアドベントカレンダーに取り組んだか覚えていないのですが、今年はなぜかいきなり3トラックで臨むということで、非常に勢いがあるなと思いました。量と勢いで攻めていくところが弊社らしいなと感じています。全て完走できると良いですね。 さて私はその中のひとつのトップバッターということで、タイミーのRailsアプリケーションについて弊社のシニアなエンジニアたちと雑談した内容を座談会風にお伝えできればと思います。事の発端は弊社Slackのバックエンドエンジニアが集まるチャンネルで「タイミーのRailsアプリケーションの健康度はどのくらいなのか?」という会話をしたことでした。その時の私の感想は「人によって
こんにちは!めもりー(@m3m0r7)です。現在、株式会社エンペイでソフトウェアエンジニアとして働いています。2023 年に入って「レガシーコードとどう付き合うか」「Swooleで学ぶPHP非同期処理」など複数の書籍を出版したり外部登壇したりと精力的に活動しています。 エンペイに入社する前の前職は執行役員 CTO という立場ではあったのですが、本記事でも触れている転職活動を 5 月から始めることになりました。2023 年 6 月に、今回の転職活動の備忘録として note を公開しています(一部有料記事)。この note では、コンフォートゾーンから出ることによる刺激ある毎日を送りたいという私自身の「刺激ドリブン」なキャリア観についても語っています。 私がソフトウェアエンジニアとしてここまでこれたのは「刺激ドリブン」を重視していたからです。刺激ドリブンを重視するようになったのは、これまでの経
Value Objectとは何であるか? マーチン・ファウラーのPatterns of Enterprise Application Architecture(PofEAA)やエヴァンス・エリックのDomain Driven Design: Tackling Complexity in the Heart of Software(DDD)が原典であるが、PofEAAではこう切り出している。 When programming, I often find it's useful to represent things as a compound. プログラミング時は物をcompound(合成物)として表現すると便利なことがしばしばある。 例えば2次元空間上での座標のように複数のメンバ(属性)を持つ物は便利である、と。しかしそれらを比較する方法は一意ではない、そこで Objects that a
こんにちは、サービス開発部の荒引 (@a_bicky) です。 突然ですが、RDBMS の既存のテーブルを見てみたら「何でこんなにインデックスだらけなの?」みたいな経験はありませんか?不要なインデックスは容量を圧迫したり、挿入が遅くなったりと良いことがありません。 そんなわけで、今回はレコードを検索するために必要なインデックスの基礎知識と、よく見かける不適切なインデックスについて解説します。クックパッドでは Rails のデータベースとして主に MySQL 5.6、MySQL のストレージエンジンとして主に InnoDB を使っているので、MySQL 5.6 の InnoDB について解説します。 InnoDB のインデックスに関する基礎知識 インデックスの構造 (B+ 木) InnoDB では B+ 木が使われています。B+ 木は次のような特徴を持った木構造です。 次数を b とすると、
こんにちは。サーバーサイドエンジニアの三村(@t_mimura)です。 主に保険薬局と患者さまを繋ぐ「かかりつけ薬局」化支援アプリ kakariのサーバーサイド開発(Ruby on Rails)を担当しています。 突然ですが! この度kakariプロジェクトは「型導入」をしました! kakariのRailsリポジトリに型導入PRがマージされた様子 皆さんのプロジェクトは「型導入」していますか? 「型導入」しているRailsプロジェクトはまだ少ないのではないでしょうか なぜ型導入しないのか 型を導入すると何かしらが便利になることは分かっているのに何故やらないのでしょうか(煽り気味) 「型の恩恵」と「型を自分たちで書くコスト」の2点を比較していませんか? RubyKaigi 2023開催前の私がまさしくそう考えていました。 本当にその2点を比較するべきなのかをここで再考してみましょう。 「型導
mysql> CREATE TABLE `dummy` ( -> `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT, -> PRIMARY KEY (`id`) -> ); Query OK, 0 rows affected (0.07 sec) mysql> INSERT INTO `dummy` () VALUES (),(),(),(),(),(),(),(),(),(); Query OK, 10 rows affected (0.05 sec) Records: 10 Duplicates: 0 Warnings: 0 mysql> INSERT INTO `dummy` () SELECT 0 FROM `dummy` `d1`, `dummy` `d2`; Query OK, 100 rows affected (0.02 sec)
この記事は Money Forward Engineering 2 Advent Calendar 2022 18日目の投稿です。 こんにちは。マネーフォワード関西開発拠点でマネーフォワード クラウド会計Plus (以下会計Plus)のエンジニアをしているぽっけです。 この記事では、私が行った高速化について紹介します。 私は最近Railsアプリケーションの高速化を行っており、ある画面のレスポンスタイムを50%以上削減しました。そしてこの改善はRubyレベルの変更のみで達成しました。 この記事での「Rubyレベルの変更のみ」は、MySQLやRedis、Web APIなどへのアクセスには全く手を入れず、Rubyのプロセスが消費する時間のみを変更した、ということを意図しています。 MySQLなどへのアクセスは通常ボトルネックになりがちな箇所です。今回そこに手を入れずに高速化を達成できたのは、1つ
2015年からサイボウズでAndroidデベロッパーとして勤めていたフランス人なのですが2017年の秋にAndroidデベロッパーとして Square社に応募しました。応募する側からして採用プロセスは合理的でやりやすかったので、この採用プロセスが他の企業にも似たような形で広まっていくと良いなと思って Square の採用プロセスを説明するためにこの文章を書きます。 応募インターネットで求人を見かけた事から始まりました。Android開発の世界じゃSquareが提供してるライブラリは誰でも見たことがあると思います。正直なところ、直接応募するのには不安があって、先に SNS 上で Squareの社員に声かけて話を聞いてみようと考えました。相談にのってくれた Squareの社員は親切な人で話が終わるところで「よかったら連絡先を教えてもらえばうちの人事から連絡がいくようにお願いするよ」と言ってくれ
Twitter で DHH が共有していた記事が面白かったので著者の許可を得て翻訳します。 "If you don't hire juniors, you don't deserve seniors", spot on! We've had phenomenal success hiring junior developers at Basecamp. @jasonfried first tech hire was particularly junior at the time 😂https://t.co/QczMtsou4J — DHH (@dhh) September 21, 2018 ジュニアを採用しない連中はシニアに値しない、というもの。 If you don't hire juniors, you don't deserve seniors (2023) • Isaac Lym
超巨大クラウドのシステム開発現場を行動観察。ガチ三流プログラマが米国システム開発の現状をリークする話(2) Regional Scrum Gathering Tokyo 2022 本記事は「超巨大クラウドのシステム開発現場を行動観察。ガチ三流プログラマが米国システム開発の現状をリークする話(1)」の続きです。 日本のエンジニア層と米国のエンジニア層の違い 次はエンジニアのレベルっていう話です。 これはもう僕のイメージなんですけど、日本のエンジンニアは、もちろん技術力の高い人がたくさんいます。 たくさんいるんですけど、ある一定以上のレベルになると人数がすごい減るっていうイメージがあります。 アメリカの場合は、別にエンジニアがすべて優れているとは思っていませんが、基本的に一定のレベルが担保されてる感があって、みんな普通にオブジェクト指向とか、関数型とかDIであるとかデザインパターンとか、そうい
答えが分からないものを模索しながら作り続ける世界に我々は突入した。和田卓人氏による「組織に自動テストを根付かせる戦略」(その1)。ソフトウェア品質シンポジウム2022 9月22日と23日の2日間、一般財団法人日本科学技術連盟主催のイベント「ソフトウェア品質シンポジウム2022」がオンラインで開催され、その企画セッションとして行われた和田卓人氏による講演「組織に自動テストを書く文化を根付かせる戦略(2022秋版)が行われました。 講演で、企業の業績はソフトウェアの開発能力に左右されるようになってきていること、その開発能力を高める上で重要なのがコードの「テスト容易性」や「デプロイ独立性」であると和田氏は指摘。その上で、それを実現させるような「自動テストを書く文化」をどうすれば組織に根付かせることができるのか、講演の後半ではこの本質的な議論へと踏み込みます。 本記事は、2時間におよぶこの講演をダ
ネット上にはたくさんのIT系のコンテンツがあふれています。そのほとんどは文章として書かれていますが、一部にはマンガの形で面白く分かりやすくしたものもあります。 ここでは、マンガ化されたITコンテンツを集めてみました。毎年夏休みの恒例企画、ITまんがの2022年版です。 今年は5本のマンガを新たに追加しました。 話題になったあのマンガ、JavaScriptのPromiseを解説してくれるマンガ、情報処理学会誌に掲載されているマンガなど、ぜひ夏休みにどうぞ。 もしここに掲載していないITまんがをご存じでしたら、Twitter(@publickey)や、はてなブックマークのコメントなどで教えてください。毎年更新する予定です。 2022年版の新着ITまんが New! 【完結】漫画『100日後に退職する47歳』まとめ 2021年秋に大きな話題となった、本人の経験を基にTwitterで連載されたマンガ
こんにちは、ydahです。 2021年の12月から株式会社アンドパッドでソフトウェアエンジニアとしてANDPAD検査の開発に携わっています。 昨年、息子が生まれてから夜更かしすることがなくなり、早朝に起きては軽くジョギングをしてから、OSSプログラミングにいそしむのが朝のルーティンになった今日このごろです。 さて本稿では、Rubyの例外処理を眺めていたらrescueがグローバルなオブジェクトを破壊するケースがあったんですよという話と、その対策について話したいと思います。 発生していたケースについて 突然ではありますが以下のコードをご覧ください。 この中にグローバルなオブジェクトを壊してしまうrescueがいます。 # 1 begin raise 'foo' rescue ArgumentError end # 2 begin raise 'foo' rescue => ArgumentEr
仕事やらなんやらでMySQLのクエリの良し悪しを判断する必要があるとき、EXPLAINの内容だけだとどのぐらい良くなったり悪くなったのか分からないので SET long_query_time = 0; してrows_examined (そのクエリでrows_sent行の結果を返すために何行に触ったのか)も一緒に提示するようにしている(少なくともMySQL 5.7時点ではrows_examinedはslow_query_logでしか確認できないはずperformance_schemaが有効ならevents_statements_historyやその仲間たちで確認できるとのこと*1 MySQL :: MySQL 5.6 リファレンスマニュアル :: 22.9.6 パフォーマンススキーマステートメントイベントテーブル)。 例: 上の例のBeforeは、もともとDBAが書いた温かみのあるSQLでO
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く