I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: Repository implementation on ActiveRecord | Arkency Blog 原文公開日: 2023/12/28 原著者: Paweł Pacana Repositoryは本質的に、ドメインオブジェクトをその永続化方法から切り離して、それらにアクセスするための限定的なインターフェイスを提供します。Repositoryは戦術的なパターンの一種であり、本記事の導入部で私が説明したい内容よりずっと詳しくMartin FowlerやEric Evansが解説しています。Repositoryパターンが推し進めるものは、いわゆるActive Recordパターンと真逆です。なぜパターンをわざわざ別のものに変換するのでしょうか? Active Recordパターンは両刃の剣であり、その問題はまさに最大の長所
はじめに ヘレの海底都市計画 ~箱庭に空気を植えるSLG~ というゲームの開発に携わらせていただきました。 主にいくつかの主要な機能の全体的な設計と実装、UI の MVP モデル設計、また開発中に問題が生じた際の抜本的な再設計を担当しました。 せっかくなので、本プロジェクトで行った設計のエピソードについてお話していこうと思います。 第一弾は セーブデータ設計について 扱いました。 本記事は第二弾となります。 今回は本ゲームの中で、規模的にもゲーム的にも最も大きい要素の一つだった、住民の管理部分の設計をさせていただいた話です。 私が設計について学び始めた際、設計ができる人はどうしてその設計に至ったのかがわからずにもどかしい思いをしたので、当時の自分の様な設計を学び始めた人にとって助けになればと思います。 (本記事では説明のために具体的なコードを記載しておりますが、これらはこの記事のためのコー
Vue is a popular progressive JavaScript framework used for building user interfaces. Unlike other monolithic frameworks, Vue is designed to be incrementally adoptable. This means it’s as easy to start with as jQuery, but it also has the potential to power sophisticated applications when used in combination with modern tooling and supporting libraries. Understanding and leveraging Vue patterns can
はじめに 初めまして。 都内IT企業で、データアルゴリズムチームのエンジニアをしております、Noraです。 機械学習やデータサイエンスプロジェクトに関わる際、デモプロダクトを作りたい状況は多いと思います。 その際、Streamlitという、PythonのみでWebアプリケーションを作成できるフレームワークが有用です。 今回の記事では、「運用保守が容易で開発コストを下げる」ディレクトリ設計方針を解説していきます。 「Streamlitプロジェクトの、最適なディレクトリ設計方針を考えたい」という、チームで開発しているエンジニアにおすすめの記事となっております! こちらの記事内容は個人の経験がベースになっておりますので、未熟な点も多いかと思います。 ご意見あればコメントいただけますと幸いです🙆♀️ 🙆 では、ぜひご覧ください! 設計の考え方 今回、ディレクトリ設計を考える上で、以下2つのポ
SX-SDMAX SDIOインタフェースタイプ Wi-Fi 6 & Bluetooth®対応 低消費電力無線LANコンボモジュール
※初出は HEY World の https://world.hey.com/hitoshi.nakashima/post-8214d314 です ソフトウェアで万人に響く機能はない。なのでサブスクリプションのソフトウェアサービスでフルセットのプランだけを作ってそれを売るとユーザーから値引き要求がくる。フルセットのプランのうち、機能 A だけ必要であとはいらないので負けろと言われる。 ソフトウェアは限界費用が限りなくゼロに近いので、使える機能の多寡で価格を変えるのは売り手からすると合理的ではないし、複雑な商品メニューの維持管理、サプスクリプションのプラン変更によるアップグレードやダウングレード、決済プラットフォームの移行などを考えると極力支払いプランはシンプルにしておきたい。この辺りを複雑にすることで肝心なソフトウェアの機能開発スピードが落ちてしまったら本末転倒だ。 多分有償のソフトウェア
re:Invent 2023 で行われた BreakOut セッションData modeling core concepts for Amazon DynamoDB (DAT329)のセッションレポートです。 概要 Developers experienced with Amazon DynamoDB can join this session to learn the core concepts of DynamoDB data modeling. Explore best practices for common access patterns used by DynamoDB customers for applications that need consistent, fast performance at any scale. Learn best practices and
お仕事で Design Doc を書く前に色々整理するのだが、その作業をシンプルなフォーマットで効率化してみた。 やることは本当に簡単で、箇条書きに色をつけるだけ。 赤:誰かに質問や相談をしないといけないところ 緑:他の人のボールで待ち状態になっているところ 青:自分で調べるところ 黒:その他 設計を考える時、最初から全てのコードが頭の中に入っているわけではないので基本的には調査から入る。 その際、やるべきこと、分かったこと、分からないこと、気になったこと、不安なこと、全てを片っ端からメモっていく。 そうすると巨大な箇条書きのリストが出来上がるので、そこに上記の要領で色をつけていく。 まず「誰かに質問や相談をしないといけないところ」を赤文字にする。 こういう場合はどういう挙動になるのが正解? ここはもっと良いデザインがあるんじゃないか 既存仕様がどうなってるのか分からん ここは一人で考えて
こんにちは。@dtaniwakiこと谷脇です。 今年、JMDCではアドベントカレンダーに参加しています。 qiita.com 本記事は、JMDC Advent Calendar 2023 24日目の記事です。 私は産業保健向けのサービス「Pep Up for WORK」の開発に携わっています。「Pep Up for WORK」は社員一人ひとりを元気にし、活気ある組織作りを実現することを目的としたサービスです。 Pep Up for WORKの機能の1つとして、パルスサーベイというものがあります。継続的に簡易的なアンケートを取得することで、組織や従業員のリアルタイムな状態の変化を把握し、組織の改善施策に活かすことができる機能です。 この機能では従業員に対して一斉にメールを送信してアンケートの回答を集めるため、平常時に比べてアクセスが短時間に集中してしまうという特徴があります。アクセスが集中し
拙著「ちょうぜつソフトウェア設計入門」の発売から1年を記念した特別イラストです。毎年恒例だったなんとかパターンのシリーズは、ネタ切れでした。今年はこれ単品でご容赦を。 まえがき まずは、いまこそ明かせるちょうぜつソフトウェア設計入門(通称ちょうぜつ本)制作秘話、というほどではないですが、最初はこんな流れでした、というお話をしましょう。 GoFのデザインパターンを1人で書き切るアドベントカレンダーをQiitaでやると宣言し、最終回のバズりのおかげで個人総合1位の座に輝いたのは、2019年のことでした。そこから、技術評論社さんのSoftwareDesignにマンガで釣る入門者向けのシリーズを担当させていただき、その後単著の執筆を企画する機会をいただきました。 実は当初、このキャラクターで何か書く、とは決まっていたのですが「GoFパターンツアーとかでいいんじゃないですかね」ぐらいのゆるい感じでし
Amazon Web Services ブログ クルマのサブスク「KINTO」のアジリティとガバナンスを両立した DBRE の取り組み 本記事は KINTO テクノロジーズ のシニア DBRE エンジニア 粟田啓介氏によるゲスト投稿です。 KINTO テクノロジーズ (KTC) は、クルマのサブスク「KINTO」をはじめとしたさまざまなモビリティサービスを展開しているトヨタ関連グループ会社の一つです。 KTC では、モビリティサービスを提供する基盤として Amazon Web Services 上で Amazon Aurora 等のデータベースを多く運用しており、Database Reliability Engineering (DBRE) を組織として設立し、事業のアジリティとガバナンスを両立するための取り組みを実施しています。 このブログ記事では KTC DBRE による On-Dem
2022年夏、 我々はアプリケーションのバックエンドとして利用していたFirebaseをやめる決断をした。それは事業とソフトウェアの成長に伴いユースケースが合わなくなってきたことが主な理由だ。 これはFirebase、特にNoSQLドキュメントデータベースであるFirestoreから自分たちでRDBを使ったREST APIを開発し移行する物語。 何を考え、何を行うか、RDBとは異なるデータ構造のFirestoreのデータをどのように再設計/開発/移行するかについて愚直に語ります。 同じような悩み、課題もつ皆さんになんらかのきっかけを与える45分に。 スピーカー: 西谷 圭介 氏 (CTO, Singular Perturbations Inc) セッションに関する情報: ・想定聴講者の役割/開発対象:Web バックエンド / サーバーサイド開発 ・セッションのトピック:Web バックエ
風音屋では、データエンジニア、データアナリスト、データコンサルタントを募集しています。 書籍執筆者やOSSコントリビューターなど、業界を代表する20名以上のアドバイザーと一緒にベストプラクティスを追求できる環境です。 ぜひカジュアルトークをお申し込みください。 風音屋アドバイザーのうっちー(@hanon52_)です。 datatech-jp Advent Calendar 2023 の25日目の記事です。 本記事では、外部組織にデータ分析を委託するためのインフラ設計について、いくつかの論点を紹介します。 この内容は、Google Cloud Next Tokyo’23 におけるゆずたそさんの発表「データ分析の授業における Google Cloud の活用事例」を聞いた後に行ったディスカッションがベースになっています。 対象読者 外部組織にデータ提供を行っている、あるいは検討しているエンジニ
こんにちは。freee会計のQAをしているakariです。 freee Developers Advent Calendar2023 8日目です。 私が所属する開発チームでは、QA含むスクラムチームで開発をしています。スクラムチームの中で QAがどのような動きをしているかについて先日インボイス制度に対応した際の例を挙げて書きたいと思います。 まだまだ改善点はありますが参考程度に読んでいただけると嬉しいです。 過去にはfreeeカードUnlimitedのテストでの事例をymtyさんが紹介していますのでご覧ください。 developers.freee.co.jp 開発エンジニアとQAエンジニアについて freeeでは多くの開発チームが各プロダクトや各機能別に分かれています。QAチームの場合は、プロダクト横断で存在していますが普段は各開発チームごとに分かれ1開発チーム5~6人に対してQAエンジニ
MySQLでUUID(v4)をプライマリキーにしてはいけない理由データベースの設計でプライマリキーをどうするかは、最初に悩むところではないかと思います。特にコンシューマー向けのWebサービスやマルチテナントのB2Bサービスを開発するときなどは特に気をつかいますよね。 何も考えずにAuto increment(自動採番)型のプライマリキーを付けて、「/users/1」「/users/2」「/users/3」みたいなID付きのURLでアクセスさせてしまうと、次のような問題が生じることがあります。 URLに使われているIDの大きさや増加数から、システムの規模感や利用状況が分かってしまう。IDを機械的に変えて総当たり的に情報を取得できてしまう。また、分散したシステムでサブシステムごとに衝突しないIDを割り当てたいことがあるかもしれません。そんなときにUUIDをプライマリキーにしちゃえばいいんじゃね
イミュータブルデータモデリング Q. イミュータブルデータモデリングについて教えてください。 A. 以下、ChatGPT の回答です。 イミュータブルデータモデリング(Immutable Data Modeling)は、データモデリングのアプローチの一つで、データを不変(変更不可)な形式で扱う方法です。このアプローチでは、データが一度生成されたら、その値を変更せず、新しいバージョンを作成することが一般的です。イミュータブルデータモデリングは、分散システム、バージョン管理、データの整合性、履歴のトラッキングなどのさまざまな領域で有用です。 以下は、イミュータブルデータモデリングの主要な特徴と利点です。 データの安定性と信頼性: データが不変であるため、一度データが記録されたら、それを変更することができないため、データの信頼性と安定性が向上します。これは、エラーやバグがデータを破損させる可能性
ミラティブが実際の開発で用いたアウトゲーム設計を紹介 MVPをベースに各OSSと連携した設計になっている 記事中の設計方針に基づいて開発されたサンプルプロジェクトが公開中 2023年9月22日、ミラティブの技術ブログ「Mirrativ Tech Blog」にて、『ミラティブでのアウトゲーム設計の紹介』と題した記事が公開されました。 同記事は、ミラティブのUnityエンジニア 菅谷氏(@tetsujp84)によって執筆され、同社が開発する運営型ゲームにおけるアウトゲームのクラス設計について解説しています。 ゲームはインゲームとアウトゲームに分割できるという思想は広く知られています。記事中では、ゲーム体験のコアであるキャラクターの操作などをインゲームの例に、キャラクターの強化やガチャ、ショップなどをアウトゲームの例に挙げています。 設計方針が人によって異なるとプロジェクト構造が複雑化してしまう
こんにちは。Leaner Technologiesの小久保(twitter:@yusuke_kokubo)です。 これはなに Leanerでは「Leaner見積」と「Leaner購買」という二つのプロダクトを開発提供しています。 ここでは「Leaner見積」の開発プロセスをざっくり説明します。 開発プロセスはプロダクトや事業、組織のフェーズによって日進月歩で変わっていきますので、あくまで執筆時点のスナップショットとしてご覧ください。 この開発プロセスの狙い 顧客フロントに立っているセールスや、カスタマーサクセスのメンバーと共同でプロダクト開発をするにあたり、以下の課題を設定して考えました。 (ビジネス側とDev側で)開発粒度の認識をいい感じに合わせたい (ビジネス側とDev側で)開発するうえでの難しさの認識をいい感じに合わせたい 今の開発プロセスになる前は、ここの認識が上手く合っていなかっ
概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: Six ways to prevent a monkey-patch drift from the original code | Arkency Blog 原文公開日: 2023/09/13 原著者: Paweł Pacana 日本語タイトルは内容に即したものにしました。 モンキーパッチ(monkey-patching)を手短に説明すると、直接管理されていない外部のソースコードを、プロジェクトの目的に沿って改変することです。長年動いている「レガシー」プロジェクトのフレームワークを一新する場合や、依存関係をまだアップグレードできない事情がある場合、あるいは多数のコードブロックを移動する必要が生じた場合にモンキーパッチが必要になることがよくあります。 モンキーパッチは手っ取り早く作業を進めるための短期的なソリューションです。モンキ
PingCAPが国内最大級のNewSQLデータベースカンファレンス「TiDB User Day」を開催、事例を中心にTiDBの運用ノウハウを幅広く紹介 2023年7月7日、PingCAP主催の国内最大級となるNewSQLデータベースカンファレンス「TiDB User Day」がハイブリッドで開催されました。 このカンファレンスでは、まずPingCAP米国本社より共同創業者兼CTOのEd Huang氏とMySQLのInnoDB元開発者でHeatWaveの開発リードを担っていたシニアアーキテクトのSunny Bains氏が来日し、「TiDBとMySQLと未来」というタイトルでTiDBの最新情報について講演後、LINEやSBペイメントサービスなど6社から事例を紹介するという形で進められました。最後は「ゲーム業界のデータベースを覗いてみよう」というパネルディスカッションで終了しました。 事例紹介1
はじめに Unityで個人開発をしていて、個人的にそこそこしっくりくるアーキテクチャ的な何かを考えているので、その内容を共有します。 前提 DIちょっとわかる / DIコンテナ使ったことがある VContainerを使っていることを前提としたコード例を書きます Data-View-System 最近やっている開発では、主に以下の3つの要素(レイヤー?)に分けて開発を進めています。 Data View System ECSの設計をちょっと参考にしています。 Data Dataは、ゲーム内で扱うデータを管理するクラスです。状態変数は基本的にすべてDataに配置します。 ただ、もちろんViewにてMonoBehaviourを継承する以上このやり方には限界があるので、ある程度はViewにも状態変数を持たせることもあります。 public sealed class PlayerMovementDat
デジタルプロダクション「factory4」でアプリやさまざまなIoTプロジェクトのUIUXデザインを手がける新谷友樹さんが、UIやUXにまつわるトピックについて解説する本連載。今回は「AIと共創したサイトリニューアル」についてです。 こんにちは!株式会社Cosmowayが組織するデジタルプロダクション「factory4」のUIUXデザイナー新谷です。 ウェブの世界は、技術革新とユーザーニーズの変化に応じて常に進化を続けています。そして今、AIの台頭により、その進化は一気に加速しています。とくにクリエイターやエンジニアの皆さんは、ウェブデザインやプログラミング、アプリ開発などのプロセスにAIを取り入れることにより、これまでにない効率性と創造性を手に入れることができるようになったのではないでしょうか。 今回は「GPT-4o」や「Claude 3.5」などの言語モデル、「DomoAI」や「Run
仕事における自分のミッションを改めて考える必要が出てきたため、1985年から記者の仕事を始めて以降を振り返ってみた。主に何を取材し、どう書いてきたのか。果たして専門性というものが自分にあるのか。 PMからMOT、そしてデータマネジメントへ 最初に『日経コンピュータ』の編集部へ配属されてからしばらくは、色々なことを取材し書いていた。途中から企業情報システムの開発や運用の失敗を実名で報じる「動かないコンピュータ」に力を入れるようになった。諸事情で動かないコンピュータの連載をいったんやめて代替の連載を始めたり、周年の記念号で動かないコンピュータの大特集をつくったりした。 失敗だけではなく成功についても紹介しようと、大きな開発プロジェクトが終わったとき、経緯や苦労を聞いて長めの記事を書くことにも取り組んだ。2000年前後から日本でプロジェクトマネジメント(PM)の推進団体の活動が活発になり、団体の
本連載は、前回シリーズ「いまさら聞けない 製品設計と設備設計の違い」をイントロダクションと位置付け、設備設計の現場でよくあるトラブル事例などを紹介し、その解決アプローチを解説していきます。 今回のテーマ:誰も教えてくれない設計NGあるある【ねじ編】 前回お届けした前編では、「1.M3以下のねじは基本的に使用NG」「2.スペーサなどの部品以外の共締めはNG」「3.ワークが通過する上部での上向き締結はNG」の3つのNG(暗黙の常識)について紹介しました。今回はその続きとして、さらに4つのNGを取り上げます。 ⇒連載バックナンバーはこちら 4.斜め方向に穴を設計するのはNG 複雑形状の部品を設計している際、まれに部品に対して穴を斜めにすると設計上都合が良いことがあります。ですが、基本的に斜め方向に穴を設計するのはNGです。理由は大きく2つあります。 1つ目の理由は「加工精度が悪化するから」です。
こんにちは。CAMPFIREエンジニアのhayashidaです。 前回、Four Keysの計測 について書かせていただきました。 今回は、2023年4月に入社してすぐのころに行った Architecture Decision Records(ADR)の導入 について、話させていただきます。 目次 Architecture Decision Records(ADR)とはArchitecture Decision Records(以下、ADR)は、ソフトウェアアーキテクチャにおける重要な意思決定をした際に、「決定した内容」「コンテキスト」「結果」を簡潔に記載して、ログとして残していくものです。 これらの情報をナレッジとして残していく上で、統一されたフォーマットで一箇所にまとまっていることが望ましいため、テンプレート化しておくことが一般的です。 これにより、重要な意思決定を、決定の時期や当時の
When I’m working on maintaining an unfamiliar codebase, I will spend a lot of time grepping the code base for strings. Even in projects exclusively written by myself, I have to search a lot: function names, error messages, class names, that kind of thing. If I can’t find what I’m looking for, it’ll be frustrating in the best case, or in the worst case lead to dangerous situations where I’ll assume
PWAとは? PWAとは、「Progressive Web Apps」の略称で、PCやスマホでWebアプリを表示する際に、ネイティブアプリのような動作を可能にする仕組みのことです! PWAを導入するメリットとして OSによる制限がないこと プッシュ通知を送ることができること ホーム画面にアイコンを設置できること Webアプリ上でキャッシュを使用でき、ローカルのキャッシュに保存できるため、再びアプリを開いた際の読み込みのスピードが従来よりも速くなること などが挙げられます! 実装 まずは、app/views/layouts/application.html.erbに以下のように2箇所追記します! <!DOCTYPE html> <html> <head> <title>Example</title> <%= favicon_link_tag('favicon.ico') %> + <link
データモデリングでドメインを駆動する ──分散/疎結合な基幹系システムに向けて 2024年2月24日紙版発売 杉本啓 著 A5判/400ページ 定価3,740円(本体3,400円+税10%) ISBN 978-4-297-14010-6 この本の概要 本書のテーマは「データモデリング」と「基幹系システム」です。 Web上で台頭しつつある新たなビジネスは,新たな基幹系システムを必要としています。一方,既成ビジネスでは,モノリシックで硬直的な基幹系システムをしなやかな姿に変えていく必要があります。 基幹系システムの中核には「構造化されたビジネス記録」=「帳簿」があります。そのデザイン,つまりデータモデリングがいずれの取り組みにおいてもカギですが,データモデリングが真価を発揮するには,その知識体系を現代的に仕立て直す必要があります。 本書では,「活動のシステム」と「経営管理のシステム」という線引
はじめに 入社して 2 ヶ月目の 5 月末頃に,プロダクトの追加機能についての案件オーナーとして開発タスクをやらせてもらいました.このプロダクトには,集計したデータを PDF 形式のレポートとして出力する機能があり,このレポートの内容を英語で出力する要望に応えるための案件でした.要件定義がそもそも何かをわかっていない状態から,リリースまでやり遂げた際に学んだこと・振り返りなどを記録します. 要求・要件定義編 ユーザーストーリーについて考える 当たり前ではありますが,プロダクトは誰かに使ってもらうために作っています.そのため,どのような人に向けて作るのか,どのような課題を解決するために作るのかを要求定義の形でまとめます. PdM(プロダクトマネージャー)が本来この部分を担当するのですが,せっかくの機会というのもあり,書かせてもらいました.ここでの学びは,ユーザーの立場から考えることが大切であ
間が空いてしまいましたが、Lambda リファクタリングの最終回です。空いてしまったのはこのあともこの環境を使おうかと GitHub の環境構築に手間取ってしまったためでして。 こんにちは、高崎@アノテーションです。 はじめに 設計:ドメイン駆動設計を実践して自分の LINE 環境をリファクタリングしてみた 実装:ドメイン駆動設計を実践して自分の LINE 環境をリファクタリングしてみた(実装編) の続きになります。 残りのソースをそれぞれ書いて説明していこうかと思いましたが、記事が長々となってしまったため GitHub に置きました。 1 今回の記事では clone 後の利用方法と、各機能についてを実装したことを記載しますが記事内では抜粋して記載しますので詳細は GitHub のソースをご参照ください。 なお、今回もお約束として正確性としては程遠い可能性もあり、エラーチェックも甘い実装例
はじめに セキュアなアップロードとS3の活用 1. S3バケットの作成と設定 2. 署名付きURLの生成 3. クライアントサイドの実装 ShoryukenとSQSによる非同期ジョブ処理 1. Shoryukenとは 2. セキュリティスキャンワーカーの実装 3. 動画変換ワーカーの実装 4. エラーハンドリング Lambdaによるワークフロー制御 まとめと今後の展望 はじめに こんにちは!GMOペパボでエンジニアをしている@yumuです。 近年、動画コンテンツの重要性は急速に高まっており、多くのウェブサービスやアプリケーションで動画のアップロードと共有が一般的になっています。しかし、動画ファイルの取り扱いには、セキュリティ、ファイルサイズ、形式の互換性など、さまざまな技術的課題があります。 今回、私はハンドメイドECサービス「minne」において、作家が作品に関する動画をアップロードでき
はじめに この記事は『CSS設計完全ガイド』という書籍の内容を元に、実際のホームページを見ながらCSS設計にふれてみよう!という内容になっております。 前回は、コンポーネントがmarginなどのレイアウトに関わるスタイルを持ってしまうと使いまわすことが難しくなるため、マルチクラスで対応するという「BEM」の「Mix」という書き方をご紹介しました。 今回はそのマルチクラスにおけるもう1つのメリット「詳細度を一定に保つ」というテーマで、そもそも詳細度ってなに?というお話からしていきたいと思います。 前回の振り返り 最初に軽く前回のおさらいをしておきます。 メディアが複数並んでいるレイアウトで、そのメディアコンポーネント自体にmargin-bottomを指定せず、.service-mediaというクラスを付与して、それにmarginを担当させよう、というお話でした。 詳細度について マルチクラス
はじめに 今回は『CSS設計完全ガイド』という書籍の内容を元に、実際のホームページを見ながらCSS設計にふれてみよう!という内容になっております。 とりあえずデザインやデモサイトを見ながらHTML、CSSを使ってコーディングできるけど、これからどのようにレベルアップすれば良いかわからない。 CSS設計って聞いたことあるけど、難しそう... そんな方に読んでいただければと思います。 CSS設計を始めるための目を養う CSS設計において大切な2つの法則があります。 抽象化する 分ける 「抽象化するってなに?」「分けるってなにを?」って感じだと思いますので、よりわかりやすくすると 共通する部分を見つける (パーツの大きさ・役割で)分ける となります。 では、上のことを意識しながら弊社のホームページを眺めてみてください。 共通する部分はわりと見つけやすいのではないでしょうか。 例えばこんなものが挙
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く