タグ

2024年1月1日のブックマーク (19件)

  • BigQueryにおけるdbtの増分更新についてまとめてみた - Timee Product Team Blog

    はじめに ※Timeeのカレンダー | Advent Calendar 2023 - Qiitaの12月8日分の記事です。 okodooooooonです BigQueryの料金爆発。怖いですよね。 dbtでの開発が進んでたくさんのモデルを作るようになると、デイリーのビルドだけでも凄まじいお金が消えていったりします(僕はもう現職で数え切れないくらいやらかしてます)。 コストの対策として「パーティショニング」「クラスタリング」などが挙げられますが、今回は「増分更新」の観点で話せたらと思います。 「dbtのmaterialized=’incremental’って増分更新できておしゃれでかっこよくてコストもなんとなく軽くなりそう!」くらいの認識でさまざまな失敗を経てきた僕が、BigQueryにおけるincrementalの挙動を説明した上で、タイミーデータ基盤における増分更新の使い方についてまとめ

    BigQueryにおけるdbtの増分更新についてまとめてみた - Timee Product Team Blog
  • PythonのData Appsフレームワーク Streamlit, Dash, Panel を比較(With ChatGPT) - Qiita

    PythonのData Appsフレームワーク Streamlit, Dash, Panel を比較(With ChatGPT)PythonDashPanelStreamlitChatGPT 皆さん、こんにちは!Python Advent Calender2023の6日目担当の小川英幸(X: ogawahideyuki)です。 データから洞察を得る過程で、その発見を他の人と共有し、さらなるインサイトを得ることは非常に価値があります。そのような役割を検討した際に、既存のツールでは物足りない一方、「アプリを一から作るのは大変だな…」と感じたことはありませんか? ここで登場するのがData Appsです。Pythonだけで手軽にデータアプリを作成できるこれらのツールは、データ分析者にとって強力な味方。特にStreamlit、Dash、Panelを、簡単に使えるフレームワークとして、私は注目し、活

    PythonのData Appsフレームワーク Streamlit, Dash, Panel を比較(With ChatGPT) - Qiita
  • TypeScriptでどこまで「関数型プログラミング」するか ─ 「手続き Haskell」から考察する - 一休.com Developers Blog

    この記事は 一休.comのカレンダー | Advent Calendar 2023 - Qiita 10日目の記事です。 昨今は Web アプリケーション開発の世界でも、関数型プログラミングのエッセンスを取り入れるような機会が増えてきました。 とはいえ、一つのアプリケーションを 1 から 10 までがっちり関数型プログラミングで構成するというわけではなく、そのように書くこともあればそうでない従来からの手続き的スタイルで書くところもあるというのが現状で、どこまで関数型プログラミング的な手法を取り入れるかその塩梅もまちまちだと思います。まだ今はその過渡期という印象も受けます。 稿ではこの辺りを少々考察してみたいと思います。 先日、Qiita Conference 2023 Autumn で以下のテーマで発表を行いました。 この発表では「関数型プログラミング最強!」という話をしたわけではなく、

    TypeScriptでどこまで「関数型プログラミング」するか ─ 「手続き Haskell」から考察する - 一休.com Developers Blog
  • 状態設計から「なんとなく」を無くそう

    ウォンテッドリー株式会社の社内イベント "Tech Lunch" で話した発表です。 プログラムには大小さまざまな粒度の「状態」が存在します。 状態の設計を工夫することで、コーナーケースの発生を抑止し、ユーザー体験を最適化することができます。 発表では、私が普段どのように「状態」について考えているか、言語や環境を問わずできるだけ普遍的に使える形での言語化を試みます。発表を通じて、「状態」をなんとなくではなく合理的に設計するためのヒントを提供します。 GoogleスライドのURL: https://docs.google.com/presentation/d/1PNzz69UV05HlKPuWGlooemnPslLbLKsyLwl3R4U_XqE/edit

    状態設計から「なんとなく」を無くそう
  • SRE ディビジョンの新卒向け研修に取り組んだ話

    はじめに こんにちは。クラウドエース SRE ディビジョンの工藤です。 SRE とは Site Reliability Engineering (サイト信頼性エンジニアリング)の略でクラウドエースの SRE ディビジョンは Google Cloud を利用したインフラ構築などを担当しています。 SRE ディビジョンでは新卒向け研修として、Google Cloud のサービスに触れながらアプリケーションを構築する課題が用意されています。 今回はその課題の内容を新卒で文系出身の僕が紹介します。 僕は入社時点では開発経験などがほとんどない状態で、課題もかなり苦慮しながら取り組んでいました。 そんな僕が課題をどのように行ったのか、どのような技術を学んだのかなどを具体的な手順や実際に作成したものとともにお伝えできればと思います。 なお、記事では詳細なコードや Google Cloud 環境の作成

    SRE ディビジョンの新卒向け研修に取り組んだ話
    clavier
    clavier 2024/01/01
  • 【 #ISUCON 】 最近の若者は ssh しないらしいですよ

    こんいす~。 @ikura-hamuです。チーム「リアクティブ二子玉川~♪」でISUCON13に出ました。チームブログはこちら(まだ) 最近の若者はsshしないらしいですよ。 僕は最近のノリに乗っている若者なので、ISUCONでsshせずに作業するツール群「isu-isu-h」(いすいすえいち)を整えました。最近の若者はsshじゃなくて いすいすえいち するらしいですよ。 リポジトリ https://github.com/reactive-futakotamagawa/isu-isu-h-13 (当のリポジトリはIPアドレスとかいろいろ上がってるのでコピーです) 名前は競技が終わってから考えました。ISUCONで自分たちの代わりにsshしてくれるのでこの名前です。 構成大きく分けて、手元の1コマンドで全サーバーでデプロイを行うansibleと、ブラウザで必要な情報を見るobserver(

    【 #ISUCON 】 最近の若者は ssh しないらしいですよ
    clavier
    clavier 2024/01/01
  • pytest で E2E テスト

    pytest で E2E テストが当に便利です。 実際どう使っているかを紹介しておきます。 なぜ Python でテストなのか 自分が Python に慣れている 自分にとって pytest を超えるテストランナーが今のところない SpaceX がテストを Python で書いてて、じゃぁ Python でいいかとなった https://old.reddit.com/r/spacex/comments/gxb7j1/we_are_the_spacex_software_team_ask_us_anything/ft0bz35/ We use C & C++ for flight software, HTML, JavaScript & CSS for displays and python for testing. Rye のおかげで Python の環境構築が苦にならなくなった htt

    pytest で E2E テスト
  • Snowflakeパフォーマンスのカギはやっぱりデータモデリング

    この記事はSnowflakeアドベントカレンダー2023の19日目です。 はじめに 昨年、Snowflakeのパフォーマンスにおいて非常に重要な概念であるクラスタリングとプルーニングに関して、以下の記事を書きました。 なぜクラスタリングやプルーニングが大事なのかを説明させてもらったのですが……理屈はわかった!ではどうすれば?という、具体的なユースケースについて全く書けておらず、また別のブログにします、と宣言しておいて、1年間完全に放置してしまっていました。すみません。。 この記事では、上記の記事の続きとして、クラスタリング・プルーニングの概念を知ったうえで、具体的にパフォーマンスを向上させるにはどうすれば良いかのヒントとなるようなものを書きたいと思います。 具体的には、そうデータモデリングです! データモデリング万能説 データモデリングがめちゃくちゃ大事だよ!ってことは、SnowVilla

    Snowflakeパフォーマンスのカギはやっぱりデータモデリング
  • Flutterにおけるデザインの作り方(個人開発向け)⭐️

    この記事はFlutter大学のアドベントカレンダー20日目の記事です。 はじめに Flutter個人開発し始めた方から「デザインは最初に作った方がいいのかな。」「Figmaの使い方も全くわからない。」という声を聞くことがありました。最近実装の傍、デザインを頼まれる機会がちょこちょこ増えてきたので、今日はFlutterでアプリ開発を始めるときのFigmaのデザインの作り方を紹介していきます。初心者向けに解説していきます。非デザイナーなので専門的なことは書けません(勉強中)が、誰かの参考になったらいいなと思います。 Flutterにおけるデザイン Flutterでのアプリ開発ではAndroid,iOSの両方に適したウィジェットがそれぞれ標準で用意されています。AndroidではMaterialウィジェット、iOSではCupertinoウィジェットというそれぞれのOS系統のデザインのウィジェッ

    Flutterにおけるデザインの作り方(個人開発向け)⭐️
  • バックエンドの5年分の技術的負債を返済し始めた話

    ストレッチ専門店 Dr.stretch を運営する 株式会社nobitel でシステム開発に取り組んでいる Nsi です。 nobitel では「健康 × スポーツ × IT」を掲げ、全国約200店舗(2023年9月現在)の Dr.stretch で使われるお客様・店舗向け業務アプリ「Ficks」を社内で開発しています。 元々2018年に開発がスタートし、紆余曲折あり2021年にリリースしてから継続的な追加開発を行っていましたが、ようやく技術的負債の返済に向けて動き出せる体制になってきたこともありフロントエンド・バックエンド共に時間をかけてリファクタリングに取り組んでいます。 フロントエンドの取り組みについては業務委託の shinnoki さんに記事を書いて頂いていますが、 今回はバックエンドの取り組みについて紹介したいと思います。 背景 弊社でエンジニアチームが立ち上がったばかりの頃に制

    バックエンドの5年分の技術的負債を返済し始めた話
  • Snowflakeの力を引き出すためのdbtを活用したデータ基盤開発の全貌 - CARTA TECH BLOG

    当記事は、dbtのカレンダー | Advent Calendar 2023 - Qiita の23日目の記事です。 こんにちは、株式会社CARTA MARKETING FIRMのデータエンジニア、@pei0804です。データエンジニアリングのほか、組織運営やデータエンジニア育成にも携わっています。 記事では、Snowflakeを中心とした当社のデータ基盤「Vision」と、その中核であるdbtの利用について深掘りします。dbtを活用することで、SQLのみでデータパイプラインを効率的に構築し、作業の効率化を図っています。 dbt導入の詳しい導入背景は以下のスライドでご覧いただけます:広告レポーティング基盤に、dbtを導入したら別物になった話 / tokyo-dbt-meetup-4 - Speaker Deck。 私たちのチームでは、ビジネスに直接価値を提供しているdbtモデルの開発はプロ

    Snowflakeの力を引き出すためのdbtを活用したデータ基盤開発の全貌 - CARTA TECH BLOG
  • リファクタリングをする際にソースコードの設計からはじめてはいけない - MonotaRO Tech Blog

    どうも、レコメンド商品のシステム開発をしている野川と申します。 私は、2021年にモノタロウに新卒入社し、2022年5月からレコメンド商品の開発に関わり始めました。 モノタロウのレコメンド商品は、下の図の①~④の流れでクライアントサイドで表示しています。大部分の処理はJavaScriptで構成しており、UIもそのHTML部分をjQuery(JavaScript)で作成しています。 図:レコメンド商品表の流れ 入社当時私は、ソフトウェアエンジニアとして、「可読性の低いコードは駆逐するべきだ」「読みやすいコードだけが正義である」「理解しやすいシステムだけが皆を幸せにする」と心の底から考えていました。加えて、「なぜ先輩たちは可読性の低いコードを放置して平気なのか?」と疑問を持つこともしばしばありました。 レコメンド商品周りのコードはまさに可読性の低いコードベースとなっていたため、当事者となった私

    リファクタリングをする際にソースコードの設計からはじめてはいけない - MonotaRO Tech Blog
  • 【裏技】Lambda の固定IP化にまだ NatGateway 使ってるの?

    2023/12/25 ... 【追記】アリ 背景 顔のイボやイボ痔を治療中で、年内に X のフォロワー1000人を目指している @___nix___ です。 以前から大人気の Lambda ですが、APIのコンピューティング部分で使うことも一般的になっています。 例えば外部決済システムとやり取りをするような場合に決済システム側から「接続元IPを制限しているのでGWのIPをご連絡ください」と言われるケースが少なくありません。 こんな時に今までは当たり前のようにやってきたやり方、実はそれ以外にも方法があったのでご紹介したいと思います。 現状 はい、この構成が Lambda を固定IP化する最も有名な方法です。 LambdaVPC 内に配置し、(お高い)NatGateway 経由でアクセスすることで接続元IPを固定にする方法です。 ただ、たったこれだけ?の為に VPC 構築して(お高い)N

    【裏技】Lambda の固定IP化にまだ NatGateway 使ってるの?
  • GoエンジニアがReactにチャレンジして驚いた5つのこと

    はじめに こんにちは。Magic Momentでエンジニアをしている伊藤です。 いつもはMagic MomentのプロダクトであるMagic Moment Playbookの開発に携わっています。 元々はGo言語エンジニアとしてMagic Moment Playbookのバックエンド開発に参加し始めました。 ですが、今回フロントエンドエンジニアとしてフロント側の開発に参加することとなりました。 Go言語を使っていたエンジニアReactを使い始めて驚いたこと、理解しづらかった部分などを書いていこうと思います。 これからフロントをやってみたいと思うバックエンドエンジニアの方の参考になれば幸いです。 そもそもReact.jsとは Magic Moment PlaybookのフロントエンドReact.jsを使って構築されていますが、そもそもReactとはなんなのでしょうか。 ReactはFac

    GoエンジニアがReactにチャレンジして驚いた5つのこと
  • cron で exponential backoff するツール作った

    この様に指定すると3分毎に実行されます。 とても便利ではあるのですがコマンドの実行が失敗すると、冗長なコマンド実行となり得ます。cron ではコマンドの実行が失敗し続けるとメールが運営者に繰り返し送信され続けます。 crontab にコマンドが1分毎に実行される様に投入してひとまず正常起動を確認、仕事を終えて家に返ってビールでも飲んで、さぁ寝ようかなと思った頃にコマンドが失敗し始めると、朝までメールが飛び続けます。 またウェブサービスの API を呼び出す cron ジョブを投入していたらそのウェブサービスがメンテナンスに入った、なんて事もあると思います。メンテナンス中にも関わらず無限に失敗し続ける API 呼び出しはもしかしたら BAN の対象になってしまうかもしれません。 全ては cron に exponential backoff する機能がないのが問題です。 systemd tim

    cron で exponential backoff するツール作った
  • 社内版 Rails アップグレードガイドを公開します - Timee Product Team Blog

    こちらはTimee Advent Calendar 2023 シリーズ1の25日目の記事になります。 昨日は @tomoyuki_HAYAKAWA による Swift Concurrency AsyncStreamを使ってみる #Swift - Qiita でした。 タイミーでバックエンドエンジニアをしている id:euglena1215 です。 メリークリスマス🎄 みなさんの手元にはプレゼントは届いているでしょうか。 Ruby の世界では Ruby コミッターサンタさんがクリスマスプレゼントとして新しい Ruby バージョンをリリースしてくれます。 今年は Ruby 3.3 ですね。個人的には 3.3 の YJIT がどれだけ速くなるのか楽しみです。 また、新しいバージョンのリリースにはアップグレードがつきものです。アップグレードせずには新しいバージョンの恩恵を受けることはできません。

    社内版 Rails アップグレードガイドを公開します - Timee Product Team Blog
  • 【Next.js】新規プロダクトのフロントエンドにおけるディレクトリ構成 - 通信レイヤー編 | Offers Tech Blog

    概要 こんにちは、Offers を運営している株式会社 overflow でフロントエンドのテックリードをしている Kazuya です。今回は、筆者が担当しているプロダクト「Offers MGR(オファーズマネージャー) 」で採用しているディレクトリ構成の一部について書かせていただきます。 後述しますが、「Offers MGR」では求められる要件が複雑且つ通信で取得する情報量が膨大であることからAPI関連のディレクトリ構成もやや特殊なものになっています。ベースは以前こちらの記事で紹介した「Viewsレイヤー」を拡張させる形になっています。 専用構成になっている感があるため、参考になるかは分かりませんが、ぜひ最後まで読んでいただけると幸いです。 Offersのディレクトリ構成はこちら 弊社フロントエンドのボスであるAhomu先生が担当されているOffers側のディレクトリ構成は以下の記事をご

    【Next.js】新規プロダクトのフロントエンドにおけるディレクトリ構成 - 通信レイヤー編 | Offers Tech Blog
  • 12のソフトウェア・アーキテクチャの落とし穴とその避け方

    これは、多数派が支配すべきだという意味ではない。委員会によって設計されたアーキテクチャは、肥大化し、焦点が定まらない傾向がある。私たちの経験では、理想的なバランスとは、多様な経験と視点を持つ数人の仲間が、より良い情報に基づいた決定を下すために、主張に異議を唱えることである。 再利用の目標が誤った決定を左右するようなことがあってはならない。その代わり、再利用は理にかなった場合のみ行うこと。 コード、コンポーネント、設計、あるいはコンフィギュレーションの再利用は、最初は良いアイディアのように聞こえる。経営陣は、再利用によってコストが削減され、納期が短縮され、品質が向上すると信じて、このコンセプトを推進したがる。チームは、MVPをより早く提供するために既存のアプリケーションの大部分を再利用することを決定するかもしれないし、かなり成功した製品を提供するために作成された既存のアーキテクチャを再利用す

    12のソフトウェア・アーキテクチャの落とし穴とその避け方
  • 【型好きなあなたへ】Python-Type-Challengesのすゝめ

    はじめに 先日、こんな素敵な記事を目にしました さすがTypeScriptさん。型定義の自由度が非常に高く、色んな表現が出来ます。 この問題一通りやれば、TypeScriptの型定義もマスター出来るんですかね。 ところで、実は型なし言語のPythonにも型定義が存在します。 TypeScriptJavaのように、コンパイルエラーを発生させるような強制力はないのですが、VSCodeを始めとしたエディタと協力することで、十分素敵な開発体験を送れます。 def foo(x: int): pass # VSCode拡張機能Pylanceを使用した場合、以下コードで赤波線が引かれます foo("1") ちなみに、mypyというライブラリを使用すれば、コマンドライン上で型チェックを実現することが出来ますので、皆様のCI環境に組み込むことで、型付言語とほとんど同様の強制力をもたせることができます さ

    【型好きなあなたへ】Python-Type-Challengesのすゝめ