タグ

Programmingに関するouestのブックマーク (124)

  • データベースの在庫の持ち方をビットで管理してる話 - 一休.com Developers Blog

    こんにちは、一休.comスパ(以下、「スパ」)の開発を担当しているshibataiと申します🙏 今回はスパのデータベースの在庫の持ち方で試行錯誤した話をさせていただきます。 背景 2024-03-29追記: 一休.comスパにおける在庫の特徴について 一休.comスパが扱う「在庫」は、「ある日付の特定の時間に対する空き枠」です。以降の説明では、スパ施設ごと、日付ごと、また時間ごとに増えていく「在庫」をいかに効率よく扱うかについて説明しています。 詳細については次のスレッドも参照してください! https://t.co/Y0SPmDE4yZ この記事のコメントみてると、少し我々のシステムの要件が伝わってないというかそこの説明が記事に不足しているように思った。ので以下その補足— naoya (@naoya_ito) March 29, 2024 現在の実装 スパは予約を受け付けるために在庫の

    データベースの在庫の持ち方をビットで管理してる話 - 一休.com Developers Blog
    ouest
    ouest 2024/04/26
    時間在庫をビットで持つのはいいなぁ
  • 開発者が知るべきキャッシュ設計でよく遭遇する問題

    はじめに 分散システムの設計および開発において、キャッシュはパフォーマンス向上のための非常に重要な要素です。頻繁にアクセスされるデータをキャッシュすることで、アクセス速度が遅いデータベースへのアクセスを削減し、データへの迅速なアクセスを可能にします。これにより、システムの全体的な効率とパフォーマンスが向上します。 しかし、キャッシュは慎重に設計しないとむしろパフォーマンス上のデメリットになるケースが存在します。 この記事ではよく遭遇するキャッシュ設計の問題とその回避策について解説します。 Cache penetration DBに存在しない値を検索したときに、DBから返された空の結果をキャッシュしない場合に発生するシナリオです。 このシナリオではDBに存在しない値を繰り返し検索することにより、その値がキャッシュされていないため検索ごとにDBへのアクセスが必要になってしまいます。 存在しない

    開発者が知るべきキャッシュ設計でよく遭遇する問題
  • 5年やって分かった要件定義に必須な5つのスキルとその上達方法 - みんなのシステム企画

    「要件定義のスキルを上げたいけどどうしたら良いかわからない」 こんなふうに悩んだことはないだろうか。 要件定義ではかなり幅広いスキルが求められる。さらに要件定義の対象は毎回異なるため、具体的なレベルでスキルを言語化するのがかなり難しく、どうしてもスキル定義が「コミュニケーションスキル」や「ビジネス理解スキル」といった抽象的な言葉になりがちだ。 そこでこの記事では、要件定義を第一線で実行してきた私が、要件定義を構成するスキルを以下の5つに分解し、それぞれの向上のための方策も可能な限り具体化した。 ・論理的に物事を整理するスキル ・ビジネスの数字を理解するスキル ・業務のフローを理解するスキル ・要求を具現化するスキル ・要求を達成するために必要な機能を洗い出すスキル それでは一つずつ見ていこう。 1 要件定義をするために必要な5つのスキル この章では、要件定義に必須なスキルとそれがなぜ必要な

    5年やって分かった要件定義に必須な5つのスキルとその上達方法 - みんなのシステム企画
    ouest
    ouest 2023/09/29
    文章はあまりよくないが、5つのスキルは理解できる。要件を必要と十分なものに整理しながら優先順位をつけ、どう実装するかを考える力が要件定義としての力。
  • 検索が爆速になるデータベース設計を公開します

    こんにちは。エンジニアの谷井です。 フォルシアでは、Spookと呼んでいる技術基盤を用いて、主に旅行業界やMRO業界に対して、膨大で複雑なデータを高速検索できるアプリケーションを提供しています。 今回はその高速検索のノウハウのうち、特にDBの扱いに関連する部分について、ベテランエンジニアへのインタビューを通してそのエッセンスをまとめてみました。 一般的なベストプラクティスだけでなく、検索性能を高めることに特化しためずらしいアプローチもあるので、ぜひご覧ください。 フォルシアにおける検索DBについて まず前提としてフォルシアで扱うデータについて軽く説明します。 扱うデータの複雑さ たとえば、旅行会社向けのアプリケーションであれば、宿泊素材の情報としては ホテルの情報「〇〇ホテル」(~約2万件) プランの情報「朝付き・ロングステイ△△プラン」(0~1500件/施設) 客室の情報(~100件/

    検索が爆速になるデータベース設計を公開します
  • 開発生産性を上げるシンプルな仕組み、Feature Flagの使いどころ

    はじめに みなさんこんにちは、物流業界の価値最大化をミッションに掲げるアセンド株式会社で取締役CTOを務めている丹羽です。 私たちはレガシー産業である運送会社さんのDXを実現すべく、運送管理SaaS「ロジックス」を開発しています。運送業にまつわる業務の全てをデジタル化・プロダクト化し繋がる世界を実現しようとしています。そのためにアセンドでは開発生産性にこだわり投資をしています。 そんなアセンドのプロダクトチームでは週間平均 8.20deploys/day を実現するなど、1段高い生産性を実現しています。今回はこの生産性を支える仕組みの1つである Feature Flag についてご紹介します。 (毎日SlackBotでデプロイ状況などのレポートを通知するようにしています) Feature Flag とは? Feature Flag とは、プロダクト開発時に新機能の公開(リリース)や変更を簡

    開発生産性を上げるシンプルな仕組み、Feature Flagの使いどころ
  • Goで関数のオプション引数を実装するパターン集 - Uzabase for Engineers

    記事は、NewsPicks Advent Calendar 2022 の 12/19 公開分の記事になります。 はじめまして、11月からAlphaDriveにJoinし、Webアプリケーションエンジニアをしている畠山(keyamin)です。 今回は、Goで関数のオプション引数を実現するための方法を紹介しようと思います! お題 別言語での実装例 Goでの実装方法を考える 使われそうなパターン分のファクトリー関数を作る オプション構造体を用意する ビルダーを利用する Functional Optionパターン まとめ お題 コーヒーショップを題材に、コーヒーインスタンスを作成するプログラムを考えます。コーヒーファクトリー関数の呼び出し側は、サイズ、ミルクの有無、角砂糖の数を指定することができます。 ※こちらの題材はO'Reilly Japanより出版されている実用 Go言語を参考にしています

    Goで関数のオプション引数を実装するパターン集 - Uzabase for Engineers
  • Perlの技術研修 - Mobile Factory Tech Blog

    こんにちは。エンジニアのid:kfly8です。 先日、技術研修のインタビュー記事を公開し、手を動かしつつ、コミュニケーションをよく取る技術研修といった主旨の内容でした。 tech.mobilefactory.jp こちらのインタビューでは具体的な研修内容は触れていませんでした。今回は、駅メモ!や駅奪取といった位置ゲームや着メロの月額コンテンツサイトなどで利用しているPerl技術研修について紹介します。ブロックチェーン事業ではフロントエンド、バックエンドの両サイドで、TypeScriptを利用しているのですが、そちらの技術研修の話は追い追いできればと思います。 tech.mobilefactory.jp 技術研修を受ける人は、どの言語でも良いのである程度プログラミング言語に慣れてることを想定しています。そのため、学ぶ意味、特徴は何か、良教材は何か、罠は何か、などポイントを掻いつまむように技

    Perlの技術研修 - Mobile Factory Tech Blog
  • 最初から強いやつの特徴 - Qiita

    はじめに どんな仕事でも強い人は存在する。 でも最初から強い人は珍しい。 これは、web 業界に身を置いてみて、信じられないくらいムキムキになっていった人たちを見てきた私が送る こうしたら強くなれるかもしれない?指南書である。もしエンジニア職に興味があるのであれば、一考になるかもしれない。 最初から強いやつの特徴 平日の稼働時間以外も勉強 or 開発する 土日も勉強 or 開発する 公式ドキュメントをちゃんと読む 以上のような当たり前のことは、最初から強い人じゃなくてもやるので特徴に入れません。 1. 読解能力が異常に高い 国語の力です。 これは、ちゃんとドキュメントに書いてあることが理解できると同義です。 そしてこれが当に大事です。 強い人に質問すると必ず「ん? Docs 読んだ?」って聞いてきます。私は (...読んだわ!) って内心思ってますが、それは読んだだけです。内容をちゃんと

    最初から強いやつの特徴 - Qiita
  • 20年間ソフトウェアエンジニアとして働いて学んだ20個のことまとめ

    By Sergey Galyonkin ソフトウェア開発企業・Simple Threadの創設者であるジャスティン・エセリッジ氏が、ソフトウェアエンジニアとして20年活動した経験を基に、学習において重要なポイントやコーディングにおいて意識するべきポイントなどを20個にまとめて公開しています。 20 Things I've Learned in my 20 Years as a Software Engineer - Simple Thread https://www.simplethread.com/20-things-ive-learned-in-my-20-years-as-a-software-engineer/ ◆1:自分がまだ多くを知らないことを自覚する エセリッジ氏は、たとえ何十年間ソフトウェアエンジニアとして働いたとしても、それぞれのエンジニアが持つ知識には違いがあり、他のソ

    20年間ソフトウェアエンジニアとして働いて学んだ20個のことまとめ
    ouest
    ouest 2021/10/20
    当たり前のことだが、とても大切
  • シェルスクリプトを書くときにいつもやるやつを調べた

    bash のシェルスクリプトを書くときに、いつも脳死で以下をやっている。(同僚が整備してくれたものをコピペしている) エディタなり CI で shellcheck をまわす set -euxo pipefail と冒頭に書く こんな感じ #!/bin/bash set -euxo pipefail いつまでもコピペではさすがにアレなので、意味を調べたメモ。 shellcheck koalaman/shellcheck: ShellCheck, a static analysis tool for shell scripts イケてない書き方に警告を出してくれる それぞれの警告にはエラーコード割り振られていてとても便利 エラーコードごとに正誤例、解説が書かれているのでわかりやすい SC1000 の例 CI もそうだし、エディタのプラグインも充実 しているのでとりあえず入れておくと良い set

    シェルスクリプトを書くときにいつもやるやつを調べた
    ouest
    ouest 2021/02/23
    「-o pipefail」は今後使っていこう
  • 「未経験で自社開発やってる会社に行きたい」という方に伝えていること。|おざまさ

    有名企業のエンジニアから実務が学べるオンラインコミュニティ「TechTrain」を運営している小澤と申します。 サービス開始から2年弱が経ち、現在約2,000名のU30のエンジニアを目指す方にご利用いただいています。(いつもありがとうございます🙇‍♂️) 私自身もキャリアアドバイス(漠然とした悩みを一緒に言語化したり)と、リクルーティングアドバイス(企業への紹介や面接練習)を担当させていただき、サービスの中で少なくとも500人以上の方とお話させていただきました。(前職でもエンジニア採用を7年半やっていたので、わりと沢山のエンジニアエンジニアを目指す方とお話させていただきました。 今回はそのなかで、未経験者や駆け出しエンジニアのみなさんに普段面談でお伝えしていることをまとめてみます。 ※決して上記の方がエンジニアを目指すことが悪いわけではなく、応援しているのですが、ここ数年誰かが何かを布

    「未経験で自社開発やってる会社に行きたい」という方に伝えていること。|おざまさ
  • Slackアプリ開発を始めるときに全人類が知っておくべきこと | Wantedly Engineer Blog

    こんにちは! Wantedly で Web エンジニアをしている木村(@hachiblog)です。8月にβ版をリリースした、コンディション・マネジメントサービスのWantedly Pulseを開発しています。 Pulse は毎週の調子を記録する機能や、社内のメンバーを称賛できる機能を提供していますが、そのほとんどを Slack アプリ内で実現しています Pulse(パルス)/ チームの状態 Slackを通じてチームの価値観を浸透させ、メンバーの抱える課題や隠れた貢献を可視化。行動のベクトルを束ね、自律して同じ価値に向かうチームを生み出す、新しいモチベーション・マネージメントツールです。 Slackを通じてメンバーの抱えるモチベーションの課題や隠れた貢献を可視化。行動のベクトルを束ね、自律して同じ価値に向かうチームを生み出します。 ... その他にも Wantedly Visit で募集に応

    Slackアプリ開発を始めるときに全人類が知っておくべきこと | Wantedly Engineer Blog
  • プログラムを教えて理解されない場合は教える技術の不足 - きしだのHatena

    プログラムが組めるとプログラムが教えれると思いがちだけど、教えることは別の技術です。 教えてもなかなか理解してくれないとき、プログラミングに向いてないとさえ言う人もいますが、教える側の教える技術の不足です。 教えることも技術のひとつだと気付けば、教えてもなかなか理解してくれないときに技術の不足であるということにも思い至れると思います。技術の不足であると気付けば、改善もしていけます。 そして教える技術というのは、インストラクショナルデザインという名前で系統だてて整理されています。 たとえばそのまま「インストラクショナルデザイン」など、タイトルにインストラクショナルデザインが含まれた書籍もたくさん出ています。 インストラクショナルデザイン―教師のためのルールブック 作者:島宗 理発売日: 2004/11/01メディア: 単行 他にも、タイトルにはインストラクショナルデザインとついてないけどイ

    プログラムを教えて理解されない場合は教える技術の不足 - きしだのHatena
    ouest
    ouest 2021/01/07
    学び手は「常に」正しいかどうかは分からないが、この心は忘れないように
  • 今どきの Go の書き方まとめ (2020 年末版) - エムスリーテックブログ

    こんにちは、m3 エンジニアリンググループ CTO 矢崎(id:Saiya)です。 過去に Go 言語の仕様を一通り見た経験があったのですが、久しぶりに Go のコードを最近読み書きした際に、ここ数年の Go 言語やエコシステムの進化による変化もあり、発見やハマりが多々ありました。 Go 言語公式のロゴもスピード感ありますね。 同じような迷い・回り道をしてしまう方ももしかしたらおられるのではないかと思いますゆえ、 エムスリー Advent Calendar 2020 6 日目の記事として、筆者が実際に「最初から知っていれば時間を無駄にしなかったのに...!」と感じた知見をざっくばらんにシェアいたします。 記事がどなたかの一助になりますと幸いです。 なお記事の内容は筆者個人の理解・自身で直接読み書きしたユースケースの範囲での知見であり、全ての Go 利用事例に当てはまらない点も含みうりま

    今どきの Go の書き方まとめ (2020 年末版) - エムスリーテックブログ
  • 他言語プログラマが最低限、気にすべきGoのネーミングルール

    概要 タイトルの通り、他言語から入門した人が最低限気にするべき、ネーミングルールをまとめました。 対象読者 Goの基構文を理解している人を対象読者としています。 この記事で説明すること、説明しないこと 説明すること Goのファイル名、変数名などの名前付けに関するルールや慣例などを説明します。 説明しないこと 名前付け以外で気をつけるべきGoの書き方[1] がいくつかあります。 しかし、それらに関してはこの記事では説明しません。 筆者のバックグラウンド プログラマ歴はもうすぐ8年程で、Goの他には以下のような言語の経験があります。 JavaScript TypeScript PHP Ruby Java Scala Goは少し前に書いて、一時期書かない時期が続いていましたが、最近また書いています。 トータルするとGoの経験は1年半程度です。 意識すべき名前付けルール package名 利用し

    他言語プログラマが最低限、気にすべきGoのネーミングルール
    ouest
    ouest 2020/11/16
    変数はスネークケースかキャメルケースか悩む
  • エンジニアの評価グレード制の導入について - BASEプロダクトチームブログ

    こんにちはBASE株式会社取締役EVP of Developmentのえふしん( @fshin2000 )です。 今回は、年末の給与改定から運用を開始する評価グレード制導入のお話を書いてみたいと思います。 これまで人材採用時の給与決定や社員の評価時には、マネージャ間で相談し役員承認の上で給与を決めていましたが、その基準や空気感は詳しく社内のメンバーに共有できていませんでした。理由として、中途主体の採用だとどうしても前職給与に影響され、人によって給与にばらつきがでてしまうため、体系だった形に整える機会がなかったのですが、今度、社内に評価グレード制というものを導入することになり、各給与レンジの方に求めるスキルや意識についてまとめたのでこちらで公開いたします。 評価グレード制というのは、一般的に等級と呼ばれるもので、一定サイズ以上の会社のご経験がある方なら、類する制度はどこでもあると思いますので

    エンジニアの評価グレード制の導入について - BASEプロダクトチームブログ
  • 天才プログラマーの「締切に対する考え方」に、感銘を受けた。

    わたしは、ビジネスノウハウが嫌いだ。大嫌いだ。 個人で効率化できる部分なんてかぎられているのに、「お前が努力すれば成果を出せる」的なのが気にわない。 それなら先に、ムダな会議を減らせって話だ。 ……というひねくれ者のわたしだが、とあるに出会って、自分でもちょっと戸惑うくらい感銘を受けてしまった。 どうやらわたしは今まで、”2流”のビジネス書しか知らなかったらしい。 Windows95の基礎をつくった天才プログラマーが語る、3つの仕事術 わたしが手に取ったのは、『なぜ、あなたの仕事は終わらないのか』というだ。 ふだんこういったはあまり読まないけど、kindle Unlimitedで読めるし、評価が高かったから、気まぐれでダウンロードしてみた。 著者は中島聡氏。 1960年北海道生まれ。早稲田大学高等学院、早稲田大学大学院理工学研究科修了。 高校時代からパソコン系雑誌『週刊アスキー』

    天才プログラマーの「締切に対する考え方」に、感銘を受けた。
    ouest
    ouest 2020/06/18
    「10日でやるべきタスクは最初2日間で8割終わらせる」これ重要
  • Linuxカーネルコード、1行の文字制限を80字から100字まで緩和

    Linuxカーネルの開発者であるLinus Torvalds氏は5月29日(米国時間)、「LKML: Linus Torvalds: Re: clean up kernel_{read,write} & friends v2」において、ソースコードの1行当たりの文字数を80までとする現在の制限によって生まれる過度の改行はソースコードにとって良くないことであり、さまざまな問題を引き起こすと指摘した。 同氏はメールの中で次のような意見を述べ、制限を緩和する方向の意見を示している。 grepのようなコマンドは基的に行単位で検索を行うので、過度に改行されたソースコードだと扱いにくい。 すでに多くのユーザーが80カラムの幅のターミナルを使用せず、より広げて使用している。同様の理由で、高さも25行よりも広げて使っている。 少数のユーザーが小さいターミナルウィンドウを使用しているという理由で、80カラ

    Linuxカーネルコード、1行の文字制限を80字から100字まで緩和
  • codic - デベロッパーのためのネーミング辞書

    codicは、プログラマーのためのネーミング辞書です。新しいcodicでは、翻訳エンジンを搭載しネーミングをジェネレートできるようになりました。

    codic - デベロッパーのためのネーミング辞書
  • シェルスクリプトを高級言語のような書き味に近づける Tips 集 | 創作メモ帳

    Bash は言わずと知れた歴史あるコマンド言語です。テキストにコマンドの羅列を記述するだけで、手軽にシェルスクリプトとして実行することができます。 シェルスクリプトの実体はシェルコマンドの羅列に過ぎませんが、手続き型プログラミング言語にあるような制御構文も備えています。変数や条件分岐、ループ、関数などです。これらを使えばシェルスクリプトでプログラミングも可能です。 もちろん、現代の一般的なプログラミング言語と比べると機能は限られます。他の言語には見られないシェルスクリプト特有の癖や記法も数多くあり、最近の言語に慣れている人ほど、つまずくポイントが多いです。 しかし、シェルスクリプトだからこその良さもあります。Bash は現在でも多くの OS で標準シェルとして採用されており、普段使っているシェルコマンドを書くだけで動かせる手軽さは何者にも代えがたいです。一度身につけておくと長く使えるお得な

    シェルスクリプトを高級言語のような書き味に近づける Tips 集 | 創作メモ帳