-
LaravelでService層とRepository層を取り入れる

Laravelを使用したプロジェクトでServiceとRepositoryというLaravelの機能を使用する機会があったので、備忘録の意味も含めて紹介したい。 対象読者 Service、Repository、Controller、Modelの関係性 今回は下記の流れになる Controller →Service →Repository →Model 【Controller】①ControllerからServiceをインスタンス化し、メソッドを呼び出す❻Serviceから返ってきた整形されたデータをフロントに渡す 【Service】②Repositoryのメソッドを呼び、Controllerから受け取ったIDなどのデータを渡したりする❺Repositoryから返ってきたデータを整形し、Controllerに返す 【Repository】③クエリを記述してDBからデータを取得する❹Modelから取得したデータをServiceに返す Service層とRepository層を取り入れるメリット、デメリット メリット ・DB操作をControllerで行わない事によりControllerのコード数が増える、いわゆるファットコントローラーになる事を回避できる。 ・処理を分担する事により、可読性、保守性が向上する。 デメリット ・中〜大規模プロジェクト向けという事もあり、小規模プロジェクトでは処理を分ける事に煩わしさを感じる可能性がある 実際にやってみる 実行環境 テーブル構成はのようにしてみる id name created_at updated_at deleted_at 1 りんご 2022-01-01 2022-01-01 null 2 バナナ 2022-01-02 2022-01-02 null 3 ぶどう 2022-01-03 2022-01-03 2022-01-03 ディレクトリ構造 Controllerを作成 Serviceクラスを作成 Repositoryを作成 Modelを作成 実行結果 まとめ 以上がService層とRepository層を取り入れた実装方法となる。 今回は基礎的な処理のみの為、恩恵は感じ辛いかも知れないが実際に取り入れて頂ければ可読性、保守性の高さを実感して頂けると思う。 今後のプロジェクトでLaravelを使用する機会があった際には、積極的に採用していきたい。
-
HasuraCon’22にてHASURAwards受賞しました!

まえがき この度、会津ラボはHasuraを用いた高齢者向け医療用アプリを開発し、毎年開催されているHasuraCon’22においてHasuraを用いた素晴らしいプロジェクトに贈られる”Open Source Hero”賞を受賞しました。 HasuraCon’22についてはこちら 定期的に開催される無料のオンラインカンファレンスで、Hasuraが世界でどのような使われ方をしているか、またHasuraを用いたチーム開発ではどのような構築がされているか等を発表するイベントです。 Hasuraとは 正式名称はHasura GraphQL Engineであり、DB(Postgres)をもとにGraphQL APIを構築するオープンソースです。 PostgreSQLサーバーを建てるだけでHasura内でテーブルの作成やリレーションの設定等も可能です。 また、公式がHasura用のDockerを用意していて、起動してすぐローカル環境でHasuraが使えるようになります。 Hasuraを使った感想 GraphQLを使用することでフロント内で完結する作業が増え、バックエンドの負担を軽くすることができます。クエリを作ってすぐに実行できたり、テーブルの設定もHasuraから行えるのでシームレスに運用ができます。 また、外部APIが必要になったとしてもHasura Actionsという外部APIと連携できる機能があります。エンドポイントはあくまでGraphQLのエンドポイントだけでいいので、すっきりとした実装が可能になります。 そして、Hasuraは認証周りがしっかりしており、ユーザーレベルでの制御が容易です。JWTを読み込み取得してくる値に制限をかけるといった動作を実装できます。 Hasuraは新進気鋭の技術ということもあり、日本ではあまり情報が出回っていませんが、上記の機能を魅力的に感じたのであれば検討する価値はあると思いました。
-
無料Wi-Fiを使うと危険?安全に使うために知っておきたいVPNとは

オフィスに行かないスタイルが一般的になっていくなか、自宅では集中できない、気分転換ついでに外で仕事がしたい、出先のちょっとした時間も逃したくない、そんな様々な理由からカフェなどの無料Wi-Fiを利用して働く方が増えています。コロナ禍においては、無料Wi-Fiが使える個室をビジネス向けに貸し出すサービスなども誕生しました。 とくにWeb制作やデザイン系のお仕事では、それほどオフィスに行く必要がない場合も多く、フリーランスとして活動する方も少なくありません。そんな方たちにとって、無料Wi-Fiはとっても便利な存在です。 しかし、実はこの無料Wi-Fi、危険が潜んでいることをご存じでしょうか。今回は無料Wi-Fiを使用する際の危険性と気を付けるべきポイントについてご説明します。 便利な無料Wi-Fiにも危険が潜んでいる 最近ではカフェなどの飲食店や駅、コンビニなど、どこでも利用できる無料Wi-Fi。とっても便利ですし、パソコンを使って外で仕事をする方にとって、もはやなくてはならないものでもあります。ですが、やはりそこは『無料』。セキュリティ面で不安がないと言えば嘘になります。どのような危険が潜んでいるのか、しっかり頭に入れておきましょう。 通信内容が外に漏れる可能性がある 無料Wi-Fiのメリットと言えば、誰もがいつでも気軽に使えるという点です。だからこそ、あえてパスワードを設定していないパターンもよくあります。確かに外出中、スマホで無料Wi-Fiに接続するとき、パスワードの入力を求められることはほとんどないですよね。 手軽さというのはとても大切ですが、その反面誰もが同じWi-Fiにアクセスできるということになります。もしその中に悪意のある人がいれば、簡単に自分と誰かのやり取りや、自分が扱うデータの内容を盗み見られる可能性が出てくるのです。重大な情報漏洩のリスクがあることを忘れてはいけません。 なりすましで情報を取られてしまうことも パスワードが不要、さらに暗号化されていない無料Wi-Fiに接続しているなか、メールやネットバンクなどにログインするためのパスワードを入力するのは非常に危険です。 ここ10年間、インターネット上では悪質なサイバー犯罪が増加し無料Wi-Fi接続中のパスワードの個人情報盗難が相次いでいます。 犯罪者などの手によって個人情報が盗まれると、銀行口座などの金融情報や、盗んだ複数の個人IDを組み合わせて架空の人物を作り、他人になりすますといった犯罪行為へと発展します。 一番多く盗まれたのがクレジットカード情報で、2020年の個人情報の盗難数は、約27万件にも上り、盗まれた個人情報全体の41%といった発表もされています。また、日本クレジット協会によると、2021年のクレジットカード不正利用被害額はなんと330億円となっています。人気のフリマアプリであるメルカリでは、不正に入手したクレジットカード情報で商品を購入される被害が拡大しており、今年4月には、16億円規模の不正利用があったと報告がありました。 先にもあったように、アクセスする大勢のなかに悪い思惑を抱えた人間がいないとは限りません。自分しか知らないはずのパスワードを他人に知られてしまえば、そこから不正アクセスといった被害にあう可能性だって考えられます。さらにデータの改ざんなど、思いがけないトラブルに巻き込まれる可能性も否定できません。 有名な無料Wi-Fiの落とし穴 きちんとパスワードが設定されているし、アカウントも登録制だから大丈夫。大手通信会社が提供する無料Wi-Fiのなかには、しっかりセキュリティ対策が取られたものもあります。しかしそれを逆手にとって、安全なものに似たWi-Fiを作り出す悪い人もいるものです。うっかりアクセスしてしまえば、情報を盗まれてしまったり、データの損失・改ざんに繋がることもあるでしょう。 こちらは安全だと思っていることや、何かしら被害にあってもすぐ気づけない場合があることから、このタイプの危険にはとくに注意が必要です。 安全に使うために気を付けたいポイント 無料Wi-Fiには危険がある。とはいえ、正しい知識を身に付ければ、もちろん安全に使うことだってできます。どのようなところに気を付ければよいのか、重要なポイントを見ていきましょう。 重要な情報は扱わない いろいろなポイントがあるなかでも、とにかく一番大切なのは「ほかの人に知られてはいけない情報は扱わない」、それに尽きます。顧客についてや契約内容など、特段重要な情報はセキュリティ対策をしっかり行った社内や自宅で取り扱うようにすると安心です。 パスワード不要のWi-Fiは要注意 ここまで何度か出たように、パスワード不要=誰もが気軽にアクセスできるということです。不特定多数の人がアクセスできて、しかもこちらは誰がアクセスできるか分からない。そんな無料Wi-Fiで仕事に関するやり取りをするのはいいことだと言えません。 今はしっかりパスワードを使用している貸しオフィスなどもありますから、ネット上のやり取りが発生する仕事は場所を選んで行うようにしましょう。 Wi-FiのON・OFFをしっかり管理する 受信できる範囲内に無料Wi-Fiがあれば、自動で接続するよう設定が行える機器があります。知らないうちにWi-Fiに接続することで、無意識のうちに不正アクセスなどの被害にあってしまうことも考えられるのです。機器側の設定もきちんと把握、管理しておいてくださいね。 セキュリティ対策ソフトを導入する とくに仕事で使うPCであれば、できる限りのセキュリティ対策は行っているかと思いますが、やはり市販のソフトというのはとても優秀なものです。うっかり入り込もうとする悪いものをはじき返してくれます。悪人側の手口も巧妙になっているので完全にとは言えませんが、それでもソフトを使わないよりはずっと安心です。 おすすめは「VPN」の使用 「VPN」とは、「Virtual Private Network(バーチャル プライベート ネットワーク)」の略称で仮想的な専用線(トンネル)を構築してインターネット接続を行う仕組みです。自分のIPアドレスを隠すことで、第三者からの介入を防ぎ、安全性を高めてくれます。VPNを使用すると、安全に無料Wi-Fiに接続できるため、テレワークや旅行先など、外出先でも安心してインターネットを利用することができます。 VPN接続によってIPアドレスを変更することで、オンラインゲームやストリーミング、オンラインショッピング、動画視聴など、オンライン上のあらゆる行動の追跡が困難になります。よって、外出先に限らず、自宅で仕事をする時でも、プライベート時にも活躍するツールと言えます。 また、海外から日本のドラマや映画を視聴したい場合に、日本にいながら世界中のVPNサーバーを自由に選択し、使用することで、国や地域制限に囚われない動画視聴を楽しむことができます。 VPNはソフトやアプリを利用すれば簡単に使えるので、よく無料Wi-Fiを使用して仕事をする機会のある方は是非導入してみてください。なかでも会社のサーバーと繋いでデザインデータをやり取りする、クライアントにテストサイトを見てもらう作業が発生するなど、外部とのやり取りが多い職種の方にはおすすめです。 まとめ カフェで仕事をすると捗る、そんな方も少なくありません。しかし、みなさんがお気に入りの場所で接続する無料Wi-Fiには、さまざまな危険が潜んでいることが分りましたね。 今回の記事ではいくつかのポイントをご紹介しましたが、そのなかでもVPNは一番確実で安全な方法です。あまり馴染みがないと難しいことに感じられるかも知れませんが、使い方は難しくありませんし、ちょっと調べれば情報がたくさん出てきます。 自分のセキュリティ対策や知識に自信がないという方は、今回の内容を参考に、VPNを使用した無料Wi-Fiの接続に挑戦してみてはいかがでしょうか。
-
華麗なる Gatsby + WordPress のメールフォーム実装方法 – Contact Form 7 活用例

Gatsby + WordPress 構成の場合におけるメールフォームは、どのように実装すればいいだろうか? このエントリーでは、Gatsby のメールフォームから Contact Form 7(WP プラグイン)にアクセスしてメール送信する方法を共有したい。 はじめに Netlify にホスティングするならば Netlify Forms を選ぶだろうし、それ以外では、ホスティング先に関わらず静的サイトからアクセスできるフォームサービスも、いくつか選択肢がある。その、いずれもリーズナブルで活用できるし、専用の Web API エンドポイントとアクセスキーを設定するだけ、という簡単なものだ。 ただ、メールのフォーマットに不自由さがあったり、利用回数による課金の可能性を考えると不満がないなんてことにはならない。できるならば制約を抱えたくない。そもそも Headless CMS 枠に WordPress を用いているなら、そこでどうにかしたい。 まず候補に上がるのが、Contact Form 7 だ。WordPress のメールフォーム実装で普遍的な知名度を誇る WP プラグインである。WordPress を Headless 化していることで、各種機能やデータに REST API を介してアクセスできるようになっているわけだから、Contact Form 7 も使えるに違いないというわけだ。 動作環境について WordPress 側の準備 まず WordPress 側の準備をしよう。 以下が、メールフォームの実装に関わる WordPress プラグイン一覧だ。適宜インストールして有効化しておいてほしい。 必要なプラグイン Step 1 wp-config.php に定数を定義する。これは…
-
VSCode の配色テーマを Monokai Pro から GitHub Theme に変更した話

VSCode のテーマを Monokai Pro から GitHub Theme に変更したことを報告する。 「VSCode のテーマなにがいいだろ…」だったり「ソースコードが見ずらいような気がする…」など配色テーマに満足していないなら、このエントリーが一助となるかもしれない。 はじめに そもそも VSCode のテーマである Monokai Pro に不満はない。むしろ使い続けたいほどだ。なのに、なぜ長らく採用していた Monokai Pro を変更しようと思い至ったのかについて、まずは話しておこう。 Monokai Pro とは Monokai Pro は、従来からの Monokai 配色を VSCode 用に再設計したカラースキームで、ソースコードの配色はもちろんのこと外観テーマやアイコンセットまで及ぶ妥協のない配色テーマになっている。 また Monokai 配色の生みの親(Wimer Hazenberg 氏)によるオリジナル製で “Monokai” を冠したカラースキームにおける本家本元として人気を博している。さまざまなコードエディタで Monokai の配色テーマを含まないものはないほどだ。 そもそも、Monokai の火付け役となったのが、Sublime Text (コードエディタ)にデフォルトテーマとして実装されたことから始まる。それまでのエディタと比べても、明らかなモダンぶりに魅了されたエンジニアは少なくないと思う。 わたし自身、Sublime Text 以降のエディタ遍歴のいずれにおいても Monokai 配色を頑なに採用してきた。 配色テーマを変更した動機 さて、そんな長い付き合いの Monokai を変更しようとした事由としては、OS側の外観モードとミスマッチではないかと感じたことに端を発する。 Mac、Windows に関わらずライトモードを採用していて、モニターの中の景色は白を基調として総じて明るい。そんななかコードエディタだけダーク風味であることに「あれっ?」となったわけだ。いまさら感の強い話ではあるけれど、気になってしまったらどうしようもない。 最近、目が霞むのも、こういった影響が有るのだろうか?…
-
React Hook Form と Draft.js の組み合わせ

React Hook Form を使えばフォーム周りの state を一元管理したり、バリデーションを加えたり拡張できるけれど、Draft.js の値も組み込めるのか、というのが気になるところだと思う。 「React Hook Form で、Draft.js の state を管理したい」「React Hook Form と Draft.js を組み合わせたい」など、お困りなら力になれるかもしれない。 はじめに リッチテキストエディタを単一に配置する程度ならば、個別に state を設けるのみで済まされる。これは Draft.js 公式のドキュメントに掲載されているように、ひとつの <Editor> に対して、ひとつの editorState を設定するというものだ。 だけど実際には、リッチテキストエディタもフォームの一部であることが自然で、そこには入力フィールドがあったり、選択フィールドがあったり、チェックボックスがあったりすることだろう。 そうするとフォームヘルパー系のライブラリ(react-hook-form)によるフォーム管理が見込めるわけで、そんななか Draft.js の <Editor> だけ別途 state を定義しているのは残念に思えてくる。 どうかこれも一緒に管理できないものか、というのがこのエントリーの根幹になっている。興味を引く内容であったならば引き続きお付き合いいただきたい。 React Hook Form と Draft.js を組み合わせよう React Hook Form と Draft.js の組み合わせにおける最小構成を用意させてもらった。 実装環境 各種関連パッケージのバージョンは、以下コードを確認してほしい。 コンポーネント React コンポーネントは、以下コードを確認してほしい。…
-
ブラウザ対応まで待てない!CSS コンテナクエリ(@container)の polyfill 適用について

コンテナクエリのプロトタイプが利用できるようになって、マークアップエンジニア界隈は大きな注目を集める一方で、 Chrome Canary でフラグを有効にしなければ機能しない対応状況が、いまひとつ現場に熱をもたらさない要因となっている。 CSS に関心がある、あなたにおかれても「いつコンテナクエリを使えるのだろう」と首を長くして待たれていたことだろう。そんななか GitHub の GoogleChromeLabs アカウントからコンテナクエリの polyfill が公開された。 このエントリーでは、Container Query Polyfill について紹介したい。 CSS コンテナクエリとは CSS コンテナクエリは、対象の親コンテナのサイズに応じてスタイルを適用するためのものだ。 サイズに応じてスタイルを定義する現行の手段といえば、CSS メディアクエリ(@media)が用いられ、ビューポートを基に切り替えている。しかし、このアプローチでは制限があるとして、CSS コンテナクエリ(@container)が登場したと思われる。 たとえばサイドカラム内のコンテンツなどは、ビューポートを基にするより、親コンテナであるサイドカラムのサイズに基づいてスタイル定義したほうがスマートになる好例じゃないだろうか。 モジュラーな設計が求められる昨今のフロント開発にマッチするとして期待されている。 Container Query Polyfill を適用しよう それでは、CSS コンテナクエリ用 polyfill の container-query-polyfill を適用してみよう。 使い方 ES modules に準拠したセットアップならば、以下のコードで Polyfill を適用できる。 import に際して、パッケージがインストールされている必要があるから、事前に yarn add container-query-polyfill などで用意しておこう。 従来の読み込みが求められるセットアップならば、以下のコードで Polyfill を適用できる。 要件的に、CDNサービスから読み込めないならば、container-query-polyfill リポジトリを git clone するなりダウンロードするなどしてから…
-
【入門】HTMLを書くとき用意するもの

HTML 入門直後だと「どんな HTML 要素あるの?」だったり「どんなツールが必要なの?」だったりは、当然のように湧き上がる疑問だと思う。 わたし自身も、HTML 入門に踏み込んだころに同様のことでモヤついたのを覚えている。 数ある HTML 要素のなかから、どれを優先して覚えればいいのか、ポピュラーな HTML 要素を知りたいと望んだり、HTML を書くにあたって必要とされるツールはどれなのか、プロの立場から入門者の目線に立ってもなお役立つツールを教えてほしいと願ったりしたものだ。 このエントリーでは、そんな悩みに回答させてもらいたい。 HTML 要素を知る HTML コーディングにおいて HTML 要素の理解は、なによりも要求されるわけだが、WHATWG 勧告の HTML (Living Standard) で 100 個を超える HTML 要素が存在する。それらをあまさず習得すれば最善だろうけれど、実際に HTML コーディングしてみると、そのほんの一部しか使っていないものである。 いずれは全部覚えてもらうとして、これから HTML を覚えようという場合においては、頻出する HTML 要素から始めてみてはどうだろうか。 ここでは、ポピュラーな HTML 要素をピックアップして、お届けしよう。 基本構成 基本的な構成は、DOCTYPE宣言から始まる一連の HTML 要素で作られる。 先頭行の <!DOCTYPE> は、html 文書のバージョンを定義するためのもので必須で配置しなければならない。 <html> は html ファイルの基幹となる要素で、ほかすべての要素を包含している。 <head> は html ファイルに関するメタ情報を含める。つまりタイトルや文字エンコーディング、スタイルなどのことで、目に映らないものを対象とした梱包要素だ。 <body>…
-
[JavaScript] ISO形式の日付をミリ秒に変換する方法
![[JavaScript] ISO形式の日付をミリ秒に変換する方法](https://wordpress.aizulab.com/wp-content/uploads/2021/10/iso-date-to-milliseconds.png)
ISO形式の日付データをミリ秒にしなければならないケースといえば、UNIX時間の参照や処理経過時間の計測などだろうか。UNIX時間においては、秒単位であるが、まず日付データをミリ秒に変換する工程が必要だ。それから処理経過時間の計測では、差分を算出するためミリ秒に変換することもあるだろう。 このエントリーでは、ISO 形式の日付をミリ秒に変換するソリューションについて共有したい。 ミリ秒に変換する Date.parse() Date.parse に渡した文字列(ISO形式)に対する、1970 年 1 月 1 日 00:00:00 UTC からの経過ミリ秒で変換している。 Date.prototype.getTime() getTime による 1970 年 1 月 1 日 00:00:00 UTC からの経過ミリ秒で変換している。 数値型に変換するショートハンド + 記号(ショートハンド)によって Date オブジェクトを数値型に変換している。 UNIX時間に変換する UNIX時間は、UTC時刻における1970年1月1日 00:00:00 からの経過秒数で表される。つまりミリ秒を秒に変換できれば目的が果たされる。 では、その方法を見ていこう。 上述の手段によってミリ秒を参照できているから、それを 1000 で割ればよい。
-
Create React Appのwebpack環境をejectしないでカスタマイズする方法

Create React App の webpack 環境を eject することで隠蔽された構成ファイルが、プロジェクトフォルダに顕現する。それらファイルを直接参照できることによって webpack や babel、ESLint など、カスタマイズを可能にしている。 ところが、複雑な構成ファイルを扱うにも抵抗があったり、eject すると元に戻せなかったりとネガティブな感情を覚えてしまう。 そこで、このエントリーでは、eject せずに Create React App をカスタマイズする方法を紹介したい。 カスタマイズの準備 eject せずに Create React App をカスタマイズするにも、多少の準備が必要だ。決して難しいことではないから引き続き付き合ってほしい。 パッケージをインストールする webpack 環境をオーバーライドするのに必要なパッケージをインストールしたい。必要なパッケージは次の、 react-app-rewired customize-cra をインストールする。ついては、以下コマンドを実行してほしい。 開発環境をカスタマイズするためのパッケージであるわけだから、いずれのコマンドも –dev や –save-dev オプションを付与することで、devDependencies 所属のパッケージとしてインストールしている。 package.json を修正する package.json の scripts 項を修正する。 ここでは、eject コマンド以外の react-scripts を react-app-rewired にしているだけだ。 もともと react-scripts が隠蔽された構成ファイルを参照していたところに、react-app-rewired にすることでカスタム用構成ファイルを介入させる作りだと考えられる。…
