02 2月 Study – git 基礎まとめ 【clone~プロジェクト編集~push】

gitの勉強会を受けての復習と、今後の開発でgitをマストで使っていくため簡単にまとめてみました。 基礎的な部分のみ、clone~プロジェクト編集~pushまでの一連の流れになります。 前提 ・環境はwindows ・gitコマンドをコマンドプロンプトで受け付けるようにしています。・勉強会ではGitLabを使用していましたが、次の開発がGitHub予定のためGitHubを使用 ・エディターはvscodeを使っています(編集ファイルはHTMLファイルのみ) 1. clone まずは新しく開発に参画した際を想定して、プロジェクトをGitHubから持ってくるところから GitHubのプロジェクトページにある右上緑のCodeにURLがあるのでコピー ターミナルを開いて、今回のプロジェクトを保存したいディレクトリまで移動するか(cdコマンド)、エクスプローラーでプロジェクトを置きたいフォルダでcmdを開く (今回はgit_testというディレクトリを選択しています。) コマンドプロンプトに次のコマンドを入力します。 git clone <URL> cloneすると、フォルダにプロジェクトが入ります。 VScodeでこのフォルダを開いてみるとプロジェクトが無事ローカルにインポートされていて、編集できるのが確認できます。 2. branch またターミナルに戻り、プロジェクトファイルのディレクトリに移動しますcd TestCode 編集する前に、developという名前でブランチを切っておきます git branch develop 次のコードでbranchの状態を確認します git branch 今現在のbranchを示しているのは*で表示されています。 先ほどのコードはdevelopというブランチを作って確認しただけですので、ブランチを切り替える必要があります では、以下のコードを打ってみましょうgit checkout develop このように表示されていれば切り替わっています。 念のために git branch での確認でも、切り替わっているのがわかります 3. ファイル編集 それではHTMLファイルを編集してみます 先ほどのHTMLファイルの10行目にテキストを追加しました。 編集が終わったら、git statusで確認してみます。 赤く表示されているのが差分のあるファイルです。 4. add それではtest.htmlをステージングエリアに追加してみましょう git add test.html (すべてのファイルをaddする場合は、git add . ) git statusで確認すると緑色に変わりました。 5. commit 次はcommitします git commit -m "コメント" " "←この部分はコメントを入れられます。必ずいつ何を編集したかなど、コメントを入れるようにしましょう 今回は日付と編集内容をコメントに入れました 6. merge それでは次にプロジェクトの統合をするためmergeしていきますまずはブランチをmasterへ切り替えます git checkout master 念のために切り替わったことを確認 masterが緑色に マージしますgit merge develop 7. push それでは、リモートリポジトリにプッシュしていきます git push origin master ちなみにこのmasterというのはリモートレポジトリのmasterブランチを指しています 実際の現場では、どのブランチにpushするのか指示に従う必要があります ※もしここで自分が持っているプロジェクト(cloneやpullした状態)とGitHubに上がっているプロジェクトに差分があった場合はエラーとなります(競合)一度、GitHubから最新の状態のプロジェクトを自分のローカルレポジトリにpullしますgit pull origin <ブランチ名> 開発は他の人と同時にしているはずですので、実際は競合することの方が多いと思います。 pushのコマンドを実行すると以下のように GitHubのプロジェクトページを更新してみると、次のように編集したファイルが確認できると思います commitの際に自身が入れたコメントも一緒に確認できます htmlをクリックしてみましょうテキストが追加された状態のHTMLが表示されています。 最後に、最新の状態をpullして再度作業に取り掛かるための準備をします まずは自身の作業していたブランチを削除しますgit branch -d develop そしてプルしますgit pull origin master 再度2.branchから始めて、ブランチを切っていくところから進めていきます 基本的にはこの繰り返しになります。 最後に 省略してしまいましたが、どの開発現場においてもpushしてGitHubにプロジェクトを上げる際に、プルリクエストをするのが基本です(というよりこのリクエストをプロジェクト責任者に承認してもらわないと、マージされない) また、cloneやpullをするファイルも、プロジェクトファイル全部を持ってくるのではなく、設定ファイル等はそのままに指定されたファイルのみclone、pullするケースが多いかと思います。 このあたりのルールは開発現場によって異なると思いますので要確認です。 【git勉強会レポートはこちら】 ...

Read More

23 11月 Study – Linux×CentOS サーバー基盤構築勉強会

研修テーマ:基盤構築 実装スキル 日時:2022/11/23目的:システム基盤のサーバー構築の設計、実装を学ぶ 【内容】 ・稼働中のトラブル、アクシデントに対応できるよう冗長化した基盤構築データベースサーバーを2台、WebAPサーバーを2台にすることにより、どちらか一方のサーバーが落ちても稼働を止めることなく運用できる。 ・サーバーを冗長化するにあたり、監視や運用をするサーバーも必要になるロードバランサ、データベースクラスターや運用管理サーバーなどの構築も学んだ。 ・Linuxの基本仮想環境でサーバー構築する場合は、Linuxを使うことがほとんどであるため、Linuxのファイルやディレクトリ操作、コマンドを知ることは必須である。 ・サイジングやパラメータ設計構築する上で必要なスペックの把握が大切。スペックが不足してトラブルが起きないようにするのはもちろん、オーバースペックにより予算に負担がかからない設計方法を学んだ。 ・性能測定および改善Webページにアクセスするのにどれくらいの時間がかかるか等、非機能要件の部分を把握し、原因の特定および改善をする。 【所感】 アプリ開発をするにあたり、プログラムの作成やコーディングも大切だが、アプリケーションの土台となるシステム基盤は運用していく上でさらに大切な部分。どんなに見栄えのよいアプリケーションを作っても、アクセスの集中やサーバーの不具合などによりアプリケーションの稼働が止まってしまっては意味がない。そのために正しい構成を設計することが大事だと感じた。また、実際に7つのサーバーを動かすことにより、クライアントが利用できるまで裏側ではどのような動きをしているか学び、それぞれのサーバーにはその役割を担うミドルウェアが存在するが、その知識も増やすことができた。普段利用しているWebアプリなどでは当たり前に感じてしまうが、ページをリクエストしてからどれくらいの早さで表示されるかなど、使う側にとっては非常に重要な部分を作っている。 ...

Read More

08 11月 Study – コンテナ型仮想化技術 Docker勉強会

研修テーマ:Docker 日時:2022/11/08目的:開発に必要なツールの用法を学ぶ 【内容】 Dockerの使い方 ・システム基盤の基礎知識  改めてシステム基盤の構成や仮想環境の成り立ち、仮想環境の種類などを学んだ ・Dockerの環境構築と使い方VirtualBox上のCentOS7でDockerを使いCentOS7を作ってWebサーバーを構築しNginxがDocker上でも起動することを体験   ・Dcocker内のCentOSにJava、Pythonの環境を構築して動かす  Dockerを用いれば簡単に素早く共通の開発環境を作れるので、開発作業に入るまでの時間を短縮できるのが使用するメリットだと感じた。 【所感】 Dockerは基板やネットワークに関する知識がほとんどない中だと何をやっているのかがわかりづらく簡単すぎてインフラの勉強にはならないとの言葉通り、環境構築が出来たという経験をすることにより少し自信にはなったが、詳細を理解するのにはまだまだ時間がかかりそうだと感じた。 しかし、車のエンジンの仕組みを理解していなくても運転は出来るように、詳しいことはわからずとも要点を抑えて利用出来るようになるだけなら、そこまでハードルは高くないのではないかとも思えた。約3時間の短い時間だったが、実際に手を動かすことによって具体的な動きがわかったので、勉強会参加後の学びの吸収速度が上がった。 ...

Read More

07 11月 Study – 分散型バージョンシステム Git 勉強会

研修テーマ:Git 日時:2022/11/07目的:開発に必要なツールの用法を学ぶ 【内容】 Gitの使い方 ・分散型バージョン管理システム(Git)と中央集中型バージョン管理システム(Subversion)の違い今回学んだgitは分散型であり、個々での管理や作業が容易、サーバーやネットワークに繋がっていなくても作業ができるなどのメリットがある。 ・バージョン管理の必要性とGitのシステム行った変更を常に残しておく事ができるため、プロジェクトを前の状態に戻したり、修正がしやすい。gitを使う主な目的の一つ。 ・GitHubとGitLabの違い基本的な部分は同じだが、ライセンスやUIなど細かな違いがある。それぞれの違いを理解することができた。 ・GitLabでクローンからプッシュまでのハンズオン実際にテストファイルを用いてGitLabからファイルを複製し、変更を加えたものをプッシュを行うことでGitLab上に変更したものが反映されてバージョン管理されていることをハンズオンにて体験 ・チームでの使い方(マージのやり方)gitを使う主な目的がバージョン管理とこのチームでの使用である。それぞれ作業が終わったタイミングでマージをして一つのアプリケーションを開発していく。 ・チーム開発で最も大切な事はコミュニケーションgitはチーム開発を円滑にしてくれるが、それだけではなく普段のコミュニケーションを大事にしなければ成り立たない事も学んだ。 ・GitとEclipseの連携方法実際にEclipse内で操作をして、プロジェクトを編集をした後にgitLabに上げた。 【所感】  そもそもGitとは何か、なぜバージョン管理が必要なのか等の基礎から教えていただき、分散型バージョン管理システムであるGitの長所と必要性が理解できた。 Gitには様々なコマンドがある中、実際の現場でのcloneからpush、mergeまでの一連の流れをハンズオンで体験することによって、使用頻度の高いであろうコマンドとその用法を短い時間でも十分に学ぶことが出来た。また、一人だと勉強しづらいチーム開発で利用する際の流れも体験することが出来た。 この勉強会に参加する前からGitHubに自分のコードをアップしたりはしていたのでわかっているつもりになっていたが、いざ複数人でコードを管理するとなるとブランチを切ったり、プルリクやマージ等、の作業が増えて意外と混乱した。 今回、実際の使い方の流れを経験することによってGitを使ってバージョン管理する際の具体的なコマンドは一通り網羅出来たので、勉強会後、早速使ってみることが出来た。大枠の流れは学ぶことが出来たので、チームで実際に試してうまくいかない時には相談する事で、勘違いしやすい点や間違いやすいコマンドが洗い出され、それを解決することによってGitに関する理解を深めることが出来た。 特にCUIによる操作に馴染みがある人は少なく、中には拒否反応を示す人も一定数いると思うので、頭で理解することも重要だが、実際にたくさんコマンドに触れて身体に馴染ませ、CUIによる操作を恐れず身近に感じる事が大切だと感じた。 今回の勉強会は実際のクローンからマージまでの一連の流れを網羅することが出来た。 今後、今回学んだことを反復して身体に染みこませ、Gitを使いこなすことが出来るようになっていくための大きな足がかりとなった。約3時間の短い時間だったが、実際に手を動かすことによって具体的な動きがわかったので、勉強会後の学びの吸収速度が上がった。 ...

Read More

01 11月 Study – Java Springフレームワーク 勉強会

研修テーマ:SpringFrameWork 日時:2022/10/24〜11/1 (15h)目的:SpringFrameWorkの基本を学ぶ 【内容】 ・DIなどのspringの基本を学んだspringを使う上で非常に大事なのがDI。プログラム全体の管理がしやすくなり、バグ発生のリスクも少なくなる。 ・AOPの理解DIと並びもう一つ大事な概念がAOP。様々なクラスでの共通処理をまとめて管理できるため、こちらもプログラムの管理がしやすくなる。 ・SpringBootから始め、他のSpringの種類をひとつずつ学ぶSpring Frameworkの一部であるが、まずは全体を理解をするために使いやすいSpring Bootから学んだ。 ・spring securitySpringに備わっている認証機能で、手軽にセキュリティ保護ができる。パスワードのハッシュ化なども体験。 ・アノテーションについての学習クラスやメソッドに情報を付け加えたり機能を持たせることができる。様々なアノテーションがあるため、Springでの開発時にはどんなアノテーションがあるのかを知ることが重要。 ・ビルドツールコンパイルを始め、プロジェクトを稼働するのに必要となる工程をまとめて管理・作業してくれるのがビルドツール。今回はGradleを使い学んだ。 【所感】 SpringはJavaを使い開発をするフレームワークであるため、歴史もあり基幹システムなど重要なシステム開発において多く使われている。そのためSpringが持っている機能は多く、Webで表示される表側ではTymeleaf、ログインなどの認証機能を実装できるSpring Security、またデータを扱うためのSpringData、SpringJDBC、JPAなどがある。これらがどのように使われるものなのかを一つ一つ解説していただき、アプリケーション開発全体を掴むことができた。特にDIの理解が一般的には難しいとされているが、図解や実例などにより非常にわかりやすく、Springフレームワークを使うメリットが大きく感じられた。AOPもまた同じで、このあたりを使いこなすことが大事である。データベースを扱う方法も複数あり、どのくらいの規模であるか、どのようなシステムなのかにより使い分ける事ができる。SQL文を書くことなくデータの抽出や更新ができるものもあるため、簡単なアプリケーションであればすぐに開発ができると感じた。 ...

Read More