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アプリケーションに触れるとき、 どのような情報を扱うでしょうか。 今まさに目にしているのは 文章という文字情報ですし…
About arXivに掲載されたcs.AIの論文を検索し、一部をリスト化したものです。 ※AIによってAbstractを日本語に翻訳しており、内容に誤りがある可能性があります。 リスト件数: 38件 リストから抽出されたキーワード: Contrastive Learning, Graph Neural Networks, Diffusion Models From Superficial Patterns to Semantic Understanding: Fine-Tuning Language Models on Contrast Sets http://arxiv.org/abs/2…
あけましておめでとうございます。本年も何卒ご贔屓のほど宜しくお願い申し上げます。 毎年、年末に総括をして年明け*1に目標の設定をしています。初笑いついでにお付き合いのほどを。 振り返り:2024年の目標について racchie.hatenablog.com 2024年の目標を再掲します。 覚えたいこと オウンドコンテンツ拡充 仕事獲得について 毎年のように、それぞれについての振り返りから始めます。 「覚えたいこと」について 正直言うと、「覚える」という行為自体がキツくなってきています。言うまでもなく、年齢のせいだと思っていますが、必要のないことを無理やり覚えることが難しくなってきました。例えば…
今年はの冬休みは出かけたり作業に集中したりして恒例の振り返りが書けなかったのでこの時期になってしまった。 ただ2024年は色々と挑戦した年だったが上手くいったこともあるし、良くなかったこともある年だった。 勉強会や交流会に参加 経営者同士の交流会に誘われて参加した。結果から言うとちょっと自分には今のタイミングではないなと感じたので退会した。悪い場所ではないと思うし合う人には合うと思うが、子どもが小さいタイミングで優先して継続的に参加するのは難しかった、、 ただそれ以外の勉強会やiOSエンジニアの交流会にも参加してああエンジニアの勉強会はこういう感じだったなあと思いだした。 年初の個人開発やめる…
引っ越しに向けて最後の大型連休…。2025年はミレニアムな2000年から25周年ということで、何かと色々と区切りの年になりそうですね。2025年もよろしくお願いします。
はじめに 今月は技術ブログを書いたのと、情報処理安全確保支援士の学習をメインに進めました。 情報処理安全確保支援士の問題は、得意なジャンルや解いた経験が豊富なジャンルだと、そこそこの点がとれるようになってきました。 ただし、少しひねったものだったり、初見のジャンルだと4割程度だったりするので悩ましいです。 Zenn Playwrightで、テスト実行時のブラウザ設定を検証する Playwrightの小ネタで、技術ブログを書きました。 zenn.dev 書籍 図解即戦力 システム設計のセオリーと実践⽅法がこれ1冊でしっかりわかる教科書 設計にフォーカスしたものを、あまり読んだことがなかったので参…
2024年がもう終わろうとしています。今年は個人開発は惨憺たる状況でしたが、半分以上は予想外にしごと(いろんなレベル)が舞い込んできて、常に何かしらに気を取られていた(いる)状況だったということがあります。まあ1年分を振り返るのは時間がもったいないので、今月分だけ書きます(1年分については、こっちではなくgithub.ioのほうにまとまっています)。 experiments 今月も引き続きプラグインホストみたいなやつを作っていたのですが、半分以上はWebViewを使ったWeb UIをどう構築したもんかな…とこねくり回していたように思います。この辺の知見はある程度たまったら公開したいところです(…
対象読者 自社SaaS以外の業種から自社SaaSを提供する企業に転職する人、転職した人 自社SaaSを提供する企業に就職を考えている人 はじめに これから自社SaaS企業に入社する方が今後行う業務においては、単に動作するアプリケーションを作るだけでなく、そのアプリケーションを長期的に保守・運用し続けることになります。 リリースした後も頻繁に機能改善やバグ修正、ビジネス要件の追加などが求められるため、コードが長い期間にわたって生き続けることになります。 こうした背景から、近年注目されている設計手法にドメイン駆動設計(DDD)やクリーンアーキテクチャなどの考え方があります。 こうした設計手法が注目…
gigazine.net ザキルリン氏によると、認知負荷を一言で言うと「開発者がタスクを完了するためにどれだけ考える必要があるか」になるとのこと。 開発者が速攻でプロジェクトを片付けるのに重要なポイント「認知負荷」とは? - GIGAZINE 平均的な開発者は、コードの変数の値、制御フロー ロジック、呼び出しシーケンスなどの要素を平均して4つほど頭に入れて作業を進めることができますが、この基準を超えた認知負荷が発生すると、途端にコードを読むのが難しくなります。 開発者が速攻でプロジェクトを片付けるのに重要なポイント「認知負荷」とは? - GIGAZINE ⇧ これ以外にも、外部ライブラリの使い…
アドプラットフォーム事業で開発運用業務を行っているアプリケーションエンジニアの山本です。 私は2024年4月にアドウェイズに新卒入社して、現在はオンプレミスからパブリッククラウドへの移行を中心とした業務を担当しています。 2024年も残りわずかとなりましたが、皆さんにとって今年はどんな一年だったでしょうか? 私にとって今年は学生から社会人へと変わる節目の年であり、多くの学びと成長の機会に恵まれた一年でした。 また、同期のエンジニアとも仲良くなることができました。 特に、富士山を見るために山梨県・静岡県まで車を走らせて一泊二日の旅行をしたのはとても楽しかったです。 さて、今回の記事では、新卒1年…
これはInfocom Advent Calendar 2024 23日目の記事です。 下記のリンク、知識としては前々から知っていたのですが、プロジェクトが移ろいゆくなかで埋め込まれてしまったバグが見つかったので記事にします。 qiita.com バグの現象 社員を登録しようとすると、社員番号が既に登録されており、登録できない(画像はイメージです)。 社員番号はユニークなのでバリデーションをかけているが、意図せぬ結果らしい。 よくよく調べてもらうと、どうやら[00001]と[00001 ](末尾に空白あり)という社員番号で起こるとのこと。 ここまで聞いてピンと来た、この仕様のしわざだと(再掲)。…
ユーザ削除のフロー クライアントがリクエストを送信 Controllerクラスがリクエストを受けて、Serviceクラスを呼出す ServiceクラスがRepositoryクラスを呼出す RepositoryクラスでMyBatisを使ってユーザ削除を行う 1.ユーザリストの修正 ユーザ管理ページに削除用のリンクを作っていたが、よくよく考えるとリストから削除するユーザを選択するほうが使い勝手いいと思ったため、ユーザリスト画面から削除できるように修正する。 <body> <h1 class="mt-3">ユーザ一覧</h1> <!-- フォームで削除リクエストを送信 --> <form actio…
動画学習やってます。 www.youtube.com 最新回ではMVCモデルにおけるMであるModelクラスをKotlinで作成する、ということをやりました。 通常Dataクラスに必要な記述として、メンバ変数、コンストラクタ、getter、setter、equals・hashCode・toStringなどのメソッドが必要ですが、 クラスの宣言の前に「data」とつけると、Kotlinはそれをdataクラスと認識し、それら変数やメソッドを全て勝手に実装済みの状態にしてくれるみたいです。 つまり、記述しなければいけないのは次のようなコンストラクタでもらう引数のみ: めちゃ記述量少なくていいですね!
## 等尺性収縮が筋力トレーニングに与える長期的な効果 等尺性収縮(アイソメトリック収縮)は、筋肉の長さを変えずに力を発揮する収縮様式であり、筋力トレーニングにおいて特有の長期的な効果をもたらします。以下に、その効果を詳しく解説します。 --- ### **1. 筋力の向上** 等尺性収縮は、特に最大随意収縮(MVC: Maximal Voluntary Contraction)を高める効果が顕著です。これは、筋力トレーニングにおける神経系の適応と筋肉の力発揮能力の向上に関連しています。 - **神経系の適応** 等尺性収縮は、運動単位の動員効率や発火頻度を向上させ、筋力発揮の効率を高めます[…
1.index.htmlを表示させる。 @Controller public class IndexController { @GetMapping("/") public String index() { return "index"; } } ・("/")はルートパスを指すため、Webアプリケーションの最上位URLにアクセスしたときに呼び出されるメソッドに対して指定する。 ・localhost:8080にアクセスしたときにindex.htmlが表示される。 ・"src/main/resources/templates/index.html"に配置しておく。 2.index.htmlから画面…
Javaの三層アーキテクチャ Javaの三層アーキテクチャは、ソフトウェア開発でよく使用される階層化設計パターンであり、以下の3つの層で構成されています。 プレゼンテーション層(Presentation Layer) UI層とも呼ばれ、ユーザーとのインタラクションを担当します。 ビューとコントローラーを含み、ユーザー入力を受け取り、出力を表示します。 主なフレームワーク:Spring MVC、JSFなど。 ビジネスロジック層(Business Logic Layer) サービス層とも呼ばれ、アプリケーションのコアとなるビジネスロジックを処理します。 サービスクラスやビジネスルールを含み、データ…