エンジニアの技術アウトプットの大切さ
エンジニアにとって、技術アウトプットは非常に重要な要素の一つです。 技術アウトプットとは、自分が学んだことや経験を文章や動画、コードなどの形式で公開することを指します。 技術アウトプットがなぜ重要なのかについて説明します。
1. 自己成長につながる
技術アウトプットをすることで、自己成長につながります。自分が何を学んで、どのように問題を解決したのかをアウトプットすることで、自分自身の知識やスキルを再確認することができます。また、技術アウトプットをすることで、他の人からのフィードバックを受けることができます。そのフィードバックを元に、自分自身の改善点を見つけることができます。
2. アウトプットが自己ブランディングにつながる
技術アウトプットをすることで、自分自身をブランディングすることができます。 自分がどのような技術を扱っているのか、どのようなアプリケーションを開発しているのかを公開することで、自分自身をアピールすることができます。 また、公開されたコンテンツがシェアされることで、自分の名前や技術が広まることもあります。
3. 他人への貢献につながる
技術アウトプットをすることで、他人に貢献することができます。自分が開発したアプリケーションや、解決した問題の解法を公開することで、同じような問題を抱えている人にとって非常に役立つことがあります。また、公開されたコンテンツが使われることで、世の中に貢献することもできます。
まとめ
技術アウトプットの重要性について説明しました。 エンジニアにとっては、自己成長や自己ブランディング、他人への貢献など、様々なメリットがあります。 技術アウトプットをするためには、ブログやQiitaなどのウェブサイト、GitHubなどの開発プラットフォームが利用されることが多いです。 また、カンファレンスやセミナーなどでの発表や、書籍の執筆なども技術アウトプットの一例です。
技術アウトプットをするためには、以下のようなポイントが重要となります。
- 読みやすい文章、分かりやすい図表を作ること
- 質の高いコンテンツを提供すること
- 自分自身のアピールポイントを明確にすること
- コンテンツの公開後も、フィードバックを受け取り改善すること
私の考え
技術アウトプットをすることで、自分自身のスキルアップやアピールポイントの向上、他人への貢献など、様々なメリットがあります。 エンジニアとして成長するためには、技術アウトプットを積極的に行うことをお勧めします。
Reactのフォーム内容をLaravelに送信
送るまでの流れ
- Laravelに諸々のルートを書く
- 保存する処理をLaravelに書く
- Reactのフォームのinputタグの値が変わったらstateに値を入れる
- 送信ボタンが押されたらstateをLaravelに送る
の順番で送りたいと思います
手順
axiosのインストール
npm install axios --save
REST-API を実行したいときに、これを使うと実装が簡単にできるみたいです。今回はこれを使います。
Laravelに諸々のルートを書く
Laravelのroutesの下にある、api.phpに以下のように記述します。
Route::group(['middleware' => 'api'], function () { Route::post('example', 'App\Http\Controllers\ExampleController@save'); });
この記述で、フロントで'/api/example'のURLが叩かれたらExampleControllerのsave関数を呼び出すと言う処理になっています。
保存する処理をLaravelに書く
次に、ExampleControllerのsave関数に保存する処理を書いていきます。これは普通のLaravelと同じ処理です。(モデルも用意してください。ここではExampleというモデルに保存するとしています。)
App\Http\Controllersの中にExampleController.phpを作ります。
Controllers\ExampleController.php
public function save(Request $request) { $example = new Example; $example->name = $request->name; $example->password = $request->password; $example->save(); return response()->json($example, 200); }
これで保存する処理ができました。
フォームのinputタグの値が変わったらstateに値を入れる
次にReact側の処理を書いていきます。
index.js
//Laravelに送るためのstate const [data,setData] = useState(); <form name="example" onChange={onChange}> <input name='name' type='text'/> <input name='password' type='password'/> <div onClick={onClick}>送信</div> </form>
3の、フォームのinputタグの値が変わったらstateに値を入れる部分の関数onChangeを、formのonChange属性に入れます。4の送信ボタンが押されたらstateをLaravelに送る部分の関数onClickをonClick関数に入れます。onChange関数は以下の内容にします。
index.js
const onChange = () => { let groupName = document.forms.example.groupName.value; let password = document.forms.example.password.value; //dataをオブジェクトにしてセット setData({ groupName: groupName, password: password, }); }
これで、formの値が変わったらonChange関数の中でdata関数の中にフォーム情報がセットされるようになりました。
送信ボタンが押されたらstateをLaravelに送る
index.js
//上の方に追記 import axios from 'axios'; const onClick = async()=>{ await axios.post('/api/create',data) .then((res) => { setData(''); location.href = 'この中に遷移したい先のページのパスを書く'; }).catch(error => { console.log(error); }); }
Laravelでログを出力する方法
Laravelでログを出力する方法をまとめます。
公式ドキュメント
https://laravel.com/docs/9.x/logging
Laravelのログをファサードを使用して出力する
Laravelのログをファサードのクラスを使用して出力する方法です。
下記のようなクラスを使用して、出力してみました。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; class LogTesterController extends Controller { public function outputLogFacade() { Log::emergency("emergency ログ!"); Log::alert("alert ログ!"); Log::critical("critical ログ!"); Log::error("error ログ!"); Log::warning("warning ログ!"); Log::notice("notice ログ!"); Log::info("info ログ!"); Log::debug("debug ログ!"); } }
outputLogFacadeメソッドにアクセスしたら、それぞれのログレベルでメッセージを出力するようにしました。
Logファサードを使用する場合には、use文を使用してIlluminate\Support\Facades\Log
を読み込んでおきます。
ログの出力場所と内容確認
画面描画やメソッドが発火することで出力されます。
出力されるログはデフォルトで、/storage/logs/laravel.log
の場所に出力されます。
local.EMERGENCY: emergency ログ! local.ALERT: alert ログ! local.CRITICAL: critical ログ! local.ERROR: error ログ! local.WARNING: warning ログ! local.NOTICE: notice ログ! local.INFO: info ログ! local.DEBUG: debug ログ!
Laravelのログをヘルパーを使用して出力する
loggerヘルパーを使用して出力することもできます。
public function outputLogHelper() { logger()->emergency("emergency ログ!"); logger()->alert("alert ログ!"); logger()->critical("critical ログ!"); logger()->error("error ログ!"); logger()->warning("warning ログ!"); logger()->notice("notice ログ!"); logger()->info("info ログ!"); logger()->debug("debug ログ!"); }
出力されるログレベルについて
出力できるログのレベルについてはRFC5424の仕様に順守しているようです。
公式ドキュメント
https://laravel.com/docs/9.x/logging#log-levels
emergency | システム利用不可(最重要)レベル |
---|---|
alert | 緊急対応必要なレベル |
critical | 致命的なエラー |
error | 一般的なエラー |
warning | 警告レベル |
notice | 通知レベル |
info | システム情報 |
debug | デバッグ情報 |
Laravelのログの設定
Laravelのログの設定に関しては、config/logging.php
に書いています。
ログの名前を変更したい
デフォルトでは、stackチャンネルで、channelsにはsingleが設定されています。 そのため、channels配列のsingle配列の中身を修正します。
pathの箇所を下記のように変更します。
'single' => [ 'driver' => 'single', 'path' => storage_path('logs/hoge.log'), 'level' => env('LOG_LEVEL', 'debug'), ],
/storage/logs/hoge.log
にログが出力されるようになります。
ログを日別に出力する
configファイルのstackのchannelsをdailyに変更するか、.envのLOG_CHANNELを変更します。
LOG_CHANNEL=daily
【Laravel】マイグレーションの管理
マイグレーションについてのメモとして作成しています。
マイグレーション状態の確認
php artisan migrate:status
特定のテーブルだけマイグレートをやり直したい時
php artisan migrate:refresh --path=/database/migrations/ファイル名
直前に行ったマイグレーションを取り消したい
php artisan migrate:rollback --step=1
マイグレーションをやり直したい
すべてのマイグレーションを取り消してテーブルの全削除
php artisan migrate:reset
すべてのマイグレーションをロールバックしmigrateを再実行
php artisan migrate:refresh
すべてのテーブルを削除しmigrateを実行
php artisan migrate:fresh
合わせて読んでほしい
新規開発案件に参加してみて
今回の案件触れた技術
静的解析ツール(PHPStan)
検知できる問題点
- 存在しないクラスをインスタンス化している。
- 存在しないメソッド、関数を呼び出している。
- 参照しているクラス名の大文字小文字が定義と異なる。
- メソッド仮引数とメソッド呼び出し実引数の型が一致しない。
- メソッドに型宣言が指定されていない。 ※型チェックをしてくれる優れものという認識です。
検知レベル
検知をする際に0~9のレベルがある。 ※ levelの範囲はPHPStanのバージョンによって変わります
https://phpstan.org/config-reference#rule-level
参考
導入をする際はlevel5をおすすめします。 導入する際の推奨レベルといわれているレベルです。 ※このレベルを超えないとメンテナンスが大変になる。
https://qiita.com/shimabox/items/df03dde8bd6db4733231
コードフォーマット(PHP-CS-Fixer)
PSR(PHP Standards Recommendations)
公式が発表しているPHPコーディング規約です。
PHP-CS-Fixer
PSR(主にPSR-2とPSR-12)に従ってコードを整形してくれる。 VSCodeの拡張機能として「PHP-CS-Fixer」があるのでそれを使用して自動的に整形を行う。 これによりメンテナス性が向上する
ChatGPTの活用法
ChatGPTって何ができるの?
1. 対人のような会話
まるで実際に誰かとチャットをしているようなやり取りが可能
2.表計算ソフトの関数やプログラミング言語の記述
私はメインでお世話になってます🤗
実装したい内容などを送ると実装手順からコードを教えてもらえる
3.小説、脚本を書く
これは初めて知った!
一定の情報を渡すだけで小説などを書くことが可能
エンジニアに役立つ使い方3選🤚
1.プログラミングのリファクタリングやバグのチェック
コードを送ることでリファクタリングをしてくれます。
2. 学習計画を作ってもらう
転職や新しい技術を学ぶ場合にどのような手順で学べばいいかを提案してくれる
3. 設計のサポート
個人開発でのDB設計を実際に行ったが有能🥰
まとめ
- これからいろいろなところで活用される
- やりたいことのサポートとして使う
- 課題などをやってもらうなどの悪用厳禁🙅♂️
勉強のモチベーション維持について
はじめに
勉強を継続するためには、モチベーションを維持することが非常に重要です。本資料では、勉強のモチベーション維持について、具体的な方法を紹介します。
モチベーションを維持するための方法6選
①目標を明確にする
勉強を継続するためには、目標を明確にすることが重要です。目標を明確にすることで、何をするべきかが明確になり、やる気もアップします。
②ポジティブな考え方をする
勉強が難しいと感じるときもありますが、そのときはポジティブな考え方を心がけましょう。たとえば、「自分ができるようになるために、頑張って勉強している」というような考え方をすることで、モチベーションを維持することができます。
③周りの人と協力する
周りの人と協力することで、勉強のモチベーションを維持することができます。友達や家族と勉強をすることで、互いに切磋琢磨し、やる気もアップします。
④成果を見える化する
勉強の成果を見える化することで、モチベーションを維持することができます。たとえば、勉強の内容をまとめたノートを作ったり、問題集の正解率を記録したりすることで、自分の成長を実感することができます。
⑤休憩を取る
勉強を続けるためには、適度な休憩が必要です。長時間勉強を続けると、集中力が切れてしまい、やる気も低下します。定期的に休憩を取り、リフレッシュしましょう。
⑥頑張っている人を見つける
同じ目標でなくてもいいので同じく何かに向かって頑張っている人の姿を見ることは重要だと思います。 自分のことしか見ていないとサボりたくなります。 自分よりも頑張っている人がいると思うと自分もやらないという気持ちになることができます。
まとめ
勉強の過程でモチベーションが落ちることもあるかもしれませんが、それでも諦めずに継続することが大切です。継続することで、自分自身の成長や達成感を味わうことができます。