Linux学習についてのまとめ 02 GNU/Linux

こんにちは。22年度入社の中島です。

現在、私はLinuCの101試験に合格するためにLinuxの学習を進めています。特にGNUに関する内容を理解することが重要であると感じ、これらの知識をブログとしてまとめました。この記事を通じて、GNU/Linuxの基本的な歴史やリチャード・ストールマンの貢献、さらにはLinuxのテキストフィルタコマンドについて共有します。

1. GNUの歴史について

GNUは「GNU’s Not Unix!」の略で、Unix互換のオペレーティングシステムを開発するために1983年にリチャード・ストールマンによって開始されたプロジェクトです。当時、ほとんどのソフトウェアがプロプライエタリ(専用)であり、ソースコードが公開されていませんでした。ストールマンは、ソフトウェアの自由な使用、改変、再配布を可能にすることを目指してGNUプロジェクトを立ち上げました。

GNUプロジェクトの最も重要な成果の一つは、GPL(GNU General Public License)です。GPLは、フリーソフトウェアに特化したライセンスであり、ユーザーにソフトウェアの自由を保障します。このライセンスは、ソフトウェアを自由に使用し、改変し、再配布することを許可しますが、改変や再配布されたソフトウェアも同様にGPLの下で公開される必要があります。この仕組みを「コピーレフト」と呼びます。コピーレフトは、ソフトウェアの自由を保護するための強力な手段であり、オープンソースソフトウェアの普及に大きく寄与しました。

コピーレフトの理念は、ソフトウェアが自由であるべきという考え方に基づいており、ユーザーがソフトウェアを制限なく利用できるようにすることを目的としています。このため、GPLはフリーソフトウェア運動の基盤となり、オープンソースコミュニティにも大きな影響を与えました。

GNUプロジェクトは、Unixと同様の機能を持つ多くのソフトウェアを開発しました。これらのソフトウェアには、コンパイラ(GCC)、テキストエディタ(Emacs)、シェル(Bash)などが含まれます。これらのツールは、現在も多くのユーザーに利用され、Linuxを含むさまざまなオペレーティングシステムで使用されています。

2. リチャード・ストールマンについて

リチャード・ストールマンは、フリーソフトウェア運動の先駆者であり、GNUプロジェクトの創始者です。1985年にフリーソフトウェア財団を設立し、ソフトウェアの自由を擁護する活動を続けています。彼の主張は、ソフトウェアがユーザーに自由を与えるべきであり、そのためにはソースコードが自由にアクセスできる状態でなければならないというものです。ストールマンの理念は、多くのフリーソフトウェアのライセンス(例:GPL)に反映されており、今日のオープンソースコミュニティに大きな影響を与えています。

3. GNUから生まれたLinux

GNUプロジェクトは多くのツールを開発しましたが、オペレーティングシステムの核となるカーネルは開発されていませんでした。1991年、リーナス・トーバルズによってLinuxカーネルが発表されました。GNUツールとLinuxカーネルを組み合わせることで、現在の多くのGNU/Linuxシステムが形成されました。このように、LinuxはGNUプロジェクトと密接に関連していますが、GNUそのものとは別の存在です。

4. GNU/Linuxのテキストフィルタコマンド

GNUシステムの基本コンポーネントには、GCC(コンパイラ)、glibc(ライブラリ)、Coreutils(コマンド)、GDB(GNUデバッガ)、Bashシェルなどが含まれています。
Coreutils(GNU Core Utilities)の中でも特徴的なのが、テキストデータを加工するコマンド群になります。シェル上でこれらのコマンドを組み合わせることで強力なデータ処理が可能です。

これらのテキストフィルタコマンドは、データ処理や分析において非常に役立つツールであり、試験勉強の一環として理解を深めることで、実際の業務でも役に立つと思いました。
業務で使うシーンを想定しながら、今回はそのコマンドと例文の一部をまとめようと思います。

代表的なテキストフィルタコマンド
コマンド説明
grepテキスト検索ツールで、指定したパターンに一致する行を抽出します。
例: grep -i ’error’ application.log
application.logファイル内で ‘error’ (大文字小文字区別なし)に一致する行を検索して表示します。
sedストリームエディタで、テキストの置換や削除、挿入を行います。
例:sed ‘s/localhost/127.0.0.1/g’ /etc/hosts
ホスト名をIPアドレスに置き換えます。設定ファイルを一括して修正する際に役立ちます。
awkテキスト処理言語で、テキストのパターンマッチングと処理が可能です。
例:awk ‘$3 == “root” {print $1}’ /etc/passwd
/etc/passwdファイルからrootユーザーのユーザー名を抽出します。
sortテキストデータをソート(並べ替え)します。
例: sort -k3,3 -t, data.csv
CSVファイルの3列目(例: 売上データ)を基準にしてソートします。
uniq重複する行を削除します(通常はsortと組み合わせて使用されます)。
例: sort access.log | uniq -c
アクセスログの重複するエントリを集計し、一意のリクエスト数を数えることができます。
cutテキストの特定のフィールドを抽出します。
例: cut -d ‘:’ -f 1 /etc/passwd
/etc/passwdファイルからユーザー名のみを抽出します。
tr文字の変換や削除を行います。
例: echo ‘abc123’ | tr ‘a-z’ ‘A-Z’
出力結果の小文字を大文字に変換します。

これらのコマンドを使いこなすことで、テキストデータの効率的な処理と分析が可能になります。

おわりに

今回の記事では、LinuC101試験に向けての学習の一環として、GNU/Linuxの歴史やリチャード・ストールマンの貢献、そしてテキストフィルタコマンドについてまとめました。これらの知識を深めることで、Linuxシステムの理解がさらに深まったと感じています。特に、シェルスクリプトの作成や自動化されたデータ処理、システム管理業務において、これらのコマンドの組み合わせが強力なツールとなることを理解しました。また、実際の業務でのデータ処理や、エラーの迅速な検出・修正など、より効率的なシステム運用に役立つ点も大いに学ぶことができました。

今回はここまで
最後までご覧いただきありがとうございました!

PHPカンファレンス福岡2024に参加しました!

こんにちは。22年度入社の中島です。

去る2024/6/22(土)、福岡で開催されたPHPカンファレンス2024に初めて参加しました。カンファレンスや勉強会といったものもこれまで参加したことがなかったので、とても新鮮な体験でした。早速になりますが、どのようなイベントだったか紹介できればと思います。

PHPカンファレンスとは

PHPカンファレンスとは、さまざまな地域やコミュニティから集まったPHPユーザーが集まるイベントです。ここ福岡では8回目の開催となるようです。PHPだけかと思ったら、PHP以外の話題も多く、プロジェクト運営の話やプロトコルの話など、とても刺激を受けました。イベントの合間に登壇者と話をすることもでき、ソフトウェアやアイデアについて情報交換や交流が行うことができました。

セミナーの規模

会場は福岡ファッションビルの8階にあるFFBホールで、参加人数は約150~180人ほどだったかと思います。スタッフやスポンサーの方々を含めると200人は超える人たちが集まっているように感じました。

会場の雰囲気

カンファレンスと聞くと堅苦しい場所を想像していましたが、実際に行ってみるとそんなことはなく、全体的に明るく和気あいあいとした雰囲気でした。参加者同士が自由に交流している様子が多く見られ、他県からの参加者も多くみられました。企業の出店ブースもあり、会社説明や展開しているサービスの説明が行われていました。

面白かったセッションとその内容

・Fat Controller は悪か? ~光のFat Controller・闇のガリController~

Fat Controller (Laravel 等の Web フレームワークに用意されている Controller に、要件を満たすためのあらゆる実装を書き込んでいる状態)は本当に悪なのかをテーマにしていました。特に印象に残ったのは、Controllerの肥大化がプロジェクトのメンテナンス性にどう影響するかという議論です。コードの整理と役割分担を徹底することで、チーム全体の効率が劇的に向上する可能性があると感じました。

・Laravel のセキュリティはどうなってる?突撃ソースコードリーディング

XSS、CSRF、SQLインジェクションなどのWebアプリケーションの脆弱性を、Laravelに当てはめて紹介していました。特に驚いたのは、Laravelがこれらの脆弱性に対してどれだけ包括的な対策を持っているかという点です。実際のソースコードを読んで、具体的にどのように対策が組み込まれているのかを確認することで、安心してフレームワークを使うことができ、また自分のコードで必要となる対応を組み込んでいく自信がつきました。

感想

会場に行って話を聞いて新しい技術・情報に触れることができ、非常に有意義な時間を過ごすことができました。特にFat Controllerの話は、『コントローラーが整備されていない状態だから使いずらいので、整理することで救える』ということを意識しようと改めて認識しました。実際の業務で、これらのようなアプローチを試してみようと思います。

また、Laravelのセキュリティに関するセッションでは、脆弱性対策の具体的な手法を学ぶことができ、今後の開発において非常に役立つ知識を得ることができました。フレームワークの構造を知ることで自信をもって自分のコーディングができるように感じました。

今回のカンファレンスを通じて得た知識や経験を、今後の業務に活かしていきたいと思います。次回も福岡で開催されるのであれば、ぜひ参加したいと思います。

今回はここまで
最後までご覧いただきありがとうございました!

Laravel Sailで記事投稿フォームを作成してみた

こんにちは。22年度入社の中島です。

前回はLinuxについて書きましたが、今回は少し前に学習していたLaravel Sailについてまとめました。

●Laravel Sailとは
Dockerを使った開発環境であり、ターミナルでコマンド実行するだけで、DockerでLaravel環境を一発で作ってくれる便利なコマンドラインツールです。
Laravel Sailを使うメリットは次の通りです。

・開発に最低限必要なツールを一度にインストールでき、インストールの手間を省ける
・本番環境と同じ環境を手元に用意して、動作を確認できる
・PHPのバージョンが異なる複数のプロジェクトの管理が楽にできる
(Laravel 8.x からLaravel Sailは標準でインストールされています。)

●なぜLaravel Sailを使っているのか?
Laravelの学習するときに使用していた技術書がLaravel Sailでの環境構築、実装方法を紹介しているのを見て、docker環境との連携も取りやすいと思ったため、復習を兼ねてSailの紹介をやってみようと思いました。


使用したテキスト:『Laravelの教科書』

Laravel Sailのセットアップ及びLaravelトップ画面の表示
1.Docker Desktopをインストール
Dockerのインストールです。Dockerの公式サイトからDocker Desktop のインストーラーをダウンロードします。

2.Laravel Sailをインストールするディレクトリを予め作成しておきます。
今回はtest-projectフォルダを作成しました。

3.Laravel Sailのインストール
Ubuntuまたはターミナルで、次のコマンドを実行します。(今回はUbuntuを使用)

4.途中でパスワードが求められたらPCのパスワードを入力。

5.下記メッセージが出たらインストール完了です。

6.「test-project」ディレクトリへ移動します。

7.Dockerコンテナを起動します。

これによりLaravel Sailが使用する複数のDockerコンテナが起動します。
起動したコンテナについて、Docker Desktopのウィンドウで確認してみましょう。

※./vendor/bin/sail コマンドを毎回入力するのは大変です。
これを「sail」だけで使えるようにするため、エイリアス登録を行います。

以降は sail コマンドとして記載していきます。

8.マイグレーションコマンドを実行して、初期テーブルを作成する。

9.ブラウザで「http://localhost/」 へアクセスするとLaravelのスタート画面が表示されます。※Ubuntuまたはターミナルを開いたまま、ブラウザでアクセスしてください。

今回は、Laravelの復習として過去に作成したフォームの一部を紹介したいと思います。
『件名』『本文』にテキストエリアがあり、フォームの下に『送信する』ボタンがあるフォームを作成していきます。

1.モデルとマイグレーションファイルを作成
まずは、モデルとマイグレーションファイルを作ります。下記コマンドを実行して、Postモデルとマイグレーションファイルを作ります。

このコマンドを実行すると、database/migrations 配下と app/Modelsにファイルが作成されます。次にdatabase/migrations 配下に作成されたマイグレーションファイルに、postsテーブルを作成するためのtitleカラムとbodyカラムを設定します。

./database/migrations/(年)_()_(日)_(時刻)_create_posts_table.php

マイグレート実行し、データベースにpostsテーブルを作成

2.ビューファイルの作成
次にビューファイルを作ります。resources/viewsの中にpostフォルダを作り、その中に create.blade.phpファイルを作ります。create.blade.phpファイルの中には以下のコードを追加します。

create.blade.php

3.ビューファイル表示用コードを追加
次にコントローラです。下記コマンドを実行して、PostControllerを作成。

コマンド実行後、app/Http/Controllerの中のPostController.phpを開きます。先ほど作成した resources/views/post/create.blade.phpファイルを表示するためと投稿データ保存のために、下記のように記述します。

PostController.php

4.ルーティングの設定(ビューファイル表示用のルート設定)を追加
ルート設定の作成です。routes/web.phpの中に、下記のuse宣言とフォーム表示用のルート設定と投稿データ保存用のルート設定を加えます。これにより今回作成したフォームがブラウザに表示されます。

web.php

これまで記述したコードによって、次の流れが実現します。

  1. ユーザーがログイン後にhttp://localhost/postにアクセスする
  2. ルート設定により、PostControllerのcreateメソッドに処理が割り振られる
  3. 処理が実行され、resources/views/post/create.blade.phpの内容がブラウザに表示される

    実際に作成したもの

4.件名(title)と本文(body)を入力し『送信する』ボタンを押すことで、PostControllerにフォーム(http://localhost/post)を通じて値が送信される
5.ルート設定により、PostControllerのstoreメソッドに処理が割り振られる
6.処理が実行され、件名が$request->titleに、本文が$request->body にそれぞれ入っているため、Post::create() に渡してやることでpostsレコードの対応するフィールドに値がセットされる
7.returu back()によっての元ページに戻る

いかがでしょうか。

今回は振り返る形でLaravel Sailのことを書きました。
今後も学んだことを忘れないようにLaravelやLinux、業務で行った作業なども復習する形でブログ更新していきたいと思います。

今回はここまで
最後までご覧いただきありがとうございました!

LinuCの試験について

こんにちは。22年度入社の中島です。

この間、Linux資格のLinuCを受験しました。
今回私が受けたのは、LinuCレベル1(101試験)になります。
この試験は、101試験と102試験があり、認定されるためには2試験を(片方を合格していたら5年以内に)合格する必要があります。

今回は、LinucCレベル1 101試験を受けた感想や試験の内容を簡単に書いていこうと思います。

Linux技術者認定「LinuC(リナック)」とは
クラウドやDX時代のITエンジニアに求められるシステム構築から運用管理に必要なスキルを証明できる技術者認定です。

・受験動機
この試験を受ける理由は、仕事に対する自信につなげられるようにするためと、これからの業務の役に立つと思い受験しました。

・予約と受験方法、前日までの準備について
今回はオンラインでの受験だったので、テストセンターでいかなくてよかったのですが、
試験を受けるにあたっての、本人確認書類の用意、受験スペース準備や規則などが大変でした。

・試験対策と試験概要
対策として、テキストでの学習や過去問を解くなどをしていました。一日に学習する範囲を決めてやったり、章まとめの問題集を何回も解きなおしていました。

LinuCレベル1(101試験)は試験時間は85分で出題数は60問でした。
以下は試験囲です。

第1章: Linuxのインストールと仮想マシン・コンテナの利用
第2章: ファイル・ディレクトリの操作と管理
第3章: GNUとUnixのコマンド
第4章: リポジトリとパッケージ管理
第5章: ハードウェア、ディスク、パーティション、ファイルシステム

・勉強してみた感想
Linuxのことを何もわからない状態からのスタートだったので、なんとなく理解するのにも時間がかかりました。
特にコマンドとそのオプションを覚えきれず、とても苦労しました。

・結果と感想
結果は残念ながら不合格でした。
1~5章の全範囲まんべんなく出ていたので、全体的に復習が必要だと思いました。
受験した感想といたしましては、どのような形で問題が出されるのかわからず、緊張して問題とくペース配分がうまくいかず、時間が掛かりました。
それによって見直しを行う時間がありませんでした。
また、第3章、第4章のコマンドを忘れていたり、コマンドは合っているのにオプションを間違えてるなどのミスが目立ちました。

今回の試験で自分の努力不足をとても感じました。次回受験する際には過去問やりこみ、解くスピードを上げて見直しをする時間を作りたいと思います。模擬試験で正解8割を安定して出せるようになってから再度、受験したいと思います。

現在は、ping-tというサイトを使って過去問を解いています。
このサイトは、試験範囲・問題数・出題形式まで自由に決めることができて便利です。
間違ってもわかりやすい解説があるので、おすすめです。(アカウント登録が必要です。)

https://mondai.ping-t.com/users/sign_in

いかがでしたでしょうか。

久しぶりのブログでしたが、よいネタを見つけたら投稿していきたと思います。

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

ApacheHTTPServerでHTTP/2を動かすためにphp-fpmを導入した結果

こんにちは。22年度入社の中島です。

先日作業していた案件で、ローカル環境構築をした後、
VMとサーバー接続しようとした時の出来事

mpmファイルの設定が「prefork」だとHTTP/2が機能せず
mpmファイルの設定を「event」または「worker」にすると、Apacheが機能しないという状況になりました。


上記のエラーを解決するためにphp-fpmを導入し、mpmの設定を「event」または「worker」にしたところApacheが正常に起動しました。

php-fpmをインストール


/etc/httpd/conf.modules.d/00-mpm.confの設定を変更
今回は、workerを有効にしています。


/etc/httpd/conf/httpd.conf に設定を追加しました。
拡張子phpのファイルをApacheで処理する場合に、php-fpmを使うようにする設定として以下の内容を追加します。

Apacheの再起動し、ステータスを確認します。

Apacheが起動したら、phpファイルが正しく処理されることを確認します。
DocumentRootの直下にphpinfo.phpを公開フォルダに作成します。
中身は以下のようになってます。

これをブラウザで表示します。

正しく動作することを確認できました!

いかがでしたでしょうか。

HTTP/2を動かすためには、preforkでなくeventもしくはworkerで設定し、モジュール版phpでなくphp-fpmなどで動かす必要があるということがわかりました。

今後も業務で起こった出来事をブログにしていきたいと思います。

今回はここまで
最後までご覧いただきありがとうございました!

Linux学習についてのまとめ 01

こんにちは。22年度入社の中島です。

最近はLinuxの資格であるLinuCを受験するために、Linuxの学習をしています。
今回は復習も兼ねて学習したもの、実際に使ったものの一部を紹介したいと思います。

 

shutdownコマンド
私が最初に覚えたコマンドで、システムを安全に停止するコマンドです。

12:00に時間指定でシャットダウンする場合

[crayon-6717247920e6e641919735  ]shutdown -h 12:00[/crayon]

すぐに再起動する場合

[crayon-6717247920e75835937344  ]shutdown -r now[/crayon]

私がこのコマンドを使うときは、オプションの-rをよく使います。

書式 shutdown [オプション] 時間 [メッセージ]

オプション
-h  シャットダウンする
-r  シャットダウン後に再起動

 

cpコマンド
ファイルやディレクトリをコピーするコマンド。
業務では、WinSCPなどで追加したVMの共有フォルダからファイルをコピーするとき以下のようなコマンドでファイル情報を保持するオプションをつけ実施しました。

[crayon-6717247920e7b530037332  ]cp -rp vagrant/html/* /var/www/html[/crayon]

書式 cp [オプション] コピー元ファイル名 コピー先ファイル名
   cp [オプション] コピー元ファイル名 コピー先ディレクトリ

オプション
-f  コピー先に同名のファイルがあれば上書きする
-i  コピー先に同名のファイルがあれば上書きするかどうか確認する
-p  コピー元ファイルの属性(所有者、所有グループ、アクセス権、タイムスタンプ)を
   保持したままコピーする

 

chownコマンド
ファイルに設定されている所有者を変更するコマンド。
業務ではApacheを起動する際、所有者が違ったのでオプションの-Rを使って対象ディレクトリの全ファイルの所有者を変更しました。

[crayon-6717247920e80942037989  ]chown -R root vagrant[/crayon]

書式 chown [オプション] ユーザー [:グループ] ファイル名やディレクトリ名

オプション
-R  指定したディレクトリとその中にある全ファイルの所有者を変更する

 

lsコマンド
ディレクトリを指定した場合は、そのディレクトリ内のファイルを表示します。ファイル名を指定した場合は、そのファイルの属性を表示します。何も指定しない場合は、カレントディレクトリ内のファイルを表示します。ドットファイルも参照したかったため、以下のようなコマンドを実行して確認しました。

[/crayon]

書式 ls [オプション] (ファイル名あるいはディレクトリ名]

オプション
-l  カレントディレクトリにあるファイルの詳細設定を表示
-A ドットファイルも含めて表示。ただし./ および ../ をのぞく
-a  ドットファイルも含めて表示。

 

grepコマンド
ファイルやテキストの中に、 正規表現によって表される検索文字列があるかどうかを調べます。引数にファイルを指定した場合、そのファイルの中で検索パターンにマッチした文字列が含まれる行をすべて表示します。


オプションの-nをつけることで、自分の探している文字が何行目にあるかを確認することができます。

書式 grep [オプション] 検索パターン [ファイル名]

オプション
-n  検索結果とあわせて、行番号も表示する

 

いかがでしたでしょうか。

LinuCは、試験レベルが3つありレベル1の試験は、「101試験」と「102試験」の2試験に合格するとレベル1合格になります。Linuxの復習しながら、ブログの続きとしてを出していけたらと思います。

今回はここまで
最後までご覧いただきありがとうございました!

 

新入社員ブログ 中島06『chatGPTでカレンダーアプリを作ってみた』 

こんにちは。22年度入社の中島です。

今回は、最近流行りのChatGPTを使ってプログラムをやってみました。
それを簡単にまとめましたので、紹介したいと思います。

ChatGPTとは?
ChatGPTは、高度なAI技術によって、人間のように自然な会話ができ、無料で利用できるAIチャットサービスです。2022年11月に公開されてから、多種多様な質問に対する返答が面白いとSNSなどでバズっています。

実際に使ってみた
プログラムについてもできると聞いたので、簡単なプログラムが作れるのか実際に使ってみました。
仕様としては
・『ブラウザ上で見られるスプリクトで、
 カレンダーの日にちをタッチすると赤色になるプログラムを作ってください』
と入力しました。

出てきたプログラムがこちらです

<!DOCTYPE html> <html> <head> <meta charset=”UTF-8″> <title>Calendar</title> <style> /* カレンダーのセルをスタイル付け */ td { padding: 10px; border: 1px solid black; text-align: center; cursor: pointer; } /* 赤い背景色を追加 */ .selected { background-color: red; } </style> </head> <body> <table> <thead> <tr> <th colspan=”7″>March 2023</th> </tr> <tr> <th>Sun</th> <th>Mon</th> <th>Tue</th> <th>Wed</th> <th>Thu</th> <th>Fri</th> <th>Sat</th> </tr> </thead> <tbody> <tr> <td></td> <td></td> <td></td> <td></td> <td>1</td> <td>2</td> <td>3</td> </tr> <tr> <td>4</td> <td>5</td> <td>6</td> <td>7</td> <td>8</td> <td>9</td> <td>10</td> </tr> <tr> <td>11</td> <td>12</td> <td>13</td> <td>14</td> <td>15</td> <td>16</td> <td>17</td> </tr> <tr> <td>18</td> <td>19</td> <td>20</td> <td>21</td> <td>22</td> <td>23</td> <td>24</td> </tr> <tr> <td>25</td> <td>26</td> <td>27</td> <td>28</td> <td>29</td> <td>30</td> <td>31</td> </tr> </tbody> </table> <script> // カレンダーのすべての日付セルを取得 const dateCells = document.querySelectorAll(‘tbody td’); // カレンダーの各日付セルにクリックイベントを追加 dateCells.forEach(cell => { cell.addEventListener(‘click’, () => { // クリックされたセルに ‘selected’ クラスを追加 cell.classList.add(‘selected’); }); }); </script> </body> </html>

それをブラウザで開くとこんな感じです。

日付をクリックしたら赤くなるカレンダー


入力通りのものができました。
ですが、これでは赤色にしてしまうと元の戻らないので、仕様を追加します。

・上記のプログラムに以下の仕様を追加してください
 『日付がクリックされるたびに 赤→青 青→白 白→赤に切り替わる』

出てきたプログラムがこちらです

<!DOCTYPE html> <html> <head> <meta charset=”UTF-8″> <title>Calendar</title> <style> /* カレンダーのセルをスタイル付け */ td { padding: 10px; border: 1px solid black; text-align: center; cursor: pointer; } /* 赤い背景色を追加 */ .red { background-color: red; } /* 青い背景色を追加 */ .blue { background-color: blue; } </style> </head> <body> <table> <thead> <tr> <th colspan=”7″>March 2023</th> </tr> <tr> <th>Sun</th> <th>Mon</th> <th>Tue</th> <th>Wed</th> <th>Thu</th> <th>Fri</th> <th>Sat</th> </tr> </thead> <tbody> <tr> <td></td> <td></td> <td></td> <td></td> <td>1</td> <td>2</td> <td>3</td> </tr> <tr> <td>4</td> <td>5</td> <td>6</td> <td>7</td> <td>8</td> <td>9</td> <td>10</td> </tr> <tr> <td>11</td> <td>12</td> <td>13</td> <td>14</td> <td>15</td> <td>16</td> <td>17</td> </tr> <tr> <td>18</td> <td>19</td> <td>20</td> <td>21</td> <td>22</td> <td>23</td> <td>24</td> </tr> <tr> <td>25</td> <td>26</td> <td>27</td> <td>28</td> <td>29</td> <td>30</td> <td>31</td> </tr> </tbody> </table> <script> // カレンダーのすべての日付セルを取得 const dateCells = document.querySelectorAll(‘tbody td’); // カレンダーの各日付セルにクリックイベントを追加 dateCells.forEach(cell => { cell.addEventListener(‘click’, () => { if (cell.classList.contains(‘red’)) { cell.classList.remove(‘red’); cell.classList.add(‘blue’); } else if (cell.classList.contains(‘blue’)) { cell.classList.remove(‘blue’); } else { cell.classList.add(‘red’); } }); }); </

それをブラウザで開くとこんな感じです。

日付をクリック色が切り替わるカレンダー

今度こそ思い通りのものができました。
このように仕様を途中から追加しても、ちゃんと入れてくれます。
このプログラムを基盤に書き換えながら別のプログラムを作れます。

まとめ
いかがでしたか?
今回は、話題となっているChatGPTを使ってみました。
私は、ここ最近わからないことがある時にChatGPTを使って聞いていますが、会社で使う際は、直接仕事の具体的な情報を入力しないように心がけます(これは先輩からもよくよく言われています)。仕事と関係なく、サンプル的なアプリを作る時は、非常に便利なのでChatGPTを使いながらプログラムを学んでいきたいと思います。

今回はここまで
最後までご覧いただきありがとうございました!

新入社員ブログ 中島05『Windowsのショートカットキー』

こんにちは。22年度入社の中島です。

作業を行っている時、ショートカットを使わず
マウスを使って作業することが多かったので
少しでも作業効率を上げるために、ショートカットキーを調べていました。
今回はWindowsのショートカットキーを紹介したいと思います。

・Ctrl+T(タブを開く)
開いているブラウザで新しいタブが開きます。

・Ctrl+W(アクティブなタブを閉じる)
使用しているタブを消します。連打注意

もし、作業中に必要なタブを消してしまった時いちいち検索し直したり、
履歴に行くなんて面倒ですよね?そんな時は

・Ctrl+Shift+T(閉じたブラウザの復元)
閉じた順番に閉じたタブが復元します。
こちらも連打注意

・Windows+V(クリップボード)
画面右下にクリップボードが開きます。
今回ブログを書くきっかけになったショートカットキーです。
個人的に一番役に立つと思います。

・PrtSc(画面をスクリーンショット)
画面全体をスクリーンショットします。
ですが、デュアルモニターなどを使っていると二画面一緒に撮れてしまいます。
そんな時はPrtSc+Altを使って、必要な画面をスクリーンショットしましょう。

・Windows+Shift+S(選択範囲をスクリーンショット)
範囲を選択してスクリーンショットします。Ctrl+Vでそのまま貼り付けも出来ますし、
クリップボード内にも保存されるので、そこからも操作できます。

・Windows+1~0(タスクバーのアプリの起動 )
タスクバーのアプリの起動します。(起動している場合はアプリが開く)

上の画像の場合、Windows+1でエクスプローラーが起動し、
Windows+5でchromeが開くといったものです。

いかがでしたか?
今回紹介したものはごく一部です。ショートカットに興味が湧いてきたのなら下のブログを見てみるまたは、一度ご自身で調べることをオススメします。
いい発見になると思います!

よく使うウィンドウズのショートカット (xchange.jp)

今回はここまで
最後までご覧いただきありがとうございました!

新入社員ブログ 中島04 『PHPテキスト学習1』

こんにちは!そして明けましておめでとうございます。

22年度入社の中島です。

新年が明けたと思ったらもう一ヶ月が終わりました…
とても早い気がします。

『一月往ぬる二月逃げる三月去る』という言葉があるように、ぼーっとしていたらあっという間に四月になるかもしれませんね。

このままだとまずいと思い、今年の1月から技術力向上のためPHPのテキストで学習に取り組んでいます。

今回はその復習も兼ねて、簡単にブログにまとめていきます。

学習に使用したPHPのテキストはこのテキストです。

そして、学習した内容を大まかにまとめると

・PHPの基本
変数、定義、データ型、配列など

・演算子
代入演算子、比較演算子、論理演算子、ビット演算子など

・制御構文
if命令、switch命令、while/do命令、for命令、foreach命令など

・組み込み関数
文字列関数(mb_strlen関数、mb_substr関数、str_replace 関数)
配列関数(count 関数、array_merge 関数、implode関数)
正規表現(PCRE)関数(preg_match 関数、preg_replace関数、preg_split 関数)
ファイルシステム関数(fopen/fclose関数、fwrite関数、fgetcsv関数)

など現在進行形で学習しています。
そして表紙に書いてあるように
『手を動かしながら学ぶ』と書いてあるので、実際にプログラムを打って実行して動きを確認しながら学習しています。

[/crayon]

『テキストを読む』→『プログラムを打ち込む』→『プログラムを実行する』
この流れで学習を行い、理解できない部分は上司に聞いたりGoogleで調べながらより理解を深めていきます。
先ほどもお話ししたように現在進行形で学習中です。テキストのページも半分ほどでまだまだこれからなので、一生懸命取り組んでいきます。

今回はここまで
最後までご覧いただきありがとうございました!

新入社員ブログ 中島03 『フォローアップ研修』

こんにちは。22年度入社の中島です。

2022年12月21日
私はフォローアップ研修として、文章力向上研修を受講しました。
今回は研修での学習したことを感想を踏まえて、三つにまとめました。

1、文章力向上研修で学んだこと
2、今回の研修を受けて業務で生かしたいこと
3、感想

1、文章力向上研修で学んだこと
-文章を書く上で重要なことは「何の目的で」「誰に」「何を」「どう伝えるのか」である
-伝えたいことを項目化、グループ化し核を決める
-文章を短く、簡潔にする
-段落、文末などを意識し文章をまとめる
-主語、述語を記載する、明確に分かりやすく
-PREP法を使用する(P:結論、R:理由、E:事例、P:結論)

2、今回の研修を受けて業務で生かしたいこと
今回の文章力向上研修では上記のように様々なことを学びました。その中で特に私が業務で生かしたいと思ったことは、PREP法を使ってビジネス文書を記載することです。PREP法を使用すると、自分で一から文章を考えて作成するより相手に明確に伝えたいことを伝えられるからです。
また、読み手に確実に伝えるべきことを伝えることが重要だと学びました。普段の業務では、先輩や上司に何かを伝える際に冗長な文章になってしまいがちです。今後は目的をしっかり決めて短い文章で伝えるようにします。

3、感想
今回の文章力向上研修を受けて、今までの私は文章を書く際に結論から書くことは意識していましたが、短い文章で書く、文末は一緒ではない方が良い、など細かいところは意識したことがありませんでした。今後の業務では今回習ったことを生かせるように、まずはPREP法で伝える、ということから始めようと思います。

今回はここまで
最後までご覧いただきありがとうございました!