ディープラーニングとは?機械学習と何が違うの? - ますみのブログ

ますみのブログ

パソコンとかプログラミングに関するあれこれ発信してます
ディープラーニングとは?機械学習と何が違うの?のサムネイル

ディープラーニングとは?機械学習と何が違うの?

2023年04月25日

このエントリーをはてなブックマークに追加

こんにちは!エンジニアのますみです!

 

本日はディープラーニングとは何か解説します!

 

ますみ

実はもう身近なところで役に立っている技術です!

 

 

 

それではさっそく見ていきましょう

 

ディープラーニングとは?

ディープラーニングは機械学習の一種で、人工的に作られた脳みそを使って、たくさんのデータから自動的に学び問題を解くことができるようにする技術です。

 

例えば、犬の写真をたくさん見せることで、自動的に犬を見分けることができるようになったり、音声をたくさん聞かせることで、自動的に話し言葉を理解することができるようになったりします。

 

 

 

ディープラーニングの特徴

機械学習は、人工的に作られたアルゴリズムによって、データからパターンを見つけ、問題を解決することができる技術です。つまり、人が手作業で設計したルールに基づいて、機械がデータを解析し、予測をするということができます。

 

ディープラーニングは、脳の神経細胞を模倣したアルゴリズムを用いて、データから自動的に特徴を学習し、問題を解決することができます。

つまり、データを入力し、脳の神経細胞を模倣したアルゴリズムが自動的に特徴を抽出し、その特徴を元に予測を行うということができます。

 

つまり、機械学習は人工的に設計されたルールに基づいて問題を解決するのに対し、ディープラーニングは脳の神経細胞を模倣したアルゴリズムを用いて自動的に特徴を学習し、問題を解決することができるという違いがあります。

 

覚えておきたいキーワード『ニューラルネットワーク』

ニューラルネットワークは先ほど出てきた脳の神経細胞を模倣したアルゴリズムのことです。

 

後ほど詳しく解説しますが、ニューラルネットワークは画像や音声認識、自然言語処理などの分野で使用されており、現在では機械学習やディープラーニングの分野で欠かせない技術となっています。

機械学習を学ぶ上で非常によく出てくるキーワードなので、是非覚えておきましょう!

 

 

まとめ

  • ディープラーニングは機械学習の一種
  • 脳の神経細胞を模倣したアルゴリズム(ニューラルネットワーク)を持つことが特徴
  • ディープラーニングはデータから自動的に特徴を学習し、問題を解決することができる

 

 

ディープラーニングの起源と歴史は?

1950年代~1960年代 : ニューラルネットワークの発展

ディープラーニングの原点は、ニューラルネットワークの発展にあります。

 

1950年代から1960年代にかけて、初期のニューラルネットワークが開発されました。

しかし、当時はコンピューターの処理速度が遅く、計算リソースが限られていたため、深層のニューラルネットワークを構築することができませんでした。

 

1980年代 : バックプロパゲーションの開発

1980年代に、バックプロパゲーションというニューラルネットワークの学習アルゴリズムが開発されました。

これにより、多層のニューラルネットワークを訓練することができるようになりました。

 

2000年代 : ディープラーニングの再興

2000年代に入り、計算機の処理速度が飛躍的に向上したことで再びディープラーニングの研究が進むようになりました。

また、画像認識や音声認識の分野で、ディープラーニングが成功を収めるようになりました。

 

2010年代 : 深層学習のブーム

2010年代に入るとディープラーニングによる成果が目覚ましいものになり、深層学習という言葉が注目を集めるようになりました。

深層学習とは、多層のニューラルネットワークを用いて高度な分類、データの特徴を見つける処理を行う機械学習の手法の一つです。

 

現代 : 人工知能は身近なものになり、身の回りに人工知能を使ったサービスが溢れてきた

Chat-GPT等のサービスもそうですし、音声認識、自動運転等、様々な場面で人工知能を使ったサービスや製品が使われています。

これもディープラーニングによる高度な機械学習の成果といえるでしょう。

 

 

ニューラルネットワークとは?ディープラーニングとの関係は?

ニューラルネットワークは、脳の神経細胞を模した数学的なモデルであり、入力データに対して処理を行って出力を生成することができます。

ディープラーニングは、ニューラルネットワークを用いた機械学習の手法の一つです。

 

具体的には、ディープラーニングでは多数のニューロンを組み合わせた深層ニューラルネットワークを使用し、多くのデータから自動的に特徴を抽出してより高度な分類や予測を行います。

つまり、ディープラーニングは、ニューラルネットワークを利用した一種の機械学習手法であり、より複雑な問題に対応できる点が特徴です。

 

ディープラーニングを用いた応用事例にはどのようなものがあるの?

ディープラーニングは様々な分野で応用されており、その応用事例は非常に多岐にわたっています。以下に代表的な応用事例をいくつか挙げてみます。

 

画像認識

ディープラーニングを用いた画像認識技術は、自動運転車や監視カメラなどの分野で活用されています。

例えば、交差点や歩道上にある標識や信号機の認識、車両や人物の検出などがこれにあたります。

 

自然言語処理

自然言語処理は人工知能の中でも注目されている分野の一つで、言語処理を自動化する技術です。

ディープラーニングを用いた自然言語処理技術は、文章の分類や要約、翻訳などに活用されています。

例えば、スマートフォンの音声認識や機械翻訳がこれにあたります。

 

音声認識

音声認識 ディープラーニングを用いた音声認識技術は、音声アシスタントやスマートフォンの音声認識、音声操作などに利用されています。

 

医療分野

医療分野でも、ディープラーニングを用いた診断支援システムや治療予測モデルの開発が進んでいます。例えば、X線画像やMRI画像からの疾患の診断、がんの腫瘍検出、脳波データの分析などがこれにあたります。

 

ゲームAI

ディープラーニングを用いた強化学習技術は、将棋や囲碁、ポーカーなどのゲームAIの開発に利用されています。人間のプレイヤーに勝利することを目的とし、高度な戦略を編み出すことができます。

 

 

以上、いくつかの代表的な応用事例を紹介しましたが、ディープラーニングは非常に多彩な技術であり、今後も様々な分野での応用が期待されています。

 

 

ディープラーニングを学ぶために必要な数学の知識は?

ディープラーニングには様々な数学の知識が必要ですが、最低限以下の知識が必要になります。

 

線形代数

行列の基礎的な演算やベクトルの概念を理解する必要があります。特に、ニューラルネットワークの重みやバイアスを表す行列演算について理解する必要があります。

 

解析学

微積分と勾配降下法について理解する必要があります。微積分は関数の微分や積分を計算するために必要です。勾配降下法は、ニューラルネットワークの学習に必要なアルゴリズムの一つであり、関数の勾配を計算して最小値を求める方法です。

 

確率・統計学

確率や統計学について理解する必要があります。特に、ベイズ推定や確率分布について理解することが必要です。また、モデルの評価指標としてよく使われる損失関数についても理解する必要があります。

 

ただし、これらの知識が完全に身についていなくても、ディープラーニングに触れることは可能です。初めは基礎的な概念や手法に集中して学び、必要に応じて数学的な知識を深めていくことができます。また、現在は様々なフレームワークやライブラリが存在するため、数学的な知識が足りなくても、それらのツールを利用してディープラーニングの学習や実装を行うことができます。

 

 

ディープラーニングを学ぶために必要なプログラミング言語は?

ディープラーニングは様々なプログラミング言語で作ることができますが、比較的ディープラーニングに向いている言語はPythonです。

Pythonはディープラーニングのフレームワークやライブラリが豊富に存在し、また機械学習の分野で幅広く使用されているため学習に適しています。

 

ただし、ディープラーニングの実装には高度なプログラミングスキルが必要となることがあります。まずはPythonの基本的な文法を学び、その後にディープラーニングのフレームワークを利用するためのライブラリの使い方などを学んでいくことが大切です。

 

ディープラーニングを実装するために必要なライブラリやフレームワークとは?

ディープラーニングを実装するためには、プログラミング言語とともに、ライブラリやフレームワークが必要になります。以下に代表的なライブラリやフレームワークを紹介します。

 

TensorFlow

Googleが開発したディープラーニング用のオープンソースライブラリで、大規模なニューラルネットワークを扱うことができます。

 

Keras

Pythonで書かれたオープンソースのニューラルネットワークライブラリで、簡単にニューラルネットワークを構築することができます。

 

PyTorch

Facebookが開発したオープンソースのディープラーニングフレームワークで、ニューラルネットワークの構築や学習を簡単に行うことができます。

 

Caffe

カリフォルニア大学バークレー校が開発したオープンソースのディープラーニングフレームワークで、画像認識などのタスクに特化しています。

 

MXNet

Amazonが開発したオープンソースのディープラーニングフレームワークで、高速な学習と高いスケーラビリティを実現しています。

 

 

これらのライブラリやフレームワークを使用することで、簡単にディープラーニングモデルを構築し、学習することができます。ただし、それぞれのライブラリやフレームワークには特徴があり、どのツールを使用するかは目的や環境に応じて選択する必要があります。

 


 

最後まで読んでいただきありがとうございました!

 

質問や、こんなことを記事にしてほしい!というのがありましたらTwitterのコメント等で受け付けていますので、お気軽にどうぞ!

ますみ - 愛知県在住の20代プログラマー - | @mashmy_98

 

それでは次の投稿もお楽しみに!

よかったらSNSシェアお願いします!

facebookで共有する このエントリーをはてなブックマークに追加
ディープラーニングとは?機械学習と何が違うの?のサムネイル

この記事を書いた人

ますみ

愛知県在住の20代プログラマーです!

プログラミングと無縁の専門学校を卒業して働き出しましたが、コロナ禍でほぼ無職に...

無職時代に独学でプログラミングを勉強して、未経験からめでたくプログラマーとして採用していただけました。

このブログを見た方が、わたしが独学で勉強していた時期に悩んでいたことで悩まないように...そう願いながら情報を発信しています!

ますみ

愛知県在住の20代プログラマーです!

プログラミングと無縁の専門学校を卒業して働き出しましたが、コロナ禍でほぼ無職に...

無職時代に独学でプログラミングを勉強して、未経験からめでたくプログラマーとして採用していただけました。

このブログを見た方が、わたしが独学で勉強していた時期に悩んでいたことで悩まないように...そう願いながら情報を発信しています!

ますみ

愛知県在住の20代プログラマーです!

プログラミングと無縁の専門学校を卒業して働き出しましたが、コロナ禍でほぼ無職に...

無職時代に独学でプログラミングを勉強して、未経験からめでたくプログラマーとして採用していただけました。

このブログを見た方が、わたしが独学で勉強していた時期に悩んでいたことで悩まないように...そう願いながら情報を発信しています!

おすすめレンタルサーバー


当サイトはXserverを利用しています。 HTML、CSSで作成したホームページはもちろん、wordpress、Laravel等で作成した高度なアプリケーションも利用可能です!

おすすめ記事


Zero-Shotプロンプティングとは?わかりやすく解説!

こんにちは!エンジニアのますみです!本日はZero-Shotプロンプティングについて解説していきます!Zero-ShotプロンプティングとはZero-Shotプロンプティングとは回答例などを含まないプロンプトで人工知能(AI)に回答を求めることです。わかりやすく回答例としましたが、サンプルと言ったほうが本来の意味合いに近いですプロンプトとは、人工知能(AI)に対してどんな質問や指示を出すか、どんな言葉を使って話しかけるかを決めることです。プロンプトにはAIから的確な回答を得るために、回答例を書いておくテクニックがあります。プロンプト以下の質問に答えてください。回答は1. 材料名、2. 材料名の形式で答えてください質問: 目玉焼きの材料を教えてください。回答: 1. 卵質問: 苺ジャムの材料を教えてください。AIの回答回答: 1. 苺、2. 砂糖上の例では以下の質問に答えてください。回答は1. 材料名、2. 材料名の形式で答えてください質問: 目玉焼きの材料を教えてください。回答: 1. 卵質問: 苺ジャムの材料を教えてください。この部分が回答の例になります。Zero-Shotプロンプティングでは質問: 目玉焼きの材料を教えてください。の部分が無い状態でAIに回答を求めます。Zero-Shotプロンプティングの例プロンプト次の様子を最高、普通、最低に分類してください大好物の焼肉を食べてお腹いっぱい回答最高上記の例では回答例(サンプル)が無くてもAIが適切な回答をしてくれました。AIは事前に学習された大量のデータから、大好物の焼き肉を食べてお腹いっぱいな状況は最高だ!と推測できるように学習されているということです。シンプルな質問であればこのように回答例(サンプル)をプロンプトに含まないZero-ShotプロンプティングでもAIは的確な文章を出力します。複雑な質問にはZero-Shotプロンプティングは不向き回答の形式を具体的に指定したい等、複雑な指示の場合はAIから欲しい回答を得られない可能性が高いです。その為、指示の内容によっては回答例(サンプル)を含むプロンプトを使う必要があります。回答例(サンプル)を含むものはFew-Shotプロンプティングと言う少数の回答例(サンプル)を含むプロンプトでAIに回答を求めることをFew-Shotプロンプティングと言います。プロンプト以下の質問に答えてください質問 : 目玉焼きの材料をリスト形式で教えて回答 : 1. 卵質問 : 苺ジャムの回答をリスト形式で教えて回答 :AIの回答1. 苺2. 砂糖3. レモン汁回答 : 1. 卵の部分が回答例(サンプル)になります。まとめ Zero-Shotプロンプティングとはサンプル無しのプロンプトでAIに回答を求めること シンプルな指示であればZero-Shotプロンプティングでも的確な回答を得られる 複雑な指示にはZero-Shotプロンプティングは不向き最後まで読んでいただきありがとうございます!質問や、こんなことを記事にしてほしい!というのがありましたらTwitterのコメント等で受け付けていますので、お気軽にどうぞ!ますみ - 愛知県在住の20代プログラマー - | @mashmy_98それでは次の投稿もお楽しみに!

Read More

機械学習とは?簡単にわかりやすく解説!

こんにちは!エンジニアのますみです!本日は機械学習とは何かをわかりやすく解説していきます!テーマ どのサイトよりも機械学習についてわかりやすく解説 機械学習とは何かがわかる 身近なところで活躍する機械学習を使ったサービスがわかる目次 機械学習とは?簡単にわかりやすく解説! SNSがユーザーが興味のある投稿を選んで表示するときの機械学習のしくみ つまり機械学習は『関連付け』と『連想ゲーム』をベースにしている 正確に情報を表示するには大量のデータが必要 機械学習における『多数決』とは まとめ 機械学習はコンピューターがデータから共通点を見つけて関連付けをしていくこと 学んだ共通点を元に私たちの役に立つ機能が作られているそれではさっそく見ていきましょう機械学習とは?簡単にわかりやすく解説!機械学習とは、コンピュータがデータを学び、問題を解決する方法を覚えるための技術です。機械学習はすでに私たちの身近で活躍しており、例えばSNSでは ユーザーが興味のある投稿を選んで表示する 悪意のあるコメントや投稿を非表示にするといった機能がありますが、これらはコンピューターが機械学習で学んだことを活かして投稿の表示、非表示をしているのです。SNSがユーザーが興味のある投稿を選んで表示するときの機械学習のしくみ例えばあなたがSNSで『箱根』というキーワードで投稿の検索をしたとします。すると画面には箱根に関連する投稿が表示されると思います。表示された投稿には、本文に箱根という言葉が含まれているものが表示されます。ここまではまだ機械学習を使っていません。コンピューターは本文に箱根が入っている、入っていないかどうかで判定をしているだけですね。さて、表示された投稿の中には箱根という言葉が含まれていないものや、草津や下呂、道後などについての投稿も表示されることがあります。これが機械学習を使った結果になります。SNSは機械学習によって『箱根』が『温泉旅行』に関連することを知っているこれはあなたの前に『箱根』と検索した人や、『箱根』についての投稿のデータから、SNSが『箱根』が『温泉旅行』に関連するということを学習済みのため草津や下呂、道後などについての投稿も表示できるのです。もしあなたの前に『箱根』と検索した人が、その後『草津』『下呂』などのキーワードで検索したとします。するとコンピューターは『箱根、草津、下呂は関連性があるのでは?』と判断します。また『箱根』についての投稿の本文内には『温泉』や『旅行』というキーワードも含まれていることが多いと思います。するとコンピューターは『箱根、温泉、旅行は関連性があるのでは?』と判断します。それによりSNSは『箱根』というキーワードから『温泉、旅行、草津、下呂、道後』などのキーワードを連想して、検索結果を表示することができます。つまり機械学習は『関連付け』と『連想ゲーム』をベースにしているこのようにSNSではこれまでのユーザーの操作、投稿などから共通点を見つけてキーワードを関連付けして学びます。そして覚えたキーワードで連想ゲームをして表示する投稿を選ぶということをしています。正確に情報を表示するには大量のデータが必要『箱根』と検索した後に『旅行、草津』などの温泉旅行に関連するキーワードで検索をするとは限りません。急に温泉旅行と全く関係のないもの、例えば『ペット』について調べたくなったり『おしゃれなカフェ』について調べる人もいます。そんな感じで、人間の行動は必ずしも関連性がはっきりしているわけではないため、SNSの投稿を表示する機能では正確な情報を表示するための工夫がされています。簡単に言えば機械学習では『多数決』をとって正確な情報を表示する仕組みを作っています。機械学習における『多数決』とはSNSのユーザーのAさんが『箱根道後犬』という順番で検索をしたとします。Bさんは『箱根道後スポーツカー』という順番で検索をしたとします。Cさんは『温泉名物メイク』という順番、Dさんは...というように、SNSは大量のデータを元にユーザーが検索をするときの動きを学習します。そして大量のデータから傾向として多いものを多数決で選んでキーワードを関連付けすることで情報を正確にしていくことができます。このようにSNSのユーザーは知らず知らずのうちに多数決に参加して、情報を正確にすることに役立っています。もしもSNSのユーザーがAさんとBさんしかおらず、検索のデータが『箱根道後犬』と『箱根道後スポーツカー』しかなければ、道後と犬、道後とスポーツカーは関連性がある!というようになってしまうのです。そのため機械学習には大量のデータが必要不可欠と言えます。まとめ機械学習はコンピューターがデータから共通点を見つけて関連付けをしていくことざっくりですが、機械学習とはこういうことです。正確に関連付けをするには大量のデータが必要であり、かつどれくらい共通点があれば関連があると判断するのかを決めるという部分も重要になります。学んだ共通点を元に私たちの役に立つ機能が作られている私たちは知らず知らずのうちに機械学習による便利なサービスに協力しています。既に身近なところで機械学習は活かされていて、これからどんどん便利な世の中になっていくと思われます。最後まで読んでいただきありがとうございました!人工知能は既に私たちの身近で活躍しており、研究も目まぐるしい速さで進んでいるのでどんどん生活を便利にしてくれると思います。これからは人工知能を作る、人工知能をうまく扱う人が求められる時代になるでしょう。質問や、こんなことを記事にしてほしい!というのがありましたらTwitterのコメント等で受け付けていますので、お気軽にどうぞ!ますみ - 愛知県在住の20代プログラマー - | @mashmy_98それでは次の投稿もお楽しみに!

Read More

人気記事


簡単に管理画面を作れるlaravel-adminのセットアップ方法を解説

こんにちは!エンジニアのますみです!本日はlaravel-adminのセットアップのやり方を解説します!laravel-adminとは PHPフレームワーク『Laravel』用の管理画面用ライブラリ 管理人用テーブル、管理画面のレイアウト、CRUDが一瞬で作れる リレーションにも対応した便利なフォームが既に準備されているlaravel-adminの公式ドキュメントはこちら目次 インストール コマンドで管理人のアカウントを作成する Modelから管理画面を作成する 管理画面にログインしてルーティングの設定を完了するインストールcomposerを使ってインストールしますcomposer require encore/laravel-admin:1.*インストールが完了したら以下のコマンドを実行しますphp artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider"configディレクトリ内にadmin.phpが作成されます。admin.phpを編集して管理画面に関する様々な設定を行うことができます。その後、以下のコマンドを実行してセットアップを完了しますphp artisan admin:installこのコマンドを実行するとapp/Adminapp/Admin/Controllers/HomeController.php app/Admin/Controllers/AuthController.php app/Admin/Controllers/ExampleController.phpapp/Admin/bootstrap.phpapp/Admin/routes.phpが作成されます。特に編集することが多いのはapp/Admin/routes.phpです。このファイルを編集してテーブルごとのルーティングを定義します。app/Admin/Controllers/ExampleController.phpはサンプルとして作成されるだけなので消してしまっても良いです。コマンドで管理人のアカウントを作成する以下のコマンドを実行すると管理人アカウントを作成できます。php artisan admin:create順番にユーザーネーム、パスワード、名前を聞かれるので入力していきます。 Please enter a username to login: ますみ Please enter a password to login: Please enter a name to display: ますみこのように表示されたら完了です。User [ますみ] created successfully.http://localhost:8000/adminにアクセスして、先ほど設定したusernameとpasswordを入力してログインできます。管理画面ダッシュボードはこんな感じです。Modelから管理画面を作成するlarave-adminはadmin:makeコマンドを使用して管理画面を作成できます。php artisan admin:make 作成するコントローラー名 --model=モデルのパス例えばこのようなモデルがあったなら?phpnamespace App\Models;use Illuminate\Database\Eloquent\Factories\HasFactory;use Illuminate\Database\Eloquent\Model;class Blog extends Model{ use HasFactory; protected $fillable = [ 'title', 'text' ];}こんな感じでBlogモデルの管理画面を作成できます。php artisan admin:make BlogController --model=App\\Models\\Bloglaravel-adminは自動でテーブルのカラムを読み込み管理画面を設定してくれますが、マイグレーションを行う前に上記のコマンドを実行してしまうと、空のコントローラーが作成されてしまいます。ターミナルには親切にapp/Admin/routes.phpにこのコードを追加してねと表示されると思います。INFO App\Admin\Controllers\BlogController [C:\Users\mashmy\laravel-admin\app/Admin/Controllers/BlogController.php] created successfully.Add the following route to app/Admin/routes.php: $router-resource('blogs', BlogController::class);app/Admin/routes.phpに上記のソースコードを追加しないと、作成したBlog用管理画面にアクセスできません。app/Admin/routes.php?phpuse Illuminate\Routing\Router;Admin::routes();Route::group([ 'prefix' = config('admin.route.prefix'), 'namespace' = config('admin.route.namespace'), 'middleware' = config('admin.route.middleware'), 'as' = config('admin.route.prefix') . '.',], function (Router $router) { $router-get('/', 'HomeController@index')-name('home'); $router-resource('blogs', BlogController::class);});このようにルーティングの設定をします。コントローラーを作成するたびにapp/Admin/routes.phpを編集してルーティングの設定を行っていきます。作成されたコントローラーはこんな感じで、カラムを自動で読み込みセットアップしてくれています。?phpnamespace App\Admin\Controllers;use App\Models\Blog;use Encore\Admin\Controllers\AdminController;use Encore\Admin\Form;use Encore\Admin\Grid;use Encore\Admin\Show;class BlogController extends AdminController{ /** * Title for current resource. * * @var string */ protected $title = 'Blog'; /** * Make a grid builder. * * @return Grid */ protected function grid() { $grid = new Grid(new Blog()); $grid-column('id', __('Id')); $grid-column('title', __('Title')); $grid-column('text', __('Text')); $grid-column('created_at', __('Created at')); $grid-column('updated_at', __('Updated at')); return $grid; } /** * Make a show builder. * * @param mixed $id * @return Show */ protected function detail($id) { $show = new Show(Blog::findOrFail($id)); $show-field('id', __('Id')); $show-field('title', __('Title')); $show-field('text', __('Text')); $show-field('created_at', __('Created at')); $show-field('updated_at', __('Updated at')); return $show; } /** * Make a form builder. * * @return Form */ protected function form() { $form = new Form(new Blog()); $form-text('title', __('Title')); $form-textarea('text', __('Text')); return $form; }}このままではブログの管理画面にはアクセスできません。管理画面から作成した管理ページを表示するための設定を行う必要があります。管理画面にログインしてルーティングの設定を完了する管理画面にログインしたら画面左側のメニューからMenuをクリックします。表示された画面で先ほどコマンドで作成したBlog用管理画面へのルーティングを設定します。Parentはメニューのどこに表示するかを指定できます。ROOTにした場合は左側のメニューバーにそのまま表示されます。この状態で例えばAdminを設定すると、メニューバーのAdmin内のリストに追加されます。Titleは好きな名前で大丈夫ですが、URLはテーブル名を指定する必要があります。今回はParentにROOTを指定したので、メニューバーにアイコンが追加されました。作成されたアイコンをクリックまたはマウスカーソルを当てると、指定したタイトルのボタンが表示されます。今回はTitleはブログと指定したのでブログと表示されます。ボタンをクリックするとブログ用の管理画面にアクセスできました。右上のNewボタンをクリックすると編集画面にアクセスできます。編集画面は既にTitleとText用のフォームが自動で設定されています。素晴らしい...データを保存する処理も自動でやってくれているので、このまま編集してSubmitをクリックすれば入力したデータがデータベースに保存できます。おしまいこんな感じで簡単に管理画面のセットアップができました!Laravelの管理画面用ライブラリの中では有名なものだと思っているのですが、意外と記事が無かったので解説記事を書いてみました!質問や、こんなことを記事にしてほしい!というのがありましたらTwitterのコメント等で受け付けていますので、お気軽にどうぞ!ますみ - 愛知県在住の20代プログラマー - | @mashmy_98それでは次の投稿もお楽しみに!

Read More

文字が一文字ずつ現れるアニメーションの作り方【HTML、CSS】

こんにちは!エンジニアのますみです!本日はCSSで作れる文字が一文字ずつ表れるアニメーションの作り方とサンプルを紹介します!目次 一文字ずつペラペラ現れるアニメーション 文字が下からスライドして現れる 文字が上からふわっと降ってくる 一文字ずつ横からスライドして現れるそれではさっそく見ていきましょう一文字ずつペラペラ現れるアニメーションS a m p l e T e x t再生HTMLdiv span class='text' style="animation-delay: 0s"S/span span class='text' style="animation-delay: 0.2s"a/span span class='text' style="animation-delay: 0.4s"m/span span class='text' style="animation-delay: 0.6s"p/span span class='text' style="animation-delay: 0.8s"l/span span class='text' style="animation-delay: 1s"e/span span class='text' style="animation-delay: 1.2s" /span span class='text' style="animation-delay: 1.4s"T/span span class='text' style="animation-delay: 1.6s"e/span span class='text' style="animation-delay: 1.8s"x/span span class='text' style="animation-delay: 2s"t/span/divCSS.text { display: inline-block; font-size: 2rem; font-family: "Ryumin ExtraBold KL"; letter-spacing: -0.15rem; animation: text-animation 0.8s forwards; transform: rotateY(90deg);}@keyframes text-animation { 0% { transform: rotateY(90deg); } 100% { transform: rotateY(0deg); }}@keyframesはCSSでアニメーションを定義できるプロパティです。transformと:hoverや:focus等の疑似クラスの組み合わせでもアニメーションは作成可能ですが、@keyframesは より複雑なアニメーションが作れる マウスホバーやフォーカス等の操作に関係なくアニメーションをスタートできるといったメリットがあります。Sample Textという文字を一文字ずつspanで区切り、文字ごとにアニメーションをスタートするタイミングを変えることで順番に文字が現れるアニメーションを作ることができます。文字が下からスライドして現れる再生HTMLdiv class="container" span class='text' style="animation-delay: 0s"S/span span class='text' style="animation-delay: 0.2s"a/span span class='text' style="animation-delay: 0.4s"m/span span class='text' style="animation-delay: 0.6s"p/span span class='text' style="animation-delay: 0.8s"l/span span class='text' style="animation-delay: 1s"e/span span class='text' style="animation-delay: 1.2s" /span span class='text' style="animation-delay: 1.4s"T/span span class='text' style="animation-delay: 1.6s"e/span span class='text' style="animation-delay: 1.8s"x/span span class='text' style="animation-delay: 2s"t/span/divCSS.container { overflow: hidden;}.text { display: inline-block; font-size: 2rem; font-family: "Ryumin ExtraBold KL"; letter-spacing: -0.15rem; animation: llfsdi-text-animation 0.8s forwards; transform: translateY(3rem);}@keyframes text-animation { 0% { transform: translateY(3rem); } 100% { transform: translateY(0rem); }}基本的な部分は先ほどと同様、@keyframesとanimation-delayによるアニメーション開始時間の調整で作ることができます。親要素にoverflow : hiddenを指定して、文字が下の方にいる時に表示されないようにします。文字が上からふわっと降ってくる再生HTMLdiv span class='text' style="animation-delay: 0s"S/span span class='text' style="animation-delay: 0.2s"a/span span class='text' style="animation-delay: 0.4s"m/span span class='text' style="animation-delay: 0.6s"p/span span class='text' style="animation-delay: 0.8s"l/span span class='text' style="animation-delay: 1s"e/span span class='text' style="animation-delay: 1.2s" /span span class='text' style="animation-delay: 1.4s"T/span span class='text' style="animation-delay: 1.6s"e/span span class='text' style="animation-delay: 1.8s"x/span span class='text' style="animation-delay: 2s"t/span/divCSS.text { display: inline-block; font-size: 2rem; font-family: "Ryumin ExtraBold KL"; letter-spacing: -0.15rem; animation: llfsdi-text-animation 0.8s forwards; transform: translateY(-1rem); opacity: 0;}@keyframes text-animation { 0% { opacity: 0; transform: translateY(-1rem); } 100% { opacity: 1; transform: translateY(0rem); }}こちらのサンプルでは透明度を調整するopacityも追加しました。他のアニメーションにもopacityを追加するとふわっと現れるアニメーションになります。お好みでカスタマイズしてみてください。一文字ずつ横からスライドして現れる再生HTMLdiv span class='text'span style="animation-delay: 0s"S/span/span span class='text'span style="animation-delay: 0.2s"a/span/span span class='text'span style="animation-delay: 0.4s"m/span/span span class='text'span style="animation-delay: 0.6s"p/span/span span class='text'span style="animation-delay: 0.8s"l/span/span span class='text'span style="animation-delay: 1s"e/span/span span class='text'span style="animation-delay: 1.2s" /span/span span class='text'span style="animation-delay: 1.4s"T/span/span span class='text'span style="animation-delay: 1.6s"e/span/span span class='text'span style="animation-delay: 1.8s"x/span/span span class='text'span style="animation-delay: 2s"t/span/span/divCSS.text-container { overflow: hidden;}.text { display: inline-block; font-size: 2rem; font-family: "Ryumin ExtraBold KL"; overflow: hidden;}.text span{ display: block; animation: llfsdij1-text-animation 0.8s forwards; transform: translateX(-2rem);}@keyframes text-animation { 0% { opacity: 0; transform: translateX(-1rem); } 100% { opacity: 1; transform: translateX(0rem); }}一文字ずつ横スライドして現れるように見せるには、HTMLも修正する必要があります。テキストをさらに一階層深い要素にし、テキストの親要素にoverflow : hiddenを指定してテキストが横から現れて見えるようにする必要があります。最後まで読んでいただきありがとうございます!質問や、こんなことを記事にしてほしい!というのがありましたらTwitterのコメント等で受け付けていますので、お気軽にどうぞ!ますみ - 愛知県在住の20代プログラマー - | @mashmy_98それでは次の投稿もお楽しみに!

Read More

Laravelのページネーションを自分でデザインする

こんにちは!エンジニアのますみです!本日はLaravelのページネーションを自分でデザイン、カスタマイズする方法を解説します!目次 まずは普通に表示 Viewテンプレートを変更する アプリ全体のページネーション用Viewテンプレートを変更する 自作のページネーション用Viewテンプレートを編集する テンプレートを自分でデザインする際に重要なプロパティ一覧 $paginator-hasPages() $paginator-onFirstPage() $paginator-currentPage() $paginator-lastPage() $paginator-perPage() $paginator-total() $paginator-count() $paginator-firstItem() $paginator-lastItem() $paginator-hasMorePages() $paginator-nextPageUrl() $paginator-previousPageUrl() デフォルトのテンプレートをアレンジして使うまずは普通に表示div {{ $collection-paginate(24)-links() }}/divLaravelはデフォルトでtailwindcssのテンプレートを使用しています。とりあえず表示させたいのであればCDNをヘッダーに追加して確認してみてください。https://tailwindcss.com/head script src="https://cdn.tailwindcss.com"/script/headこんな感じで表示されたらOKです。Viewテンプレートを変更するlinks()のかっこの中にViewテンプレートのパスを指定します。resources/views/components/paginate.blade.phpにテンプレートを作成した場合はcomponents.paginateをかっこの中に書きます。div {{ $collection-paginate(24)-links('components.paginate') }}/divこれでページネーションのテンプレートが指定したbladeファイルに置き換わります。アプリ全体のページネーション用Viewテンプレートを変更する上の書き方は、bladeファイルごとにページネーション用Viewテンプレートを指定できます。もしページごとにページネーションのテンプレートを変える必要がなく、統一してもよいのであれば、app/Providers/AppServicePrivider.phpを編集してアプリ全体のページネーション用Viewテンプレートを変更しておきましょう。app/Providers/AppServicePrivider.php?phpnamespace App\Providers;use Illuminate\Pagination\Paginator; // 追加use Illuminate\Support\ServiceProvider;class AppServiceProvider extends ServiceProvider{ /** * Register any application services. * * @return void */ public function register() { // } /** * Bootstrap any application services. * * @return void */ public function boot() { Paginator::defaultView('components.paginate'); // 追加 }}自作のページネーション用Viewテンプレートを編集するViewテンプレートには、ページ送りに関する情報が$paginaterに格納されて送られます。blade上で@dump($paginator)とするとプロパティを見ることができます。テンプレートを自分でデザインする際に重要なプロパティを解説します。テンプレートを自分でデザインする際に重要なプロパティ一覧$paginator-hasPages()コレクションの要素数がpaginate(数値)の数値以上あり、ページ送りをする必要があるかをbooleanで返します。基本的には1ページ目にすべてのデータを表示できたらページネーションボタンを表示する必要はないため、ページネーションボタンを表示するかどうかを判定するのに使えます。使用例@if ($paginator-hasPages()) {{-- ここにページネーションボタンを作成 --}}@endif$paginator-onFirstPage()現在のページが最初のページかどうかをbooleanで返します。最初のページにいる場合は、前のページのリンクを無効にする必要があるためこのプロパティを使用して判定することができます。使用例@if ($paginator-onFirstPage()) span戻る/span@else a href="{{ $paginator-previousPageUrl() }}"戻る/a@endif$paginator-currentPage()現在のページの番号を返します。使用例span{{ $paginator-currentPage() }}ページ目/span$paginator-lastPage()最後のページの番号を返します。使用例span{{$paginator-lastPage()}}ページ中{{ $paginator-currentPage() }}ページ目です/span$paginator-perPage()1ページあたりの表示件数を返します。使用例span{{$paginator-perPage()}}件ずつ表示/span$paginator-total()コレクションの総数を返します。使用例span全{{$paginator-total()}}件/span$paginator-count()現在のページに表示される要素数を返します。使用例span{{$paginator-count()}}件表示/span$paginator-firstItem()現在のページの最初の要素の番号を返します。使用例span{{$paginator-firstItem()}}~{{ $paginator-lastItem() }}を表示しています/span$paginator-lastItem()現在のページの最後の要素の番号を返します。使用例span{{$paginator-firstItem()}}~{{ $paginator-lastItem() }}を表示しています/span$paginator-hasMorePages()現在のページが最後のページではない場合、つまり次のページがある場合にtrueを返します。最後のページにいる場合は、次のページのリンクを無効にする必要があるためこのプロパティを使用して判定することができます。使用例@if($paginator-hasMorePage()) ​a href="{{ $paginator-nextPageUrl() }}"次へ/a@endif$paginator-nextPageUrl()次のページのURLを返します。使用例​a href="{{ $paginator-nextPageUrl() }}"次へ/a$paginator-previousPageUrl()前のページのURLを返します。使用例 a href="{{ $paginator-previousPageUrl() }}"戻る/aデフォルトのテンプレートをアレンジして使うphp artisan vendor:publish --tag=laravel-paginationこのコマンドを実行すると、resources/views/vendor/pagination/にLaravelのデフォルトのテンプレートが作成されます。resources/views/vendor/pagination/ default.blade.php simple-default.blade.php bootstrap-5.blade.php simple-bootstrap-5.blade.php bootstrap-4.blade.php simple-bootstrap-4.blade.php tailwind.blade.php simple-tailwind.blade.php semantic-ui.blade.php bulma.blade.php生成されたテンプレートは、既にページ数に応じたボタンの無効化判定などがされており、これを元にアレンジして使うのもおすすめです。最後まで読んでいただきありがとうございました!質問や、こんなことを記事にしてほしい!というのがありましたらTwitterのコメント等で受け付けていますので、お気軽にどうぞ!ますみ - 愛知県在住の20代プログラマー - | @mashmy_98それでは次の投稿もお楽しみに!

Read More