Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
開発用適当ツールとは? 開発していると、たまに何かしらプロジェクト内で開発者用や運用者用にテストデータを作成したり、DBやAPIに繋いでCSVやExcelを出したりする名もなきツールが大量に必要になってきますよね? 配布して他の人にも使ってもらったりしたくなりますよね? これが開発用適当ツール1です。 そういった開発用適当ツールをGoで作ってみたら案外体験が悪くなかったのでシェアしたいと思います。 どうやって開発用適当ツールを作るか? 既存プロジェクトにそのままGoのプロジェクトレイアウトを重ねていきます。 具体的には以下のような感じです。 project-root-directory/ プロジェクトの既存ファイル go.mod go.sum cmd/ ツール1/ main.go ツール2/ main.go internal/ (もしくは分かりやすいディレクトリ) (main.go に入ら
皆さん、フォーム作ってますか? Webサイトやアプリを作るにあたって避けられないのがForm作成、多くの方が autocomplete を設定するなど、より使いやすいフォームを作成するために尽力されていることと思います。 一方で、悪気なく書いたコードでより使いにくいフォームになってしまっている例が世の中には多く見られます(特に銀行系) 今回は、よくあるフォームの実装を例に、(特に日本語話者にとって)より使いやすいフォームにするためのちょっとした仕様や私が考える対策を書いていこうと思います。 忙しい方のために最初に書いておくと、この記事に書いてあることの多くは autocomplete の仕様を意識した実装をしましょう の一言に集約されます。 多くの方にとっては「何を当たり前のことを」と思われる項目も多いかとは思いますが、当たり前のことがされていないフォームが世の中には多すぎるので、少しでも
こんにちは。AI・機械学習チームの氏家(@mowmow1259)です。 エムスリー福岡オフィスの一人目のエンジニアとして福岡で働いています。 マクドナルドの月見バーガーが好きで、今年も発売開始当日に食べに行きました。 私が所属するAI・機械学習チームでは基本的に2週間から1ヶ月程度で新規プロダクトをリリースするなど、高速にプロダクトを開発しています。 その過程で、「この書き方は落とし穴があるから使わない方がいい」といった開発に際したベストプラクティスが溜まっていきます。 そういったベストプラクティスはレビューでの指摘や技術共有会*1でチームに浸透してきますが、レビュー負荷や新メンバーへの周知などに課題がありました。 この記事では、それを解決するためにベストプラクティスをLinterの独自ruleとして規定し、CIで自動検知することでチーム全体に周知する取り組みについて紹介します。 独自ru
こんにちは。レシピ事業部バックエンド基盤グループの石川です。 2014 年、このブログに『開発環境のデータをできるだけ本番に近づける』というタイトルの記事が投稿されました。 クックパッドでは、ユーザーさんが実際に体験している状況と近い状況を再現しながら開発することに価値があると考えています。技術的には、最初からレコードがたくさんあることによってパフォーマンス問題に気付きやすくなるなどの長所がありますし、サービス開発としても、実際のユーザーさんの体験を最速でなぞって素早くフィードバックループを回せるようになるという長所があります。 この慣習は 2014 年の記事から 10 年経った今でも続いています。一方でその実現手法については変化を続けてきました。現在のクックパッドでは状況に応じていくつかの手段を使い分けています。それらの手段については今まであまり公開されていなかったような気がするため、こ
序文 こんにちは。MonotaROの伊藤です。 弊社では障害対応訓練の実施手法の一つであるWheel of Misfortune(略称:WoM)を実践しています。WoMの導入で、障害対応体制の強化を行うことができましたので、実施までの経緯や得られた学びなどを中心に紹介したいと思います 序文 運用担当者の負荷が高まり続ける問題 運用担当者=社歴が長いベテランエンジニア 運用のスケールアウト 障害対応訓練をやってみよう 訓練環境の準備の問題 訓練シナリオの問題 外部からの助け Wheel of Misfortuneとは 実施時の様子 シナリオ開始時の様子 モニタリング画面の表示 WoMとDiRT(Disaster in Recovery Training) 障害対応訓練をやってみた結果 準備時点で感じたメリット 手順書の不備を発見できたこと 障害が起こりかねない場所を考えるきっかけになったこと
こんにちは!アルダグラムのKANNAの開発お手伝いをさせて頂いているoubakiouです。 KANNAでは主にバックエンドにRails+graphql-rubyやKotlin+DGS、WebフロントエンドにTypeScriptとReactを採用していて、私が参加するチームでの仕事もそれらを触る事が多いのですが今回はそこでコードレビューをする際に気にしている「べからず」をティア別に見ていきましょう。 特に理由なくlintを無視してはいけない アルダグラムでは利用エディタの規定や制限はありませんが、Webフロントエンド開発で一番利用者が多いのはVSCodeでextensions.jsonにlint表示等のために必要な拡張プラグインリストが整備され半自動でインストールされるようになっています。VimなどVSCode以外のエディタを利用する場合には同等のリアルタイムlint表示ができるよう自主整備
この記事では、できるだけアクセスを絞るべき本番環境に対して、かのシンデレラのように時間制限つきの承認性アクセスができるようにした事例を紹介します。 目次 目次 はじめに 背景 複数の環境 これまでの運用 課題 実現方法 実装 - Google Cloud IAM 設定スクリプト 設定 - GitHub Environments 実装 - GitHub Actions その他細かな工夫点 ゴミ掃除 Slack 連携 サービスアカウントキーの発行 運用を変えてみて おわりに はじめに こんにちは、NeWork 開発チームの藤野です。普段はオンラインワークスペースサービス NeWork のエンジニアリングマネジメントをしており、最近では実際にコードを書く機会も増えてきています。 この記事では、これまで手動 + ガッツで運用していた本番環境へのアクセス管理の工程のほとんどを自動化した内容をご紹介し
ソフトウェアエンジニアリングの第一人者・和田卓人氏が、効果的な自動テスト戦略の構築について解説しました。アイスクリームコーン型からテストピラミッド型への移行の重要性を強調し、その実践的な方法を提示。E2Eテストの過剰投資への警鐘を鳴らすとともに、テストダブルの適切な活用法や良質な設計の必要性に言及しました。前回の記事はこちら。 アイスクリームコーンからピラミッドへの移行 和田卓人氏:ということで、「じゃあ、どうやってピラミッドを作っていこうか?」っていう話になるわけですね。多くの現場では、最初はアイスクリームコーンから始まります。別にそれは悪いことじゃありません。 いきなり最初からきれいにピラミッドを作れる組織ばっかりかというと、そんなことはないですよね。基本的に、難しいです。テスト容易性とは何かってわかっていないとピラミッドは最初から作れません。なので、最初は自動テストをがんばっていると
ソフトウェアエンジニアリングの第一人者・和田卓人氏が、効果的な自動テスト戦略について解説しました。ユニットテストの定義の曖昧さから生じる問題点を指摘し、Googleが提唱する「テストサイズ」の概念を紹介。さらに、テストピラミッドの再解釈と最適化について論じ、テストサイズに基づくアプローチがビルドパイプラインの効率化にもたらす利点について解説しました。前回の記事はこちら。 短時間でのテスト実行 和田卓人氏:ということで、じゃあ、次にいきます。短い時間で到達するというアジェンダ、3ポチ目ですね。 「信頼性の高い」、これはテストの結果に嘘がないという話でした。「実行結果」、これは信号として、また問題箇所の絞り込みとしてのテストの実行結果にこだわろうという話でした。そういったテストを、短い時間で到達する、信頼性の高い結果に短い時間で到達する状態を保つ。短い時間で。 ユニットテストの定義の曖昧さ と
この記事は秋の技術特集 2024の5記事目です。 カケハシではライブラリの更新検知にrenovateを利用しています。renovateは実行スケジュールの設定やパッチのグルーピングができるなどの機能が便利ですが、脆弱性データベースを持っていないため、検知された更新が脆弱性対応か否かがわかりません。 最終的にはすべて対応するべきですが、対応の優先順位づけのためどれが脆弱性対応パッチなのかわかると便利です。 GitHubでrenovateを使っている場合、Dependabot Alertsと組み合わせることで、Dependabotの脆弱性情報を利用してrenovateでも脆弱性を検知できます。 Dependabotシリーズについて Dependabotを有効化すると、renovateとDependabotで二重にPRが作られるのでは?と心配されるかもしれませんが、その問題はありません。費用もか
DDD連載記事 なぜDDD初心者はググリ出してすぐに心がくじけてしまうのか ドメイン駆動設計の定義についてEric Evansはなんと言っているのか モデルでドメイン知識を表現するとは何か ドメイン駆動設計で実装を始めるのに一番とっつきやすいアーキテクチャは何か 背景 ドメイン駆動設計で実装を始めるのに一番とっつきやすいアーキテクチャは何かの記事で、オススメしていたのはオニオンアーキテクチャでした。 今回は、オニオンアーキテクチャについて詳しく説明したいと思います。 上述の記事でも書いた通り、「ヘキサゴナル、オニオン、クリーン」の3つは、本質的には全く同じで、思想としてはヘキサゴナルで完成されているのですが、より具体的に説明されているオニオンアーキテクチャから説明を読んだ方が理解がしやすいと思います。 その後にヘキサゴナルの説明を読むと「なるほど」となって「あれ、結局ヘキサゴナルじゃん」と
この記事は、Merpay Tech Openness Month 2023 の4日目の記事です。 こんにちは。メルコインのバックエンドエンジニアの@goroです。 はじめに このGitHub Actionsのセキュリティガイドラインは、社内でGithub Actionsの利用に先駆け、社内有志によって検討されました。「GitHub Actionsを使うにあたりどういった点に留意すれば最低限の安全性を確保できるか学習してもらいたい」「定期的に本ドキュメントを見返してもらい自分たちのリポジトリーが安全な状態になっているか点検する際に役立ててもらいたい」という思いに基づいて作成されています。 今回はそんなガイドラインの一部を、社外の方々にも役立つと思い公開することにしました。 ガイドラインにおける目標 このガイドラインは事前に2段階の目標を設定して作成されています。まず第1に「常に達成したいこと
ユニットテストのコードカバレッジ(テストカバレッジ。ステートメントカバレッジやC0、C1など)は、不適切な運用が根強く見られます。多いのが、コードカバレッジの確保だけをテストの十分性目標にして、まずいテストを書いてしまうパターンです。 今回はこのコードカバレッジについて、現代的な開発を支えるための適切な運用について解説します。 コードカバレッジのみを直接のテストの十分性の目標にしてはいけない 結論から言うと、まずユニットテストは以下を目標として作成します。 ふるまいの仕様が実現されているか確認する プログラマが感じる品質リスク(いわゆる不吉な臭い等)が許容できる水準であることを確認する 法規制対応など、外部からのテスト要求に対応する コードカバレッジは、上記目標を達成することで副次的に確保されることを目指します。 注意点として、コードカバレッジの確保のみを直接の目標にすると弊害が大きくなり
こんにちは、リファクタリング大好きなミノ駆動です。 2024/07/20に発売された『ドメイン駆動設計をはじめよう ―ソフトウェアの実装と事業戦略を結びつける実践技法』を、訳者の増田亨氏よりご恵贈賜りました。 この記事は、この書籍の感想です。 著者の許可を得た上でのだいたんな意訳総評等の前にいの一番で伝えたいポイントです。 エリック・エヴァンス氏の『ドメイン駆動設計』は大変価値の高い知見が網羅されている一方、「ユビキタス言語」や「境界づけられたコンテキスト」といった独特の用語が登場したり、難しい言い回しをしていたり、読解がかなり難しい書籍です。 独自用語が登場するたびに「ユビキタス言語?なんだこれ?」とつまづきを覚え、内容理解に集中できず、読む手が止まってしまったことがある人も少なくないのではないでしょうか。 本書『ドメイン駆動設計をはじめよう』は『Learning Domain-Driv
こんにちは。サーバエンジニアのnsym-mです。普段はGoでバックエンドの開発などをしています。 最近テストに関する書籍や記事などを色々読み漁ったので、現時点での自分のテストについての考え方を備忘録として残しておきます。 今回の話はWebフロントエンドやiOS/Androidなどでも適用できる汎用的な考え方として記載していますが、ベースの文脈はバックエンド開発になりますのでそのつもりで読んでいただけますと幸いです なお、本記事では主にGoogle、『単体テストの考え方/使い方』、@t_wadaさんの発表されている考え方(いわゆる古典学派)に倣っています。 用語整理 よく使われるテストスコープ 単体テスト(ユニットテスト) 人によって定義に差がある 統合テスト(インテグレーションテスト) 結合テスト(E2Eテスト) 単体テストの定義がブレることから、スコープではなく実行時間で判断するテストサ
こんにちは。 LayerX バクラク事業部 バクラクビジネスカード開発チームEMの 高江(@shnjtk)です。 今回の記事では、先日開催された開発生産性Conference 2024にて私の登壇の中でご紹介したコードレビューガイドラインについて、登壇の中ではご紹介しきれなかった部分も含めてより詳しくご紹介いたします。 開発生産性Conference 2024 コードレビューガイドライン 策定の経緯 ガイドラインの内容 ガイドライン策定の目的 ガイドラインの位置付け コードレビューの目的 コードレビューの観点 レビュアーに期待すること レビュイーに期待すること レビュアーに期待しないこと セルフマージを許容するケース 策定の効果 おわりに 開発生産性Conference 2024 2024年6月28日〜29日に開催された、ファインディ株式会社様主催の開発生産性Conference 2024
はじめに Webアプリケーションにおけるレートリミット、サーキットブレーカー、リトライの役割 リトライ サーキットブレーカー レートリミット レートリミット、サーキットブレーカー、リトライの実装 サンプルアプリケーションの実装 リトライ、サーキットブレーカー、レートリミットを追加 まとめ 年に1度の技術イベント「RAKUS Tech Conference」を開催します!! はじめに こんにちは!エンジニア2年目のTKDSです。 今回は、レートリミット・サーキットブレーカー・リトライについて調べた内容を紹介し、ライブラリを使ってGoで実装してみます。 Webアプリケーションにおけるレートリミット、サーキットブレーカー、リトライの役割 リトライ リクエストが失敗した場合に再試行します。 リトライは、一時的な障害に対して効果を発揮します。 ネットワークの瞬断やサービスの一時的な過負荷など、やり直
読み飛ばしてください おはようございます、しなもんです。 この記事は↓の続編的立ち位置です。 前回の記事がありがたいことに爆発的にトレンド入りしました。ありがとうございました。 (あれらの機能を知らなかったのが私だけじゃないことが分かって安心しました) 思ったより反応があり、Twitter(自称X)でもいろいろ意見をいただきました。 というわけで、今回は標準ライブラリのドキュメントを読んでみました。 予想通り、知らない裏技がたくさん出てきました。 Pythonすごい。 functoolsが便利すぎる partialを使った関数の部分適用 partial関数を使うと、関数の一部の引数を固定した新しい関数を作成できるようです。 コールバック関数を使う際や、関数型プログラミングっぽいコードを書く際に非常に便利なようです。 私は関数型プログラミングには明るくないのですが、 クラスの継承的なことをし
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く