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 Speee Advent Calendar11日目の記事です。 昨日の記事はこちら tech.speee.jp こんにちは。株式会社Speee DX事業本部でエンジニアをしている川田と申します。 24新卒で、普段は主にRailsアプリケーションの開発業務にあたっています。 この記事では、所属するチームにおいてViewComponentというライブラリを導入し、一部改造して運用しているお話をします。 技術選定からその改造までを、開発の特性に合わせて行った例として、主に就活中の学生さんなどが開発業務への理解を深める助けになれば幸いです。 開発の特性と、純粋なRailsとのミ…
この記事は ファインディ株式会社 Advent Calendar 2024 - Adventar の11日目の記事です。 500000000兆年ぶりの投稿ですが、今回は新卒組み込みSEからWebエンジニアにキャリアチェンジしてからの9年を、GitHubの草とその傾向を一緒に振り返ってみようと思います。 大前提、あまり手が速く動くタイプではないので、草少なくないすか?w ちゃんと働いているんすか?w と感じるかもしれませんがご承知置きください。 1社目:2015年10月〜2017年5月 1社目は主にRuby on Railsを用いて、画像素材を取り扱うマーケットプレイスを運営開発している会社に在…
目次 目次 はじめに 「ツラみ」の収集 「ツラみ」の分析 負債解消へのアプローチ 案件への適用 良かった点 改善点/懸念点 まとめと今後の展望 はじめに この記事は 食べログアドベントカレンダー2024 の10日目の記事です。 こんにちは。食べログ開発本部ウェブ開発2部でサーバーサイドエンジニアをしている朽木です。 食べログのサービスを提供しているシステムの歴史は長く、蓄積された技術的負債の解消は開発効率を向上させるための重要な課題です。 古いコードや仕様の不明確さが原因となり、シンプルな要件であっても一筋縄ではいかないことがしばしばあります。 既存コードの調査をしていたが、依存関係の分かりづ…
これはHappiness Chain Advent Calendar 2024の10日目の記事です。 はじめに 今回はMVCモデルのコントローラのアンチパターンについて書いていきます。よくXなどで有識者が「Controllerになんでもかんでも処理を書くな。テストがしづらい。」と腹を立てているのを見かけます。しかし、どうテストがしずらいのかなどはコードを示さないと説明しずらいのでX上では言及されていません。そこで今回は私が本件について解説していこうと思います。テストコードと無縁な方や初学者へ向けた内容になっておりますので、ベテランの方はご指摘等いただけますと幸いです。 それではいきます。 アン…
先週、妹夫婦が喧嘩した。 あかん、まだイライラする。土曜に妹夫婦の喧嘩仲裁した。男女の友情成立するから、俺から女友達奪うなとかいう自分本位の謎ロジックで、生後半年も経たない子供おる自宅に女友達呼んで、母子放ったかして昼間からワイン開けて、女友達と楽しんどるとか、頭おかしいやろ?↓— y2m@元未経験エンジニア (@yusuke1225math2) 2024年12月1日 そのことで、妹の話を聞いたり喧嘩を仲裁したりした。 仲裁してるときは、あくまでどっちの味方もせずに、二人が理性的に話し合いできるよう努めた。 でもそれが終わったあと、思い出すとイライラが止まらなくなってきて、Xに投稿してしまった…
こちらはJava Advent Calendar 2024の8日目です。昨日はkumazoさんの「Java Foreign Function & Memory API で WebGPU を叩く」でした。 Spring Boot 3.4で構造化ロギングのサポートが入りました。以前は構造化ログにするためにはecs-logging-javaやlogstash-logback-encoderを使う必要がありましたが、とうとうSpring Bootの依存のみで可能になったわけです。 Springレベル3くらいのプログラマとして早速試してみます。 なおリファレンスはこちら。 docs.spring.io …
趣味でnamelessという写真のポートフォリオサイトを作ってます。 name-less.spaceasp.net core mvc + azure blob + cloudflareの超軽量アーキテクチャで公開サイトと管理サイトを実装してます。 そのへんの詳細はここから。 c-mitsuba.hatenablog.com namelessは写真なので基本的にjpgを扱っているのですが、今回はこれがもし動画だったら?という例え話の上でのできごと。 動画も同じようにblobに置けばよいのでは?htmlのimgタグの代わりにvideoタグでよいのでは? ドキュメントにも動画のストリーミング配信に対…
はじめに 11月2日にHappinessChainに入会し、一ヶ月が経ちました。 振り返りをしていきます。 学習時間 39h30m 学習内容 ・学習の進め方 ・質問の仕方を学ぶ ・Progateでプログラミングに触れてみよう (HTML & CSS、Command Line、Ruby、SQL、Ruby on Rails5) 良かったところ ・少ない時間でも一日も休まず学習を続けられた。 ・progateで久しぶりにHTML,CSSを学び直して、以前よりも理解が深まった。 ・Ruby on RailsのMVCの概念が理解できてきた。 問題点、改善点 ・一日の学習時間が少なかったこと。 ・学習中こ…
はじめに 自己紹介 きっかけ とある案件のおおまかな内容 1. 概要 2. 主な作業内容 3. 作業環境・条件 つまずき コードの雰囲気はこんな感じ 理想 現実 感じた問題点 1. 変数名が不明瞭 2. if文のネストが深い 3. 無駄な変数定義 4. 変数の上書きが頻発 5. 複数の無駄なループ 6. ロジックが複雑 問題点を自分なりに修正 1. 変数をできるだけわかりやすく 2. if文のネストは極力避ける 3. 無駄な変数定義は使わない 4. 変数の上書きはしない 5. ループはデータをまとめた後に行う 6. ロジックは関数に切り分ける 振り返って 書くのは自分、全て自分の責任 FBCで…
こんにちは。 re:Invent 2024参加中のアプリケーションサービス部、DevOps担当の兼安です。 今日は現地時間で12月5日です。 今日はAmazon Q Developerを用いた.NET FrameworkからLinuxへの移植のワークショップに参加してきました。 簡単ではありますがそのレポートを書いてみたいと思います。 Amazon Q Developer transformation capabilities for .NETとは Amazon Q Developer transformation capabilities for .NETの制約事項 ワークショップの流れ 感…
こんにちは!ファインディでFindy Team+開発チームのEMをしている浜田です。 この記事はFindy Advent Calendar 2024 6日目の記事です。 adventar.org 今年の上旬、フロントエンジニア向けにバックエンド勉強会を開催しました。この記事ではバックエンド勉強会を開催した目的や内容、効果について紹介します。 バックエンド勉強会を開催した背景 バックエンド勉強会の概要 バックエンド勉強会の内容 RubyやRailsの学習 VS Codeのプラグイン設定 Rails console / dbconsoleを使ってみる ruby-lang.orgを読む Railsガ…
はじめに UIKitベース時代 SwiftUIベースへの移行 1. アーキテクチャの変更 2. UIKitとの共存可能にする 3. アーキテクチャの共通化 4. SwiftUIのPreviewの有効化 結果 はじめに こんにちは。モバイルテックリードの大澤です。 普段はあすけんのAndroid/iOSアプリを開発しています。今回はUIKitをメインにしたiOSアプリにSwiftUIを積極的に取り入れるための施策を実施しましたので、その取り組みをわかりやすくまとめました。 主に前回記事の続編になります。 tech.asken.inc この記事は、株式会社asken (あすけん) Advent C…
初めに 現場で使える Ruby on Rails 5速習実践ガイドの感想を書くことで思考を整理していこうと思います! 初めに 良かった点 アプリケーション作成の流れをざっくりと把握することができる。 チーム開発の雰囲気を掴むことができる 難しかったこと Rspecテストvisitで詳細ページを表示できず躓いた。 複雑なコードへの対応(共通化) 学んだこと RailsアプリケーションとJavaScriptの関係性 アセットパイプラインの仕組みについて routes.rbの整理 最後に 良かった点 アプリケーション作成の流れをざっくりと把握することができる。 アプリケーションを作成するにあたりやる…
エンジニアキャリアでも振り返ってみるか 目的 どうせ自分が社会人一年目で何してたとか忘れてるから、備忘として 学生編 入学前 vimを知る 大学は情報学部のある学校へ。学科はCS系(情報学部の中でも文系・理系っぽい感じで分かれていた)。 斜め45度アイコンの人に浪人時代AtCoderを紹介されていたので、大学入学の1ヶ月前ぐらいにAtCoderを始めてみた。 Twitterで大学の人と絡んでいて、ツイキャスでAtCoderをしていた。 At Coderの提出エリアに直書きコーディングしていると、大学の先輩から「Vim使うといいよ」と言われたので、Vimを使うようになった。 大学入る前に準備して…
この記事は 食べログアドベントカレンダー2024 の5日目の記事です🎅🎄 こんにちは。食べログ開発本部 アプリ開発部 の高山です。 私は現在食べログオーダーのバックエンド開発のメイン担当をしております。それ以前はスマホアプリの領域を専門としておりましたが、ここ3年間はバックエンドを中心に開発しております。 今回はその経験を元に、スマホアプリ開発の考え方を活かしつつ、バックエンド開発へ乗り出していった際の考え方を記載させていただきます。 目次 スマホアプリ開発を専門領域にしてきた バックエンド開発という新たな領域へ踏み出す バックエンド開発の攻略法を考える スマホアプリ開発との類似性を見つける …