Model View Control。オブジェクト指向プログラミング言語の元祖のひとつ「Smalltalk」にも使用されていたアプリケーション・アーキテクチャ。アプリケーションをModel(ロジック)、View(プレゼンテーション)、Controller(通信、制御)の3つの部分に分割して、それぞれを独立して開発していくというもの。
みなさまこんにちは、おさかなです。今回の記事では、ソフトウェアアーキテクチャのひとつであるMVVMモデルについて、その仕組みや考え方を、関連するMVCモデルも含めて紹介したいと思います。ソフトウェアアーキテクチャを意識することで、記述するコードが規則によって分けられることで格段に読みやすくなり、保守も容易になります。本記事では、これからソフトウェアアーキテクチャを学ぼうとしている方、興味がある方にとって理解の一助になれば幸いです。 ソフトウェアアーキテクチャとは MVCモデルとは? 注文データ(Model) 注文システム(View) 注文管理システム(Controller) MVVMモデルとは…
genieframework.github.io MVCアプリケーションを作る サーバの起動 まずはMVCとは ja.wikipedia.org Model: データベース操作などのビジネスロジック View: ユーザーインターフェースの表示 Controller: ユーザーの操作を受けとる REPLにて julia> using Genie julia> Genie.Generator.newapp_mvc("Watch Tonight") Please choose the DB backend you want to use: 1. SQLite 2. MySQL 3. PostgreS…
初めに アプリの構造を考えたときに、MVCかMVVMかどちらにするか悩むことがあると思います。私はこれまでJavaのSpringBootの業務アプリばかり作ってきましたので、MVCにはなじみがあり理解しているつもりですが、MVVMは実務で触ったことがなく、あまりなじめずにいました。 ただ、最近フロントエンド開発にも関わりだし、Reactを触る機会がありました。その中でなぜMVVMがよくわかっていなかったのかつかめたので、忘れないうちにまとめておこうと思います。同じようなことで悩まれている方の参考にあれば幸いです。 MVCとは MVCとは、Model/View/Controllerの3要素で成り…
こんにちは! スマレジ テックファームのMichiです! みなさんはFlaskというフレームワークをご存知でしょうか? FlaskはPython製のマイクロWebフレームワークで、MVTモデル(Model, View, Template)というアーキテクチャを採用しています。 ですが、「やっぱり使い慣れたMVCの枠組みで実装したい!」ということで、今回はFlaskを無理やりMVCっぽく運用する方法を解説します。 解説 ディレクトリ構成 基本設定 認証系 コンフィグ データベース Flaskインスタンスの作成 モデル ルーティング コントローラ まとめ 解説 アプリのサンプルはFlask公式ドキ…
こんにちは! スマレジの テックファーム(SES 部門)のWebエンジニア やまて(@r_yamate) と申します。 はじめに 前回の記事(④登録機能の作成)で、商品データを Products テーブルに登録する、登録機能を作成しました。 本連載の目次 本連載では以下の順序で進めています。 ① Docker での開発環境構築 ② Zend Framework のインストール ③ 一覧画面の作成 ④ 登録機能の作成 ⑤ 編集・削除機能の作成(今回) ⑥ バリデーションメッセージの日本語化 目次 はじめに 本連載の目次 目次 本記事完了時点のソースコード 商品管理ページの構成 1. 編集機能の作…
こんにちは! スマレジの テックファーム(SES 部門)のWebエンジニア やまて(@r_yamate) と申します。 はじめに 前回の記事(③一覧画面の作成)で、Webサービスのトップページとなる一覧画面を作成しました。 本連載の目次 本連載では以下の順序で進めています。 ① Docker での開発環境構築 ② Zend Framework のインストール ③ 一覧画面の作成 ④ 登録機能の作成(今回) ⑤ 編集・削除機能の作成 ⑥ バリデーションメッセージの日本語化 今回は、商品データを Products テーブルに登録する、登録機能を作成します。 目次 はじめに 本連載の目次 目次 本記…
こんにちは! スマレジの テックファーム(SES 部門)のWebエンジニア やまて(@r_yamate) と申します。 はじめに 前回の記事(②Zend Framework のインストール)で、Zend Framework の Welcome 画面を表示できました。 本連載の目次 本連載では以下の順序で進めています。 ① Docker での開発環境構築 ② Zend Framework のインストール ③ 一覧画面の作成(今回) ④ 登録機能の作成 ⑤ 編集・削除機能の作成 ⑥ バリデーションメッセージの日本語化 目次 はじめに 本連載の目次 目次 本記事完了時点のソースコード 商品管理ページ…
ER図は以下のツールを使いました。とても便利でした。無料です。 Flowchart Maker & Online Diagram Software 1対1のリレーション hasOne() イメージはこんな感じ Tweet_userモデルでTweet_contentを用意する public function Tweet_content() { return $this->hasOne('App\Tweet_content'); } このようにすることでプロパティにアクセスする感覚でリレーション先の値を得ることができる。 Tweet_content()と定義したが、以下のように()はいらない。 T…
モデルクラス内の入力必須プロパティを、局所的に無効化する方法です。
プログラミングを学ぶ上で 重要なフレームワークの1つである 「MVC」とは何かを プログラミング初心者の目線から 説明していきたいと思います。 MVCとはModel、View、Controllerを 略したものあり それぞれプログラムの設定を記載する フォーマットみたいなものです。 このMVCの設定をすることで Webアプリが動くのです。 では、それぞれにどのような 設定がされることによって、 僕たちが普段利用している Webアプリは動いているのでしょうか。 僕たちは普段、Webアプリケーションに触れるとき、 どのような情報を扱うでしょうか。 今まさに目にしているのは 文章という文字情報ですし…
この記事は 食べログアドベントカレンダー2024 の5日目の記事です🎅🎄 こんにちは。食べログ開発本部 アプリ開発部 の高山です。 私は現在食べログオーダーのバックエンド開発のメイン担当をしております。それ以前はスマホアプリの領域を専門としておりましたが、ここ3年間はバックエンドを中心に開発しております。 今回はその経験を元に、スマホアプリ開発の考え方を活かしつつ、バックエンド開発へ乗り出していった際の考え方を記載させていただきます。 目次 スマホアプリ開発を専門領域にしてきた バックエンド開発という新たな領域へ踏み出す バックエンド開発の攻略法を考える スマホアプリ開発との類似性を見つける …
本業でAPIの設計からテストまで携わることになり、テストについていろいろ調べている時にAPIテストをCIに組み込んでいる記事が散見された。 今後、すべてのテストをCIに含めていく動きがあるので、APIテストも組み込めてしまったほうがいいだろうと思ったので早速実践してみた。 今回はPOSTMANとNewmanを使ってテストを行っていく。 CIへの導入は行わず、あくまでAPIテストにしぼった内容にする。 環境 Visual Studio 2022 .NET 8 Windows11 簡易なAPIを作成する APIは下記の記事を参考にC#で作成した。 C#で簡単なWebAPIサービスを作成する - Q…
この記事は、Money Forward Engineering Advent Calendar 2024 12/4 の投稿です。 12/3 は VTRyo さんで SRE Kaigi 2025に 「一人から始めたSREチーム3年間の歩み -求められるスキルの変化とチームのあり方-」で登壇します でした。 adventar.org こんにちは、マネーフォワードでバックエンドエンジニアをしている @hktechno です。 現在、マネーフォワードでは、バックエンド開発においてこれまでの Ruby on Rails に加えて、サーバーサイド Kotlin の導入を推進しています。 私は現在、これから…
こんにちは!ドイです。 2024年11月29日に、『InfiniCloud 株式会社』様が開催するエンジニア勉強会に、弊社土居(私)が登壇する機会をいただきました。 勉強会の内容について書いていきたいと思います。 2024年7月26日の勉強会には弊社小林が登壇いたしました。 詳細の記事はこちらです。 tech.arms-soft.co.jp ADRって何だろう? 今回の勉強会では、『ADRってなんだろう?』という内容で発表をしました。 ADRについては、過去のブログでも触れています。 tech.arms-soft.co.jp tech.arms-soft.co.jp 今回は、ADRとは何かを、…
おはようございます。こじまです。 先日、インドネシア バリ島にあるマリオット・バリ・ヌサドゥア・テラス(Marriott Bali Nusa Dua Terrace)に滞在しました。 wakuwakutrip.hatenablog.com マリオット・バリ・ヌサドゥア・テラスについては上記の記事に記載しましたが、今回はお部屋について記載したいと思います! マリオット・バリ・ヌサドゥア・テラスはマリオット・バケーション・クラブ(MVC)の施設なので、長期滞在に便利なものがそろっています。 今回はマリオット・バリ・ヌサドゥア・テラスの2ベッドルーム(2BR)のお部屋について徹底紹介したいと思います…
アーキテクチャConference 2024に参加しました。非常に得るものが多く有意義なカンファレンスでしたので、実プロジェクトに活かしていくためにここで学んだ内容をまとめていきます。 1. カンファレンス情報 2. どんなカンファレンス? 3. 参加の目的 4. セッションの内容と学んだこと 組織やプロジェクトが求める要素の特定が先、アーキテクチャは後 アーキテクチャ検討のための技術 リアーキテクチャ・リファクタリングのためのアプローチ 意思決定の記録を残す 5. まとめ 1. カンファレンス情報 カンファレンス名:アーキテクチャConference 2024 開催日時: 2024/11/2…
はじめに .NET 9に更新する DBマイグレーション時のエラーを無視 ログの設定 WebApplicationBuilderとWebApplicationの変更 Primary Constructor その他 おわりに はじめに この記事は C# Advent Calendar 2024 の第一日目の記事です。 なお以前.NET 5から.NET 6にアップグレードする記事を書いていましたね。 まるで成長していない…。 ともあれ、.NET 9リリースおめでとうございます👏。 UpgradeProjectSample - GitHub .NET 9に更新する とりあえず 以前と同じように .NE…
今年に入ってIT系カンファレンスによく参加するようになりました。目的は少しでも自分自身が携わる開発をよりよいものにしたいというざっくりとしたもの。 毎回、参加してはX(旧Twitter)に散文的に感想を流すのみでしたが、少しでもインプットとアウトプットの好循環を作りたいと初ブログ投稿です。 今回は、浜松町コンベンションホール & Hybirdスタジオで開催されたアーキテクチャConference 2024についてとなります。 architecture-con.findy-tools.io 私の頭の中のまとめ ・時代の変化に追随するためにはアーキテクチャは進化していく必要がある。 ・進化させてい…
Hello there, ('ω')ノ セキュリティ学習用ツールWebGoatは、セキュリティ脆弱性を理解し、それを修正するスキルを習得するための学習環境を提供します。また、今回は補助ツールとしてWiresharkやcurlも使用します。 環境の準備 1. 必要なツール Docker: WebGoatや関連アプリケーション(WebWolf、crAPI)を簡単にセットアップ可能。 Wireshark: ネットワークトラフィックをキャプチャして、API通信の内容を分析。 curl: HTTPリクエストを送信するためのコマンドラインツール。 2. インストールと起動 WebGoatとWebWolfを…
こんにちは、業務委託としてスマートバンクにジョインしているサーバーサイドエンジニアのakshimoと申します! この記事はSmartBank Advent Calendar 2024の11日目の記事です。 きのうはカスタマーサポート&スポンサー担当のnyancoさんの記事「なぜスマートバンクはテックカンファレンスに本気でやれるのか」でした。 今回は「業務委託から見たスマートバンク」と題して、社員ではない人間から見てスマートバンクという会社はどうなの?ということについて、カルチャー、技術、プロダクトの3点から書いていきたいと思います。 業務委託という立場ではありますが一切の忖度なしでお送りしてい…
spring-bootでは@ControllerAdvice / @RestControllerAdviceによりcontollerの例外処理を一か所にまとめられる。このエントリでは例外が発生してadviceのメソッドが実際に呼び出されるまでのコードを追う。 ソースコードのバージョンはこれを書いてる 2024/11 月頃のgithubを参照しているが、余程大規模な変更がされない限りそこまで大きくは変わらないとは思う。 例外発生時の流れ DispatcherServletから例外リゾルバに解決を依頼 まずはDispatcherServletから始まる。これの詳細は省略するが、簡単に言えば各con…
JavaのWebフレームワーク事情 変わらないなーと思っていても、気が付いたら大きく変わっているのがJavaの世界です。Webフレームワークも例外ではありません。今からWebフレームワークを採用する基準は、Webフレームワークの元祖ともいえるStrutsが出てきた時期からは大きく変わっています。 しかし、そこで最新事情をチェックしておくか、と「Java Webフレームワーク」などで検索をしても、検索で出てきたものを並べてみただけのようなものが多く、なかなか参考になるようなサイトにたどりつけません。 ということで、前編・後編の2回に分けて最近のJavaのWebフレームワークがどうなっているかをま…
先日、大学院で技術経営を学んで良かったこと、の話をしました。 blog.mtb-production.info そういえば、進学前に会計などお金に関する知識も身につけたいと思っていて、それも理解が進んだと思ってます。 その話を書いておきます。
Bill One Entry*1の秋山です。 本題へ入る前にお知らせです。12/23、TypeScript を活用した型安全なチーム開発をテーマにイベントを開催します。弊社社員のうち、TypeScript を日々の開発で活用しているメンバーが登壇します。ぜひお気軽にご参加ください。 sansan.connpass.com はじめに モジュラーモノリスとは 保守性が低いとビジネスに悪影響を与える 技術的負債と開発生産性 コード品質とビジネス影響 モジュール分割の方針 方針1:モジュールにDBテーブルを専有させる 補遺:モジュラーモノリスとNoSQL 方針2:モジュール内をレイヤードアーキテクチャ…
先週は意図せずしてプチバズってた 新現場でAWSキャッチアップするぜ投稿 今の現場、AWSなんてほとんど触ったことないのに配属されてるんだけど、ゴリゴリにCICD組まれてたりCloudFormationでインフラコード化してたり、勉強したかった身としては涎が止まらない。活きてるコードに触れる。本当にチャンスもらった。この機会を絶対手放さない。— y2m@元未経験エンジニア (@yusuke1225math2) 2024年11月9日 エンジニア界隈燃えやすい話題辞典の投稿 エンジニア界隈で燃えやすいお題・SES or 自社開発・休日に勉強するorしない・Mac or Win or Linux・ス…