コツコツてくてく

「続けて、考えて、試す」のサイクルは偉大

基礎からの学び直し|基本情報技術者|2

4/30 ~ 5/30 の勉強内容

動画視聴

A試験_ネットワーク再生リスト 4周

【A試験】ネットワーク_基本情報技術者試験 - YouTube

A試験_A/D変換再生リスト 2周

【A試験_A/D変換】01. アナログデータとデジタルデータ | 基本情報技術者試験 - YouTube

基礎知識を身につける姿勢として意識したこと

  • 暗記系はとにかくインプットする機会を増やす
    • 歩き時間
    • 待ち時間
    • 電車乗車時間
  • わからないと判断したら、動画を巻き戻して確認する

今回の勉強を実務に活かすなら、

  • 新しく触れる言語やフレームワークの解説動画を歩きながら聞き流す
  • 行き詰まったら立ち止まって、どこで行き詰まったかを整理する

今回の改善点、発見

  • 過去問道場は電車の乗車中にしか解けない(当たり前ですが)
  • ある程度知識がないと過去問道場の問題文の内容は頭に入ってこない
  • まずは全体像の把握を終わらせて、過去問をたくさん解く

今後の平日にする勉強の予定

A試験_ハードウェア再生リストの視聴

A試験_ソフトウェア再生リストの視聴

基礎からの学び直し|基本情報技術者|1

今日の勉強内容

「キタミ式基本情報技術者試験」をchapter0~3まで練習問題を解きながら読み進めました。

基礎知識を身につける姿勢として意識したこと

  • 素直に最初から読み進め、これから何を何のために学習するのかを意識する
  • わからない単語はメモして読み進める
  • 一度読んでもわからないときは、練習問題を解いてみる
  • 練習問題がわからないときは、ネットで調べてみる

今回の勉強を実務に活かすなら、

  • 目的を忘れずソースコードを読む(どの権限の、何の操作を知りたいのか)
  • 読み進めてわからないこと、わかったことは都度メモする
  • 読んでもわからないことは、コードを編集してデバッグモードで確認してみる
  • メモとデバッグの情報をまとめてネットで調べたり、先輩に質問してみる
    (このクラスにこの実装を書くのは適切か、似た既存処理はないか)

活用していく無料教材

暗記系の問題はyoutubeの動画を流し聞きして歩きながら勉強しても良さそうです。

電車での通勤時間は過去問道場の暗記系問題を解くのに良さそうだと思います。

紙にメモする必要がある問題は、まとまった時間で家で勉強の方向で進めたいなと思います。

今後の平日にする勉強の予定

システム構成要素(ハードウェア、ソフトウェア、データベース、ネットワーク、情報セキュリティ)の暗記を背景知識を含めて行う。

外出先ではスマホで過去問道場を解き、自宅で参考書を読む切り替えで進めます。

基礎からの学び直し|基本情報技術者|0

プログラマーとして復帰する前の実力

一度プログラマーを辞める前までは、実務として2年弱プログラマー兼プログラミング講師として働いていました。開発は長くて連続6ヶ月強の案件しか経験したことがありませんでした。決して良い経歴とはいえないと自覚しています。

単発の開発と不定期な機能追加依頼を対応していた、案件先が契約を守らなかった、自己管理不足で体を壊したことが理由としてあります。

今までの自分の選択が、今の自分の実力の結果と強く認識しています。

いまの自分はどうなのか

今の職場は職務内容、人間関係ともに過去最高の環境です。

現在は心身、家庭ともに落ち着き、自分の現状を客観視することが出来ています。

「今の職場で少しでも速く、主戦力として、働きたい」と考えると自分の問題点が見えてきました。

「体系的な基礎知識を身につける姿勢」です。

復帰前までは納期を理由に、その場しのぎの情報収集と開発を繰り返していました。

「基礎知識を身につける姿勢」がないと何故問題なのか

基礎知識がないと、問題解決のヒントの手札がそもそも少ないと実感します。

稀に誰よりも特定の知識が豊富に見える場面もありますが一時的なものです。持っている知識の歪さが自分で一番わかるようになります。

理解の階段を飛ばして問題解決を図ると、たいてい手戻りや失敗を経験します。

依頼を頂いた開発をするにあたり、職場のライブラリの影響範囲や権限別の機能制限を把握する前に実装をし、手戻りを経験することもあります。

業務に関係する、利害関係のない第三者を頼る

「一定水準の基礎知識を身につける習慣と姿勢」を改めて身につけるために、

まずは期間と点数のある勉強こそ最適ではないかと考えました。

そして今まで心の何処かで軽視してきた「基本情報技術者試験」に目をつけました。

今後の目標

  • 会社にいる間は、期限の近い開発に直結するソースコードをスキマ時間読んで、影響範囲や仕様で理解したことを体系的にまとめる。
  • 自宅では、新しいことを学ぶ際の姿勢を矯正するため、業務に直結する知識を仕入れるために、まずは基本情報技術者試験の勉強をする。

目的はあくまでも「今の職場で少しでも速く、主戦力として、働きたい」の実現です。

(自分が手段を目的にしないようにするためハッキリ書いておこうかと思いました...)

基本情報技術者試験は速い人で1ヶ月で合格出来るらしいのですが、

私はコツコツ続けることを方針とするので、7月中の合格を目指します。

約3ヶ月間の勉強内容と、仕事の反省点を今後ブログに残していこうかなと思います。

 

qiita.com

 

コツコツと、てくてくと、歩きます!

Docker + Laravel10 + React + TypeScript の開発環境を手っ取り早く用意したい人へ

結論:参考元を組み合わせて作業する

下記3つの情報を参考にすれば1~3時間で、

Docker + Laravel10(認証機能付き) + React + TypeScript の環境構築が出来ます。

下記の前提で記事を書いています。

  • Windows環境
  • docker-compose のコマンドが使える
    (こちらの記事読みながらでも出来るかもです)
  • Docker、wsl2の環境が整っている
  • Docker環境のLaravelで開発したことがある

「Docker環境でLaravelで少しでも開発したことがある」に当てはまらない人は、

Dockerを知るところから始めることをおすすめします。

qiita.com

1:まずはLaravel 10 を Docker で動かす

qiita.com

基本的に記事の説明通りに作業すれば、LaravelがDocker環境上で動かせました。

Qiita記事の著者様ありがとうございます。

これからReactを追加する際に重要となるポイントだけ先に触れておきます。

また、/src/node_modulesフォルダと/src/vendorフォルダはボリュームマウントから外してます。これは依存ライブラリ群をマウント対象から外すことで動作の高速化を狙ってします。Viteを使った開発環境ではその特性上★超重要★で、これをしないとページのロードに平気で1分とかかかります。

https://qiita.com/hitotch/items/869070c3a9f474a358ea#docker-composeyml

このボリュームマウントから 「/src/node_modules」 外す作業は、

react を導入した際に不都合があります。

どんな不都合なのかは、次の React + TypeScript 導入にて説明しますね。

2:React + TypeScript を Laravel に導入する

次に React + TypeScript を導入するために、Laravel Breeze を利用します。

readouble.com

appコンテナに入ってLaravel

利用するコマンド

  1. composer require laravel/breeze --dev
  2. php artisan breeze:install
  3. React を選択
  4. オプションで TypeScript を選択
  5. 以後はお好みで選択してインストール開始

上記のコマンドで React + TypeScript を Laravel に導入すると2つの修正が必要になります。

  1. vite.config.js
  2. docker-compose.yml
vite.config.js の修正

React + TypeScript の導入時に、vite.config.js が書き換えられてしまいます。

reactの設定を追記するために上書きされホットリロードの設定が削除されます。

再度追記すると解決します。

 server: {
  host: true,
  hmr: {
   host: 'localhost',
  },
  watch: {
   usePolling: true,
 },
},
docker-compose.yml の修正とコンテナ再ビルド

何らかの工夫をしない限り、vscode が node_modules 配下の react を認識できず、

エディタ上にずっとエラーが表示されます。

エラー:Cannot find module 'react' or its corresponding type declarations.ts(2307)

前述した「ボリュームマウントから 「/src/node_modules」 外す作業」が影響して、

エラーが表示されています。vscode が node_modules にインストールされた react を認識出来ないことが原因です。

vite でのコンパイルは通りますが、開発中にエラーが表示され続けるのはちょっと...。

 

docker-compose.ymlの設定が原因なので、下記を削除またはコメントアウト

    ports:
      - 5173:5173
    volumes:
      - ./:/src
      # - /src/node_modules
      # - /src/vendor
      - ./docker/php/php.ini:/usr/local/etc/php/php.ini

 

改めて下記コマンドを実行してモジュールをインストールします。

  1. docker compose down 
  2. docker compose up -d --build
  3. appコンテナに入る
  4. composer install
  5. npm install

これで vscode が エラーを出さなくなります。

3:表示の遅さを解決する

「ボリュームマウントから 「/src/node_modules」 外す作業」をやめたことで、

viteのホットリードが遅くなります。

私の場合はダッシュボードの表示に約40秒かかることが確認出来ました。

 

40000 msほど
ソースコードubuntu配下へ移動する

解決策としてソースコードをフォルダごとすべてubuntu配下へ移動します。

www.aska-ltd.jp

詳細は参考記事を読んでほしいのですが、wsl上にファイルを移動させることで、

ファイルの読み込み量を減らすことが出来ます。

起動しているdockerを停止して、ソースコードをコピーまたは移動させます。

ソースコードubuntu配下で起動できるようにする

移動先で下記コマンドを実行し、画面の表示を試します。

  1. docker compose up -d --build
  2. appコンテナに入る
  3. composer install
  4. npm install

npm install を実行すると、下記のエラーが出る場合があります。

root@-------:/src# npm run dev

> src@1.0.0 dev
> vite --host

/usr/bin/env: 'node': Permission denied

インストール権限がないことが原因で失敗するので、下記コマンドnpmを再インストールして解決します。

  1. curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
  2. nvm install stable --latest-npm

qiita.com

docs.npmjs.com

再インストールが出来たら改めて、下記コマンドで vite のホットリロードが動作するか確認します。

  1. npm install
  2. npm run dev

同じダッシュボード画面の表示速度は1秒未満になることが確認できました。

800ms 未満で 改善前の 約50倍速い表示に

気づき

vscode が node_modules 配下の react を認識できず、エディタ上にずっとエラーが表示される原因を突き止めるのに1時間以上かかった...。

参考元のdocker-compose.ymlの記述をちゃんと読んでいないことで、表示されたエラー情報のみを参考に検索をして、的はずれな解決策を試して時間を使っていました。

参考元の情報で環境構築する際には「参考元が何をしているか」を少しでも知ろうとする姿勢があると、不具合の原因を見つけるヒントが得られると改めて認識できました。