並び順

ブックマーク数

期間指定

  • から
  • まで

281 - 320 件 / 2312件

新着順 人気順

ネストの検索結果281 - 320 件 / 2312件

  • 個人開発の SwiftUI アプリのアーキテクチャを MVVM から MV にした - maiyama4's blog

    概要 SwiftUI Advent Calendar 2023 の 21 日目です。 最近趣味で iOS の podcast クライアントを SwiftUI で作っているのですが、やってみると podcast クライアントはアプリとしてそれなりに難しいことがわかってきました。作っているうちにどんどん状態管理が複雑になってきて、個人開発でなぜこんなにがんばりが必要なんだと思って開発が止まっていたのですが、最近 iOS 17 の登場をきっかけにアプリを全般的に書き直すことにして、同時にアーキテクチャを変えてみました。これにより構成がシンプルになって開発効率が上がり、開発を再開することができました。具体的には、 from: 1画面に1つ ViewModel(ObservableObject)を作り、 View から ViewModel を監視する MVVM to: View から直接 Model

      個人開発の SwiftUI アプリのアーキテクチャを MVVM から MV にした - maiyama4's blog
    • ブラウザ上のJavaScriptでの非同期処理を、今までどのように実現してきたか 「コールバック地獄」なども乗り越えてきた歴史

      Go、Python、Kotlin、Rust、TypeScript の5つの言語について「並列処理、並行処理の手法」というテーマに絞り解説する「並列処理をGo/Rust/Kotlin/Python/JSで解説!思想の違いを体感しよう」。JavaScript編では橘氏が登壇。JavaScriptが疑似的な非同期処理をどう実現しているのかと、JavaScriptの非同期処理の歴史について紹介します。 橘氏の自己紹介 橘ゆう氏(以下、橘):よろしくお願いします。風邪でめちゃくちゃ顔が死んでいるので、カメラオフでいきます。橘です。今日は「JSの非同期処理パターン Promise、async/awaitを理解する」というテーマについて話していきたいと思います。 簡単な自己紹介ですが、もともとDeNAにいて事業統合でそのままGOに移り、今は森下さん(森下篤氏)と同じチームで、主にサーバーサイドやMLOp

        ブラウザ上のJavaScriptでの非同期処理を、今までどのように実現してきたか 「コールバック地獄」なども乗り越えてきた歴史
      • 【Next.js】実務でapp routerに移行した所感

        app router とは next.js で使用できるファイルシステムベースのルーターです。以前は pages router というものがありましたが、そちらの進化系といえます。 ポイントは error.tsx や loading.tsx などの決められた名前でコンポーネントを作成することで、エラーバウンダリーやサスペンスなどの機能が簡単に利用できるようになったことです。 これにより開発速度が上がり、面倒な実装はフレームワークに任せることができます。 また、内部で RSC を使用しており、これとサスペンスにより、コンポーネントレベルで SSR と CSR を組み合わせられるようになりました。 今回はそういった機能の、弊社プロダクトにおける使用例を紹介します。 使用技術 error.tsx エラーバウンダリーです。fallback コンポーネントを書くだけで ok です。 import {

          【Next.js】実務でapp routerに移行した所感
        • 外部ユーザが安全かつ直接的に Amazon S3 へファイルをアップロードできるようにする方法 | Amazon Web Services

          Amazon Web Services ブログ 外部ユーザが安全かつ直接的に Amazon S3 へファイルをアップロードできるようにする方法 このブログは 2022 年 3 月 24 日に Anderson Hiraoka (Solutions Architect) と、Rafael Koike (Principal Solutions Architect) によって執筆された内容を日本語化した物です。原文はこちらを参照して下さい。 企業では、ファイルや画像などのデジタル資産をリポジトリに保存することが求められることが多くあります。多くの場合、これらのファイルのソースは、社内システムに接続されていないパートナーまたは個人であり、ファイルをアップロードするためには、企業の認証が必要となります。お客様は従来、ファイルのアップロードを処理するためにサーバーを使用していましたが、大量のネットワー

            外部ユーザが安全かつ直接的に Amazon S3 へファイルをアップロードできるようにする方法 | Amazon Web Services
          • 軽量な Go 製カラムナフォーマット変換ツール columnify を作った話 - Repro Tech Blog

            こんにちは。業務委託として SRE チームのお手伝いをしている @syucream です。 本記事では Repro にて開発した、 Go 製のカラムナフォーマットへのデータ変換ツール columnify について、開発背景や技術的な取り組みを紹介します。 なぜカラムナフォーマットか? ことのおこり 事業がスケールすると共に扱うログの量が増えることは、喜ばしい反面さまざまな悩みをもたらします。その中でも顕著なものの一つとしてコストの問題が挙げられます。 膨大なログデータはログに対するストレージ料金を増大させると共に、分析や可視化に際してクエリで求められるコンピュートのコストも無視できなくなっていきます。 近頃 Repro でもコンテナのログの管理においてこの問題が顕著になってきました。Repro のバックエンドシステムは ECS 上のコンテナで実現され、ログの閲覧・管理のため外部のログ収集サ

              軽量な Go 製カラムナフォーマット変換ツール columnify を作った話 - Repro Tech Blog
            • 脱Firestoreするために考えていること(追記あり) - Sweet Escape

              FirebaseのFirestoreをやめることにしたので雑なメモを残しておく。なお、まだ走り始めたばかりなので、内容には間違いや考慮不足も多数含まれる可能性があるので読む人はその点注意を。あと、あくまでも雑なメモなので細かいところは書いていない。 なぜ脱Firestoreするのか? なぜGraphQLではなくREST APIなのか? 移行にあたって検討したこと、決め事 ドキュメントIDをどう扱うか サブコレクションをどう扱うか 配列やマップといったフィールドのタイプをどう扱うか 追記: Mapの配列をどうするか Firebase Authenticationとセキュリティルールで実現しているセキュリティ機能をどうするか では実際にどんなテーブル設計にするのか 次にやること なぜ脱Firestoreするのか? まず、脱Firestoreする理由は ユースケースとしてFirestoreでは対

                脱Firestoreするために考えていること(追記あり) - Sweet Escape
              • 2023 年、改めて React と Elm Architecture を比較する - ジンジャー研究室

                最近 React のドキュメントが新しくなったということで読んでみた。第一印象としては、とにかく懇切丁寧で React というか JavaScript すら初心者という読者でも基礎的な考え方が身に付くようになっている。ただ、深い内容まで読み進めると「同じ Virtual DOM のフレームワークでも Elm とだいぶ違うな」と改めて思った。 これはどちらが良いとか悪いということではなく、一長一短あると思う。筆者は長いこと Elm を使ってきたが React も嫌いではなく、趣味を含め色々な場面で重宝している。ただ、 Elm Architecture の提供するシンプルな仕組みには依然として価値があると思っており、それがあまり世の中に知られていないのが勿体無い。というのが、この記事を書こうと思った動機である。 昔は「部分的に取り入れても Elm メリットは享受できないから Elm やってよ」

                  2023 年、改めて React と Elm Architecture を比較する - ジンジャー研究室
                • dataclassを捨ててpydanticに乗り換える

                  Pydanticが今最高にCool こんにちは、極論モンスターのYosematです。pydanticに替えてdataclassを使う理由は今ほとんどありません。pydanticがV2になったこのタイミングでpydanticに乗り換えましょう。この記事ではなぜdataclassよりもpydanticなのか理由を述べていきます。 ※2024/02/26追記 OpenAIのクライアントもPydanticを採用しました 素敵なブログからの引用。ただし現在はdataclassもslotを導入している。slotを利用して通常より高速にフィールドアクセスしたい人はattrsやdataclassもアリ。 理由① より洗練されたインターフェース pydanticをdataclassに代えて使うのはなんといってもかゆいところに手が届くインターフェースです。はっきりいってdataclassも素晴らしいライブラリ

                    dataclassを捨ててpydanticに乗り換える
                  • Vue に stale-while-revalidate がやってくる - STORES Product Blog

                    STORES でフロントエンド開発をしているushironokoです。今回は Vue でも SWR のようなしくみが使え、遠くない未来で標準的に使われることになりそうだ、という話を書きます。stale-while-revalidate とはどのようなものなのかについても簡単に解説していきます。 SWR(stale-while-revalidate) とは何か Vue や Nuxt 界隈の技術者はあまり縁がないため、そもそも SWR と称されるものが何者なのかご存知でない方も多いはずです。SWR は stale-while-revalidate と呼ばれるキャッシュ戦略に基づいたデータフェッチライブラリで、React のカスタムフックとして提供されています。つまり、元々 React 向けのライブラリとして作られたものです。 github.com stale-while-revalidate

                      Vue に stale-while-revalidate がやってくる - STORES Product Blog
                    • JavaScriptとイベントループ | NHN Cloud Meetup

                      JavaScriptの大きな特徴の1つは、「シングルスレッド」基盤の言語だという点です。スレッドが1つということは、同時に1つの作業だけを処理できるということです。しかし、実際にJavaScriptが使われる環境を考えてみると、多くの作業が同時に処理されていることが分かります。例えば、Webブラウザは、アニメーション効果を見せながら、マウスの入力を受けて処理をし、Node.js基盤のWebサーバーでは、同時に複数のHTTPリクエストを処理したりします。スレッドが1つなのに、どうしてこのようなことができるのでしょうか?質問を変えると、「JavaScriptはどのように同時実行(Concurrency)をサポートしているのでしょうか?」 このとき登場する概念が「イベントループ」です。Node.jsを導入した際、イベントループ基盤の非同期方式でNon-Blocking IOに対応して…」のような

                        JavaScriptとイベントループ | NHN Cloud Meetup
                      • Rustで作るプログラミング言語—— コンパイラ/インタプリタの基礎からプログラミング言語の新潮流まで

                        この本の概要 小さなプログラミング言語から本格的なプログラミング言語へ……ステップバイステップでの開発を通して,プログラミングそのものへの理解を深めよう! こんな方におすすめ コンピュータサイエンス,とくにプログラミング言語そのものやコンパイラについての素養を得たいと考えている人 他言語でのプログラミング経験があり,Rustの習得に興味のある人。とくに,学習のための題材を探している人 第1章:プログラミング言語概論 プログラミング言語の分類 他の切り口での分類方法 コンパイルパイプライン 第2章:スタックベース仮想マシン 仮想マシン概論 Rustでの実装 標準入力からの読み込み パースとコマンドの実行 ブロックとネスト構造 if制御構文 変数の定義 複数行のソースコードへの対応 関数呼び出し 関数の再帰呼び出し WebAssemblyへのコンパイルとブラウザでの実行 第3章:プログラミング

                          Rustで作るプログラミング言語—— コンパイラ/インタプリタの基礎からプログラミング言語の新潮流まで
                        • Webページやアプリで使用されるさまざまなアニメーションを簡単に実装できるCSSの超軽量ライブラリ -AnimXYZ

                          ページが表示された時に要素をアニメーションで表示させたり、ギャラリーで画像を出し入れするようにアニメーションで表示させたり、モーダルやタブをアニメーションで気持ちよく表示させたり、Webページやスマホアプリで使用されるさまざまなアニメーションを簡単に実装できるCSSのライブラリを紹介します。 CSSの外部ファイルとして利用できるだけでなく、Sass、VueやReactのコンポーネントも用意されており、さまざまなプロジェクトですぐに利用できます。 AnimXYZ AnimXYZ -GitHub AnimXYZの特徴 AnimXYZのデモ AnimXYZの使い方 AnimXYZの特徴 AnimXYZは、Webページやスマホアプリで使用されるさまざまなCSSアニメーションを簡単に実装できるMITライセンスのライブラリです。 アニメーションの実装が簡単 アニメーションを作成するのは非常に簡単。例え

                            Webページやアプリで使用されるさまざまなアニメーションを簡単に実装できるCSSの超軽量ライブラリ -AnimXYZ
                          • 【Flutter】わずか数分でアプリ開発!?超速アプリ開発総合フレームワーク「Masamune」

                            こんにちは。広瀬マサルです。 これまでのパッケージをまとめて統合Flutterフレームワークを作成しました。 コンセプトは 自動生成を用いて安全かつ高速に高品質のアプリを開発可能にするフレームワーク です。 使い方をまとめたので興味ある方はぜひ使ってみてください! masamune はじめに まずはこちらを御覧ください。 ※動画のサンプルコードはこちらに公開しています。 こちらはメモ帳アプリを全くの空の状態からわずか10分以内で完成させる動画です。 このMasamuneフレームワークを利用することでアプリ開発で行うコーディングの大半を削減することが可能になります。 このフレームワークは下記の機能を中心としています。 CLI(コマンドラインインターフェース)ツールによるコードテンプレートの生成 build_runner による追加コードの自動生成 つまりコードの大半を機械的に生成させることに

                              【Flutter】わずか数分でアプリ開発!?超速アプリ開発総合フレームワーク「Masamune」
                            • ブラウザ上でTypeScriptでツールを作成・実行できるサービス「Moyuk」を支える技術

                              一年以上温めに温めまくった個人開発サービス Moyuk を Product Hunt でローンチしたので、技術的な知見を書きます🚀 About Me 株式会社ヘンリー でソフトウェアエンジニア & アーキテクト的なことをしつつ、個人開発してます。 Social accounts: kohii on GitHub @kohii00 on Twitter 作ったもの 説明 詳しい説明: サービスの詳しい紹介はこちらに書いたので読んでみてください 🙏 雑な説明: Moyuk は TypeScript で書いた関数を、ブラウザ上で実行、管理、共有できる Web アプリ(”App”)に変換するプラットフォームです。 技術的要素の概要 Moyuk には一般的なアプリケーション(データの出し入れやUIの描画など)としての要素に加えて、以下のような特徴的な要素があります。 ユーザーが書いた TypeS

                                ブラウザ上でTypeScriptでツールを作成・実行できるサービス「Moyuk」を支える技術
                              • WebBundle によるコンテンツの結合と WebPackaging | blog.jxck.io

                                Intro 依存コンテンツを 1 つにまとめて配信する WebBundle の仕様策定と実装が進んでいる。 これは Signed HTTP Exchange と合わせて WebPackaging を実現するための仕様であり、組み合わせれば WebBundle に対して署名することでコンテンツの配信を通信と分けて考えることができる。 Signed HTTP Exchange に比べると格段に簡単な仕様なので、現状のフォーマットと挙動について解説する。 draft-yasskin-wpack-bundled-exchanges-latest WebBundle かつて Bundled HTTP Exchanges と呼ばれていた仕様であり、複数のコンテンツを 1 つにまとめ、配信することができる。 例えば index.html とそれが依存する css/js/favicon etc を 1 つ

                                  WebBundle によるコンテンツの結合と WebPackaging | blog.jxck.io
                                • インストール不要。ペライチHTMLでReact+TSX+Tailwind のフロントエンド一式を動かす

                                  プロトタイピング向けにペライチで最低限のフロントエンドスタックを動かす方法について。 注意: 本番で使わないでください。tailwind は CDN モードで動かしているし、 esm.sh はスクリプトを動的にビルドするのでパフォーマンスは良くないです。 前提 jsconf.jp で色々なツールを使えばそれっぽいバンドルレス実現できる(けどパフォーマンスに難)という話を書きました。 具体的には NativeESM + importmaps + esm.sh 等の組み合わせます。 <script type="importmap"> - HTML: ハイパーテキストマークアップ言語 | MDN ESM>CDN これに、 esm.sh の v135 の新機能を使って tsx をバンドルするのを組み合わせる話です。 esm.sh/run 使い方は簡単。 <!-- esm.sh からランナーをロード

                                    インストール不要。ペライチHTMLでReact+TSX+Tailwind のフロントエンド一式を動かす
                                  • Python関連記事まとめ | note.nkmk.me

                                    環境情報・設定 Pythonのバージョンを確認、表示(sys.versionなど) Pythonが実行されている環境のOSやバージョン情報などを取得 カレントディレクトリを取得、変更(移動) 実行中のファイルの場所(パス)を取得する__file__ 環境変数を取得・追加・上書き・削除(os.environ) 再帰回数の上限を確認・変更(sys.setrecursionlimitなど) コードの書き方・ルール Pythonはインデント(スペース4文字)でブロックを表す 識別子(変数名など)として有効・無効な名前、命名規則 キーワード(予約語)一覧を確認するkeyword 長い文字列を複数行に分けて書く メソッドチェーンを改行して書く pip(パッケージ管理) パッケージ管理システムpipの使い方 pipでrequirements.txtを使ってパッケージ一括インストール pip list /

                                      Python関連記事まとめ | note.nkmk.me
                                    • 脱・Atomic Design - HTML+CSSコーディングの粒度分類法(HTML Parts) - Qiita

                                      はじめに HTML+CSSコーディング専用の粒度分類を紹介します。 この仕組みは、デザインやワイヤーフレームなどの視覚情報を分解することに焦点をあて、分解した対象を部品化する流れも併せてガイド化した汎用手法です。 世の中には、コーポレートサイト / ポータルサイト / サービスサイト / システム管理画面 / ブログサイト… といった様々な種別のサイト、Webページがありますが、これらの「完成予想図(視覚情報)」を同じ方法で分解して、コーディング用の部品にできます。 粒度と言えばAtomic Designが有名ですが、この「HTML Parts」も粒度そのものの考え方についてはAtomic Designの踏襲です。その上で「思考の入り方・捉え方」や「名称と定義」をコーディング側に寄せることで、CSS設計やコーディング業務を標準化しやすくしています。 ※この記事は標準化ノウハウ公開の一環とし

                                        脱・Atomic Design - HTML+CSSコーディングの粒度分類法(HTML Parts) - Qiita
                                      • 【オフショア】ベトナムメンバと理解する「PHPリーダブルコード」 〜第1回 表面的な改善〜 - RAKUS Developers Blog | ラクス エンジニアブログ

                                        本稿では、ベトナムとのオフショア開発において利用できるよう、"リーダブルコード" の内容をもとに筆者が解釈したものを、社内用資料として日本語とベトナム語の両方で解説したものです。*1 この記事を日本チームとベトナムチームのメンバに読んでもらうことで、"リーダブルコード" の知識がチーム間の共通認識となり、プログラムコードの品質が向上することを目的としています。 全2回を予定しており、第1回である本稿は、「表面上の改善」について解説します。 Trong bài post này, tôi sẽ tóm tắt nội dung của "Readable code" và giải thích bằng cả tiếng Nhật và tiếng Việt, để có thể sử dụng trong việc phát triển Offshore với Việt Nam. Khi

                                          【オフショア】ベトナムメンバと理解する「PHPリーダブルコード」 〜第1回 表面的な改善〜 - RAKUS Developers Blog | ラクス エンジニアブログ
                                        • ひかえめにいっても最高傑作:Fitbit Charge5

                                          控えめに言ってもFitbitトラッカーの最高傑作。 Fitbitといえば、フィットネスや睡眠、ストレスのケアができるスマートウォッチやトラッカーのパイオニアのひとつ。 私はここ2年ほどFitbitのアイテムとともに過ごし、アップデートされるたびに実機を触らせてもらっています。なので、Fitbit Versa以降のスマウォやトラッカーはだいたい試してきているのですが、そんな私が「これは最高傑作では…! 」とテンション爆上がりになるトラッカーが新登場しました。それが、「Fitbit Charge 5」です。 ストイックなトラッカーFitbit Charge 4の後継機「Fitbit Charge 5」は、ストイックに体を動かして記録することに特化したフィットネストラッカーである「Fitbit Charge 4」の後継機です。ストイックさはそのまま、液晶はカラーディスプレイとベゼル幅が狭くなった

                                            ひかえめにいっても最高傑作:Fitbit Charge5
                                          • RBS基礎文法最速マスター - pockestrap

                                            RBSはRuby 3に組み込まれた、Rubyの型情報を記述する言語です。 この記事ではRBSの文法を駆け足で紹介します。 細かい話は飛ばしますが、この記事を読めば大体のケースでRBSを読み書きできるようになると思います。 事前準備 インストール まずは文法の前に、rbs gemをインストールしましょう。 Ruby 3を使っている場合、rbs gemはRuby 3に同梱されているため何もしなくても使えます。 Ruby 3未満を使っている場合でも、gem install rbsすれば使うことができます。 この記事では、rbs gem v1.0.0を対象に構文を紹介します。 $ gem install rbs Successfully installed rbs-1.0.0 1 gem installed $ rbs --version rbs 1.0.0 動作確認 書いたRBSは、rbsコマン

                                              RBS基礎文法最速マスター - pockestrap
                                            • Kubernetesの将来 - VMか、コンテナか、ハイパーバイザか?

                                              原文(投稿日:2019/05/25)へのリンク Kubernetesの将来については、対立する2つのビジョンがある。Pivotalの主任技術者であるPaul Czarkowski氏は、VMがコンテナに取って代わると予測しているが、Red Hatの副社長であるJoe Fernandes氏は、VMの利用はKubernetesにとっての進化であり、コンテナを置き換えるものではない、という考えだ。さらに、Red Hatのプリンシパル・マーケティングマネージャであるChris Short氏は、Kubernetesはハイパーバイザ(hypervisor)をまさに駆逐しようとしている、と説明する。 コンテナは、ソフトウェアの構築方法やデプロイ方法は改善したものの、仮想マシンのように安全で隔離されたサンドボックスは実現できていない、とCzarkowski氏は言う。それどころか、コンテナは共有カーネルモデル

                                                Kubernetesの将来 - VMか、コンテナか、ハイパーバイザか?
                                              • html10行、js no need、css (と画像少し) だけでこんなことができるコレクション - Qiita

                                                動機 Webフロントエンド開発で役立つサービスまとめ#Codepen および CSS Art Resourcesを読んだ。Codepenは、 HTML、CSS、JavaScriptによるコード実行環境を提供するサービスです。このサービスの特徴の1として、CSSの作品がアートワークのように多く投稿されており、世界中のCSS職人による素晴らしいギャラリーを堪能することができます。その技術はもはや 変態 職人の域に達しているものが多く、より高いレベルのCSSを組みたい場合に勉強になるでしょう。 というもの。そんなCodepen の https://codepen.io/tag/css-animation から、 CSSだけでできるあんなことこんなこと に倣い、Html10行、js no need, cssだけでこんなことができるんだ、すっげー、という私の眼力だけで選出した。役に立つかは知らない。

                                                  html10行、js no need、css (と画像少し) だけでこんなことができるコレクション - Qiita
                                                • Python 3.10の新機能:「構造的パターンマッチ」とは

                                                  ネストしたコンテキストマネジャーの簡潔な記述 分かりやすくなったエラーメッセージ デバッグやプロファイリング用に提供される行番号がより正確なものに 構造的パターンマッチ ファイル操作などでエンコーディングを明示しなかった際にEncodingWarning警告クラスを送出するようにオプトイン可能 「|」演算子を使用したユニオン型の指定 パラメーター仕様変数 型エイリアス ユーザー定義の型ガード 本稿では、これらの新機能の中で新しく追加された構造的パターンマッチ(match~case文)について見ていくことにする。なお、構造的パターンマッチについてはPEP 634、PEP 635、PEP 636で詳しく述べられている。 match~case文の概要 match~case文の構文を以下に示す。なお、「match」と「case」はソフトキーワードであり、構造的パターンマッチを行う文脈でのみキーワー

                                                    Python 3.10の新機能:「構造的パターンマッチ」とは
                                                  • Javaのクラス名の形式まとめ - プログラマーの脳みそ

                                                    Javaのクラス名の表現方法で 「全部同じじゃないですか」 「ちがいますよーーっ」 「これだからしろうとはダメだ!もっとよく見ろ!」 をやっている🤔— なぎせ ゆうき (@nagise) April 14, 2020 Java言語を扱っていると何通りかのクラス名の表記法を見ることがある nagise.sample.Hoge.Piyo nagise.sample.Hoge$Piyo nagise/sample/Hoge$Piyo [Lnagise.sample.Hoge.Piyo これらの違いは何なのか。 Javaのクラス名関連の専門用語を調べ直してみた。 用語 日本語 概要 Identifier 識別子 識別に用いるもの全般を指した抽象度の高い表現 Class Name クラス名 一般に言うクラス名。比較的曖昧な表現。文脈によってはInterfaceも含む。ネストしたクラス、内部クラスの

                                                      Javaのクラス名の形式まとめ - プログラマーの脳みそ
                                                    • Value Object (値オブジェクト) でリファクタリングしたら結構良かった

                                                      ドメイン分析とモデル化ここで「モデル化」と呼ぶのは、実装者が理解しやすいように重要な側面に注目して、端的な形に抽象化する行為であると定義します。 また、実際に実務で行なっている自身のモデル化を行う時の書き振りを近しく再現(中身は変更)しているため、わかりづらいかもしれませんが、”実務ではこうやっている” というのを理解していただければ。 先の要件を整理すると、数という概念に金額とポイントという2つのドメインモデルが含まれる。 金額とポイントという異なる概念を計算して最終的に獲得ポイント数を導き出す必要がある。 存在する制約 金額が負の数になることはありえない。ポイントが負の数になることはありえない。金額は日本円のみを考慮し、外貨は存在しない。ポイントは文脈によって呼び名が変わるが、単位は変わらない。支払い金額合計以上にポイント利用数が設定されることはない。金額に小数点は存在しない。ポイント

                                                        Value Object (値オブジェクト) でリファクタリングしたら結構良かった
                                                      • キャッシュによるRubyの正規表現のマッチングの高速化の紹介 - クックパッド開発者ブログ

                                                        9月からRuby開発チームにインターンシップとして参加している@makenowjustです。 総合研究大学院大学の学生で、普段は情報セキュリティに関する研究をしています。 インターンシップでは、キャッシュ (メモ化) を利用したRubyの正規表現の高速化を行いました。 ReDoSと呼ばれる、バックトラックが爆発することでマッチング時間が膨大になる脆弱性があります (ReDoSについては、拙作ですがWEB+DB PRESSに掲載された記事があります)。 近年、ReDoSは多く報告されており、Rubyもその例外ではありません (参考1、参考2)。 今回実装した最適化は、ReDoSを防ぐことを目的としたもので、多くの正規表現のマッチング時間が文字列の長さに対して線形となります。 ReDoSが起こる正規表現の例として、/^(a|a)*$/が挙げられます。 今回の修正の前後での実行時間を比較すると、

                                                          キャッシュによるRubyの正規表現のマッチングの高速化の紹介 - クックパッド開発者ブログ
                                                        • MisskeyのUI設計 | gihyo.jp

                                                          本連載は分散型マイクロブログ用ソフトウェアMisskeyの開発に関する紹介と、関連するWeb技術について解説しています。 今回はMisskeyのWebクライアント(Misskey Web)におけるUIデザインの工夫や各種コンポーネントについて紹介します。 なお、「⁠デザイン」という語は設計という意味と、見た目・意匠という意味がありますが、この記事ではどちらも含みます。 Misskey Webの設計思想 Misskey Webの設計思想として、「⁠デスクトップでもモバイルデバイスでも同じように使えるようにする」というのがあります。 “同じように使える⁠”とは、機能や使い勝手といった面でもそうなのですが、コンポーネント(UIを構成する個々のパーツ)レベルの話も含んでいます。 現在はこのような設計思想で開発していますが、Misskey初期の頃は、デスクトップ版Webクライアントとモバイルデバイス

                                                            MisskeyのUI設計 | gihyo.jp
                                                          • 自然言語からSQLを自動生成するDeep Learning技術 - Qiita

                                                            本記事は Towards Complex Text-to-SQL in Cross-Domain Database with Intermediate Representation(論文, リポジトリ)のサーベイ記事です。 日鉄ソリューションズ(NSSOL)様での研究開発インターンの一環として執筆しました。 今回紹介するのは、ざっくり言えば、自然言語で記述された質問からSQLクエリを生成するタスク(Text-to-SQL)において、文脈自由な中間表現を導入して性能を上げた研究で、提案モデルはIRNetと呼ばれています。 この研究ではSpider (論文, サイト) というデータセットを用いています。Spiderは従来のText-to-SQLデータセットよりも複雑な事例を多く含んでいます。 Spiderの公式サイトで挙げられている難易度が中くらい(Meidum)の例がこちらです: 複数テーブ

                                                              自然言語からSQLを自動生成するDeep Learning技術 - Qiita
                                                            • CUE言語(cuelang)に入門しよう

                                                              Abstruct 本記事においては、The CUE Configuration Languageを用いて設定ファイルを記述することはどのようなメリットがあるのか。また、どのような使い方が想定されるのかについて議論する。 私は、実際の開発現場において、各マイクロサービスチームがKubernetesのManifestを生成するテンプレートとして活用している。 そのため、KubernetesのManifestをcuelangを用いて記述している。(この件に関する記事は現在執筆中だ。) その経験から、CUE言語がどのような言語であるかについてここで述べることにする。 Keyword: CUE, cuelang, configuration, 設定記述言語, JSON, YAML, Kubernetes, manifest Introduction あなたは普段どんな設定記述言語を利用しているだろう

                                                                CUE言語(cuelang)に入門しよう
                                                              • ドメイン駆動設計を参考にしながらJava×SpringBootで家計管理アプリを自作 - Qiita

                                                                2-3. 使用技術 アプリケーション作成 Java 17.0.2 Spring Boot 3.0.3 Spring Security 6.0.5 JOOQ 3.17.8(ORマッパー) データベース MySQL 8.0.32 UI HTML(Thymeleaf) CSS(Bootstrap 5.0.2) JavaScript(Chart.js 4.3.0) インフラ Fly.io (https://fly.io/) PlanetScale (https://planetscale.com/) 3. 実装するにあたって意識したこと 実務未経験者が初めて作成するアプリなので、何も考えずに作るとコードが無秩序な状態に陥ってしまうのではないかと思い、何かしら方針を決めたいと考えました。以前、書籍『現場で役立つシステム設計の原則』を読んだ際に、保守や変更に強いソフトウェアを作るための設計思想に「ドメ

                                                                  ドメイン駆動設計を参考にしながらJava×SpringBootで家計管理アプリを自作 - Qiita
                                                                • [Go] レイヤードアーキテクチャの階層構造を守らないimportを警告するlinterを作った - My External Storage

                                                                  Goでクリーンアーキテクチャ等のレイヤードアーキテクチャを実装するための静的解析ツールを作った。 「webhandlerパッケージからusecaseパッケージを使わずに直接domainパッケージを使わないで!」というような、やってほしくないimportをエラーにできる。 https://github.com/budougumi0617/layer TL;DR クリーンアーキテクチャなどのレイヤードアーキテクチャでは、利用できるパッケージに制限がある レイヤー間の依存関係は一方向のみ 同じ層、あるいは1つ下の層のパッケージしか利用してはいけない https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html Goは循環importができないので、自然に単方向依存は満たしやすい しかし、層を飛び越して、2

                                                                    [Go] レイヤードアーキテクチャの階層構造を守らないimportを警告するlinterを作った - My External Storage
                                                                  • 理想のUIをめざして!Webでハーフモーダルを作って磨き上げた話 - Tabelog Tech Blog

                                                                    こんにちは!飲食店システム開発部オーダーチームの開発エンジニアを担当している堀口です。 食べログオーダーは、レストランでの飲食体験をより快適にするためのモバイルオーダーシステムです。飲食店に来店したお客様が自身のスマートフォンを使用してQRコードを読み取り、Web上でメニューをカートに追加し注文することができます。メニュー選択や注文操作はWebでありながら、ハーフモーダルを使用したネイティブアプリのような注文体験ができます。 この記事では、モバイルオーダーシステムのUI改善に焦点を当てます。ハーフモーダルの採用がどのようにして決定されたのか、その開発プロセス、そして実際に達成された改善点について詳しく掘り下げていきます。Reactを使用したフロントエンド開発で遭遇した課題と、それらをどのように解決したかの具体例を紹介します。 目次 なぜ「ハーフモーダル」を採用したか ハーフモーダルの導入と

                                                                      理想のUIをめざして!Webでハーフモーダルを作って磨き上げた話 - Tabelog Tech Blog
                                                                    • いざ「Kubernetesを使おう!」となって発生する8つの問題

                                                                      Itamar Turner-Trauring 科学計算から分散システムまでを得意とするソフトウェアエンジニア。Kubernetesのローカル開発ライブラリ「Telepresence」をゼロベースで設計した経歴を持つ。 この記事は、著者の許可を得て配信しています。 https://pythonspeed.com/articles/dont-need-kubernetes Dockerを使用している場合、その次にKubernetes、別名K8sを使うのが自然な流れのようです。これが本番環境での実行方法ですよね? まあ、おそらくそうでしょう。同じアプリケーションで作業する500人のソフトウェアエンジニア向けに設計されたソリューションは、50人のソフトウェアエンジニア向けのソリューションとはまったく異なります。 また、どちらも5人のチーム向けに設計されたソリューションとも全く違うものです。 自分が

                                                                        いざ「Kubernetesを使おう!」となって発生する8つの問題
                                                                      • 【Flutter】個人開発でゲームレビューアプリをリリースした話

                                                                        個人開発でゲームレビューアプリ「clip-games」 をリリースしました! 今回の記事はサービスの紹介と技術周りの話をまとめたいと思います。 同じように個人開発している人の参考になったり、モチベーションを上げられたりすると嬉しいです! リリースしたサービス ダウンロードはこちら: iOS: Android: 何が出来るの? 自分が遊んだゲームの感想・レビューを残すことが出来ます。 ファミコンからPS5まで、5000本近くのタイトルからあなたが遊んだゲームのレビューを残すことが出来ます。 他の人のレビューやそのゲームの評価も見ることが出来ます。 遊びたいと思ったゲームや気になっているゲームをクリップすることが出来ます。 クリップしたゲームはいつでもプロフィールからすぐに確認できるので、ふとゲームがやりたくなったときにすぐに思い出すことが出来ます。 書いたレビューはSNSでシェアすることが出

                                                                          【Flutter】個人開発でゲームレビューアプリをリリースした話
                                                                        • JavaScript の Module Fragments について

                                                                          現在 TC39 の 3 月のミーティングのアジェンダが GitHub にて公開されている(Link)。 それによると、Module Frangments という新しいプロポーザルが@littledan氏によって提案される予定だ。 この記事では、現在の Module Frangments の概要とモチベーション、構文について解説する。もしさらなる詳細に興味がある場合は https://github.com/littledan/proposal-module-fragments を読んでほしい。 また、Module Fragments は現在 Stage 0 の提案であり、今後仕様が大きく変わっていくことが予想されるのでその点には注意してほしい。 概要 Module Fragments はインラインで JavaScript のモジュールを定義するための構文を導入する提案である。詳細は後述するが

                                                                            JavaScript の Module Fragments について
                                                                          • 理解しやすいコードの書き方~理解容易性の7つの観点~ - Qiita

                                                                            はじめに 「理解容易性」は「保守性」の観点の1つとして重視され、多くの原則や技法が紹介されているが、断片的かつ多様であり、全体像を理解することは難しい。 抽象度は高いが、体系的に観点を整理する事で、その理解の助けとなれば幸いである。 定義 「理解容易性」を簡単に言えば、「理解のしやすさ」であるが、その意味から掘り下げると、「思考する量」と言い換えることができる。 本記事では理解容易性を「思考量の少なさ」と定義し、7つの観点に整理した。 先に要約およびチェックリストを記載し、概略を記載した。 後に詳細で理解のため、各観点毎の説明と個別の原則や技法へのリンクを記載した。 要約 7つの観点の要約を先に示す。 (変数や関数の)名称は分かりやすくする (変数や関数の)役割は1つにする (変数や関数の)参照は狭くする (変数や関数の)状態は変えられなくする (関数やクラスの)面積は小さくする (関数や

                                                                              理解しやすいコードの書き方~理解容易性の7つの観点~ - Qiita
                                                                            • Flutter を MVVM で実装する

                                                                              (この記事は 2020/08/28 時点での記事になります。設計のトレンドは日々変わりますので最新のトレンドを確認してください。) はじめにこの記事は Flutter Architecture Blueprints の解説記事です。 今回は Flutter アプリを MVVM で実装する上でどういう形にしていったかを解説していきたいと思います。Android エンジニアにとって脳内変換出来そうなキーワードも使っていきます。 実はアーキテクチャを解説するのはあまり好きではなく、この形が合理的だと言っても、そのエンジニアの経験と趣味思考の違いで話が合わなくなることがあると思っていて、それが押しつけになっていることがあります。なのでこれが完璧だと捉えないでください。私も勉強中の身です。 Flutter Architecture BlueprintsMVVM は Model–View–ViewMo

                                                                                Flutter を MVVM で実装する
                                                                              • 部分型における変性と極性 - なぜScalaの変性は+や-で指定するのか - 貳佰伍拾陸夜日記

                                                                                この記事はScala Advent Calendar 2022の19日目です. Scalaではジェネリック型の変性(variance)は+や-で指定しますが, 他の言語(たとえば, C#, Kotlin)ではoutやinだったりします. この記事では変性の意味を整理して, なぜScalaでは+/-の記号を使うのか説明します. 追記ただし, ここで説明している内容は基本的にC#やKotlinでも成立する(はずな)ので「なぜこれらの言語では+/-の記号を使わないのか」を説明するものではありません. 個人的には+/-の方がわかりやすいと思うし, out/inの記法は扱っている概念が簡単であるかのような誤解を生む(悪く言えば騙す)のでどちらかと言うと嫌いです. 発端 こういう話題がありました. Scala は共変が + で、反変が - なので理論重視? なのに対して、Kotlin と TypeSc

                                                                                  部分型における変性と極性 - なぜScalaの変性は+や-で指定するのか - 貳佰伍拾陸夜日記
                                                                                • フロントエンド未経験のSREエンジニアが挑んだ技術選定のリアル体験 - RAKUS Developers Blog | ラクス エンジニアブログ

                                                                                  こんにちは!株式会社ラクスの@kzak_24と申します。 インフラ開発部 SRE課に所属しております。 さて今回は、現在アサインされている新規システムの開発プロジェクトにて、フロントエンドの技術選定を担当した時の経験をまとめようと思います。 フロントエンドは未経験だった為、色々と試行錯誤を行いました。 未経験なりにどのような基準を設けて技術選定を行なったか、皆さまの意思決定の参考になれば幸いです。 目次 SREチームの紹介 前提 チームの背景 検討内容と採用理由 言語 / FW 状態管理 スタイル テスト まとめ 最後に SREチームの紹介 まず始めに、少しだけSREチームについて紹介させてください。 ラクスのSREチームは2021年に発足した比較的新しい組織であり、下記の2つのチームに分かれています。 BP(Business Platform)チーム 社内業務システムの開発/保守/運用を

                                                                                    フロントエンド未経験のSREエンジニアが挑んだ技術選定のリアル体験 - RAKUS Developers Blog | ラクス エンジニアブログ