タグ

開発と設計に関するakira1908jpのブックマーク (13)

  • 今さら聞けないログの基本と設計指針 - Qiita

    ログの出力場所 ログは、開発者や運用担当者が見つけやすい箇所に出力することを原則としましょう。ファイルに出力する場合は、logディレクトリなどを作成しておくことをお勧めします。基的に、出力先は以下の4つが想定されます。 ・ファイルに出力する コンソール外で起動するアプリケーションに使用される方法です。 ・標準出力 コンソールから起動するアプリケーションで使用されます。途中経過などを出力するための出力方法です。 ・外部ログ管理ツールのファイルに出力 外部のログ管理ツールを用いることが可能な場合は、専用のログ記録場所に出力することを推奨しています。 ・外部システムへ出力 開発者・運用者の作業やコミュニケーションを円滑に行うために、Slackなどのチャットツールに出力するケースもあります。ただし、稼働率に注意する必要があり過度なログの出力は控えるようにしましょう。 基的に、外部ログ管理システ

    今さら聞けないログの基本と設計指針 - Qiita
  • 【React/Vue.js】コンポーネント設計の(個人的)ベストプラクティス | Offers Tech Blog

    概要 こんにちは、Offers を運営している株式会社 overflow の Software Engineer(主戦場はフロントエンド)の Kazuya です。今回は、ReactVue.js などの SPA フレームワークにおけるコンポーネント設計について紹介します。 昨今のフロントエンド開発では、コンポーネント指向での開発がスタンダート化しつつありますが、コンポーネント設計には厳格なルールが無く、どのように設計すればいいか悩む方も多いのではないでしょうか?(筆者は沼にはまりました) コンポーネントの単位はどの程度に分割すべきなのか、状態管理はどうすればいいのか、API 通信はどこですべきなのかなど、一言にコンポーネント設計と言っても考えるべき項目が多いです。チーム開発では、認識があっていないとコードが魔境になることもしばしばあると思います。(筆者の経験談より) そこで今回は、数々

    【React/Vue.js】コンポーネント設計の(個人的)ベストプラクティス | Offers Tech Blog
  • 決済システムの残高管理周りの DB 設計と戦略 - カンムテックブログ

    エンジニアの佐野です。今日はカンムの決済システムでユーザの残高管理をどうやっているかについて書きます。 カンムの製品であるバンドルカードはプリペイド方式のカードです。ユーザによる入金、店舗での利用、運営事由の操作などによりユーザの残高が増減します。このような残高の管理について単純に考えると user_id と balance と updated_at あたりをもったテーブルを用意して balance と updated_at を更新していく方法があるかもしれません。しかしながらカンムでは残高を管理するテーブルを持たず、これらイベントの履歴のみで残高を管理しています。以下、記事ではこれらユーザの残高が増減するイベントのことをトランザクションと呼びます。ここでは DB の Transaction Processing を意味しません。 記事のポイントは 残高を管理をするテーブルは作らず、ト

    決済システムの残高管理周りの DB 設計と戦略 - カンムテックブログ
  • ソフトウェア設計原則は変更容易性に通ず - Shin x Blog

    色々な原則や方法論はあれど、つまるところいかに変更容易性を確保するかと言う話に帰結するのでは。極論すれは、正しく動いていて変更する必要が無ければどのような作りになっていても構わない。一方、Web アプリケーションを稼働し続ける上で全く変更しなくて良いということもない。— Masashi Shinbara (@shin1x1) 2021年5月30日 ソフトウェア設計、開発には多くの原則や方法論がある。例えば、DRY 原則や SOLID 原則、デザインパターンにレイヤードアーキテクチャ、クリーンアーキテクチャなどある。さらに DDD にも多くの原則や方法論が含まれている。これらを変更容易性を高めるための手段として原則や方法論を捉えるというのがエントリの論旨である。 原則や方法論の捉え方 変更容易性 質的な変更と副次的な変更 外部変更容易性と内部変更容易性 原則を適用する指針 さいごに 原則

    ソフトウェア設計原則は変更容易性に通ず - Shin x Blog
  • ネットワーク越しリトライ考 - その手の平は尻もつかめるさ

    ここ最近では何らかのインターネットサービスを構築・運用するにあたって、ネットワーク越しのリトライを考えることは避けられなくなりつつあります。 micro services のようなアーキテクチャを採用している場合はサービス間のメッセージのやり取りはまず失敗する前提 (つまりリトライをする前提) で組む必要がありますし、たくさんのクライアントがいてそのクライアントが定期的に何かを処理してセントラルにデータを送ってくる IoT のようなシステムを構築する時もその処理のリトライをよく考える必要があります。 というわけで「ネットワーク越しのリトライ」についてここ最近考えていることをざっくりと書き留めるものであります。 前提 リトライをする側をクライアント、リトライを試みられる側をサーバと呼称します リトライにおいて、サーバおよびネットワークはクライアントよりも弱者です クライアントはリトライをコン

    ネットワーク越しリトライ考 - その手の平は尻もつかめるさ
  • メンタルが弱いエンジニアが安心して開発するために気をつけていること - SMARTCAMP Engineer Blog

    スマートキャンプで業務委託でエンジニアをしている佐藤です。BOXILの開発を1年3ヶ月前から、沖縄からフルリモートでやっています。 皆さんは、毎日楽しくお仕事できていますか? エンジニアという職業は労働時間やストレスが多く、IT業界は他の業界と比べて精神疾患にかかりやすいと言われています。 私はもともと自己否定ばかりしてしまう思考の癖があることに加えて、7年前に起業に失敗してメンタルを壊してしまったことをいまだに引きずっていて、日々悩みながら生活をしています。 スマートキャンプは、過労とは無縁で、メンバー間のサポートもよく、これ以上ないくらい私に合った職場です。それでも自分の心の問題で不安になったり、絶望感に襲われたりすることがあります。今回はそうなるたびに書き綴ったメモを、開発中にネガティブな気持ちにならないための技術としてまとめようと思います。 メンタルが強くないエンジニアはこんな気持

    メンタルが弱いエンジニアが安心して開発するために気をつけていること - SMARTCAMP Engineer Blog
  • 良いコードの書き方 - Qiita

    概要 チームによる継続的開発を前提としたコーディングのガイドライン。 特定の言語を対象としたものではないが、主に静的型付けのオブジェクト指向言語を想定している。 サンプルコードは別段の定めがなければSwiftで記載。 ガイドラインの目的 生産性を高め、メンテナンスコストを下げる バグが生まれづらくする 開発メンバー(特に新規参加者)がコードを理解しやすくする 初心者プログラマー教育 内容の説明 タイトルの頭についた【数字】は重要度。 高いほどシステムに与える影響が大きいが、低いものの方が影響が小さく改修しやすいものが多い。 【5】変数のスコープを小さくする 変わり得る値は複雑さを生み誤解やバグに繋がるため、プログラムは変数が少ないほど問題が生まれづらい。 プログラミングの大原則として、変数は必要最低限を心がけ、むやみに増やさないようにする。 また、変数はスコープや寿命が大きいほど悪影響が

    良いコードの書き方 - Qiita
  • データベース設計の際に気をつけていること - 食べチョク開発者ブログ

    皆さんこんにちは、エンジニアの西尾です。 新しい機能・サービスを開発する際、私は特にデータベース設計に気をつかいます。 データベースはシステムの土台です。 土台が不安定だと、その上に積み上げていくアプリケーションコードがいびつなものになり、つらい思いをします。 また、一度動き出してしまったシステムのデータベース設計を変えるのは、容易なことではありません。 データベース設計には”これだ!”という正解はないと思っています。 サービスの特徴、システムの性質、toB向け/toC向け、Readが多い・少ない、Writeが多い・少ない。 その他もろもろの背景により、データベース設計の仕方も変わってきます。 このテーブルは正規化していないから駄目だ、この設計はいわゆるポリモーフィック関連だから使ってはいけない、などということはありません。 アンチパターンと呼ばれるものも時と場合によっては正解になります。

    データベース設計の際に気をつけていること - 食べチョク開発者ブログ
  • 仕事を任せられるエンジニアになるために意識してほしいこと - 食べチョク開発者ブログ

    皆さんこんにちは。エンジニアの西尾です。 今日は仕事を任せられるようなエンジニアになるために意識してほしいことをまとめましたので、ここに公開いたします。 もともとは社内向けに公開したものです。 この文章は私がビビッドガーデンに入社する前の、前職での経験を踏まえて書いています。 今のべチョクエンジニアが意識できていない、という話ではありませんのでご注意ください。 意識面 作業の見積もりができる 技術力が低い(コーディングができないなど)よりも敬遠されるエンジニアは、作業の見積もりができない方です。 第一線で活躍している方は、作業見積もりが他の方に比べて正確です。 見積もりをするためには、どういう設計をして、どういう機能を作り、どういう影響範囲があるのかを正しく理解する必要があります。 見積もりができないということは、作業内容を正しく理解できていない、技術的な困難性を理解していない、不確定要

    仕事を任せられるエンジニアになるために意識してほしいこと - 食べチョク開発者ブログ
  • 私の考えた最強のログ&モニタリング設計 - 下町柚子黄昏記 by @yuzutas0

    この記事はRecruit Engineers Advent Calendar 2018 - 8日目の記事です。 注意点 タイトルは煽りです。「新規事業におけるデータエンジニアリングの勘所」の方が正しいかもです。 クオリティというか記事の信頼度は、投稿時間がギリギリになってしまったことから察してもらえるとありがたいです。 エントリーの内容は個人的な見解であり、所属する組織を代表するものではありません。データの取り扱いは非常にセンシティブなトピックでもあるため気軽に発信すべきではないということは重々承知しております。もし誤りや考慮不足だと感じる点があれば、それは全て私個人の力不足によるものですので、どうぞ私個人当てにご指摘のコメントをいただけると幸いです。 もくじ 注意点 もくじ 背景 前提 体制 システム 開発スコープ 機械学習WebAPIは分離 データ基盤設計 全体の設計ポリシー データ

    私の考えた最強のログ&モニタリング設計 - 下町柚子黄昏記 by @yuzutas0
  • すべての開発者が知っておくべき、ソフトウェアアーキテクチャに関する5つのこと

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    すべての開発者が知っておくべき、ソフトウェアアーキテクチャに関する5つのこと
  • 設計の「なぜ」を考える | タイム・コンサルタントの日誌から

    まだ駆け出しだった頃、工場改善コンサルタントの話を聞いたことがある。それなりに面白い話がいろいろあったが、1番よく覚えているのはヘアドライヤーの話だった。このコンサルタントは、製造業、とくに電気系メーカーの設計部門を訪れた際は、必ずヘアドライヤーの冷風スイッチについて、尋ねることにしていると言っていた。 「ヘアドライヤーには、温風のスイッチのほかに、必ず冷風のスイッチがありますよね。御社の製品にも、ついていると思います。ではこの冷風のスイッチは、何のためにあるんですか?」

    設計の「なぜ」を考える | タイム・コンサルタントの日誌から
  • 初期データ移行の勘所 - クラウド連携のリーディングカンパニー【株式会社テラスカイ】

    はじめに Force.comにアプリケーションを構築し運用開始が目前に迫る中、初期データ移行が思わぬ足枷になり、リリース直前にプロジェクトがバタついた経験がありませんか?プロジェクトでは、新たに開発するアプリケーションの機能やそのテストにどうしても注力しがちですが、「もっとしっかり準備しておけば良かった!」となりがちな、初期データ移行について今回は書いてみたいと思います。 初期データ移行の検討 大量のマスタやトランザクションを保持する基幹システムやコールセンター、受発注ポータルサイトなど、システム規模の大きい初期データ移行は十分な現行調査・計画・体制を整える必要があります。 また、初期データ移行を考える上での検討はストレージの使用量やパフォーマンスを考えるうえでも欠かせません。 当に移行すべきデータはどれか? 移行時にデータのクレンジングは必要であるか? 移行する場合でも古いデータを含む

    初期データ移行の勘所 - クラウド連携のリーディングカンパニー【株式会社テラスカイ】
  • 1