【GitHub】基本操作

前提

GitHub Desktopを使用

ローカルブランチ作成


コミット


ブランチの切り替え


プッシュ(ローカル⇒リモート)

ローカルブランチの内容をリモートブランチへ反映する際に行う

プル(リモート⇒ローカル)

リモートブランチの内容をローカルブランチに反映する際に行う

マージ

1.マージ先のブランチに切り替える
2.マージを選択

3.マージ元のブランチを選ぶ

4.プッシュ

リモートブランチを更新するにはプッシュを行うこと

ブランチ削除

【GitHub】導入

リポジトリの作成

リポジトリとは
プロジェクトに関わるファイルを保存・管理する場所のこと。
リモートリポジトリとローカルリポジトリがある。
リモートリポジトリはWeb上で管理されているが、ローカルリポジトリはlocal上で管理されているリポジトリ
共有する際は、リモートリポジトリに上げる必要がある。

作成方法:

GitHub リモートリポジトリが作成される。GitHub Desktopで使う際にcloneが必要
GitHub Desktop ローカルリポジトリが作成される。PUSH(リモートリポジトリに上げる)が必要
方法1.GitHubから作成


リポジトリの設定】

方法2.GitHub Desktopから作成



リモートリポジトリに上げるには「Publish repository」を行う


GitHub Desktopの導入

GitHub Desktopとは
コマンドではなく、ボタン操作でGitHubの一連の開発手順で操作できるGitHub用のアプリ。

インストール



【LINE、GoogleAppsScript】LINEにメッセージを送る

1.アカウント作成

1-1.LINE Official Account Managerアカウントを作成

LINE Business ID

1-2.通知用LINEアカウントを作成

※ログインするときはビジネスのほう

1-3.Line Developersアカウントの作成

LINE Developers

2.Messaging API チャネルの作成

2-1.プロバイダーの作成


2-2.Messaging APIを利用する

LINE Official Account Managerの設定を開く


Line DevelopersのプロバイダーにMessaging APIが作成される

3.アクセストークンの取得


4.Google Apps Scriptの作成(LINEユーザーIDの取得スクリプト

4-1.Google Apps Scriptを開く

Google Driveから
Google Drive: Sign-in

新しいプロジェクトを選択

4-2.ソースを記載する
// LINE Developersで取得したアクセストークン
const ACCESS_TOKEN = '3で取得したアクセストークン'; 

function doPost(e) {
  const json = JSON.parse(e.postData.contents);

  const event = json.events && json.events[0];
  if (!event) return;

  const userId = event.source.userId;
  const message = event.message ? event.message.text : '(no text)';
  const timestamp = new Date();

  // ユーザーに返信
  const replyToken = event.replyToken;
  const replyUrl = "https://api.line.me/v2/bot/message/reply";
  const headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer " + ACCESS_TOKEN
  };

  const payload = {
    replyToken: replyToken,
    messages: [
      { type: "text", text: "userID:"+ userId }
    ]
  };

  UrlFetchApp.fetch(replyUrl, {
    method: "post",
    headers: headers,
    payload: JSON.stringify(payload)
  });

  return ContentService.createTextOutput(JSON.stringify({ status: "ok" }));
}
4-3.デプロイ設定







5.Webhook URLを設定

5-1.LINE Developersのコンソールを開く


5-2.ウェブアプリURLを張り付ける


5-3.Webhookの利用を有効にする


6.BotアカウントとLINEで会話し、ユーザーIDを取得する

6-1.BotアカウントのIDを調べる

6-2.LINEを開き、ID検索で上記のIDを検索し、友達追加する
6-3.Botに対して何かチャットする
6-4.LINEの返信でユーザーIDが返ってくる

7.LINE通知スクリプトの作成

実行するとLINEメッセージが送られる

const LINE_TOKEN = 'XXXX';  // LINE Messaging APIのトークン
const USER_ID = 'UXXXX'; // 通知先ユーザーID

function sendLinePush() {

  const message = 'こんにちは!'  // 送るメッセージ
  const url = 'https://api.line.me/v2/bot/message/push';
  const headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer ' + LINE_TOKEN
  };

  const payload = {
    to: USER_ID,
    messages: [
      {
        type: 'text',
        text: message
      }
    ]
  };

  const options = {
    method: 'post',
    headers: headers,
    payload: JSON.stringify(payload)
  };

  UrlFetchApp.fetch(url, options);
}

【Apache、Tomcat】特徴と違い

特徴

項目 Apache HTTP Server Apache Tomcat
🎯 主な役割 静的コンテンツの配信 Javaアプリケーションの実行(特にServlet/JSP
📁 配信対象 HTML, CSS, JS, 画像, PHP など Java Servlet, JSP, WARアプリケーション
⚙️ 処理の特徴 静的ファイル中心、軽量 Javaの処理に強い(Webアプリ向け)
🔌 拡張性 mod_xxx系モジュールで強化(mod_ssl, mod_rewriteなど) JavaライブラリやWebアプリフレームワークとの連携(Springなど)
🤝 連携方法 TomcatなどとAJPやプロキシで連携可 単体でも動くが、静的ファイル配信はApacheとの組み合わせが多い
使用例 WordPressサイト、企業サイト Webシステム(社内システム、ECサイトなど)

違い

やりたいこと Apacheだけ Tomcatだけ 備考
HTMLや画像を表示する ✅(可能だが非効率) Apacheの方が高速で軽量
PHPを使ったサイト ✅(mod_phpなどで) TomcatPHP未対応
JSP/Servletを使うWebアプリ Java EEJakarta EE)環境が必要
JavaのWebアプリ(Spring Bootなど)を動かす WARファイルをデプロイ
HTTPS対応 ✅(mod_ssl ✅(Tomcat単体でもSSL対応) Apacheが多機能で設定簡単
URL書き換え(リライトルールなど) ✅(mod_rewrite 一部可能 Apachemod_rewriteが強力
負荷分散やリバースプロキシ ✅(mod_proxyなど) ❌(単体では難しい) Apache + Tomcatの構成がよく使われる

Apacheの主な目的と役割

目的 説明
🌐 Webページの配信 HTML、CSS、画像、JavaScriptなどのWebファイルをユーザーに届ける。
⚙️ リクエストの処理 ユーザーがURLを叩くと、HTTPリクエストを解析して適切なファイルや処理結果を返す。
🧩 動的ページの実行サポート PHPなどのスクリプト言語と連携して、動的なWebアプリケーション(ブログ、ログインページなど)を提供。
🔁 リバースプロキシ 他のサーバー(例:アプリケーションサーバー、Tomcatなど)との中継役として動作。
🏷️ バーチャルホスト管理 1台のサーバーで複数のWebサイトを同時に運用(例:example.com と blog.example.com を分ける)
🔐 セキュリティ設定 HTTPS対応、アクセス制限、ベーシック認証などでWebサイトを保護。
📊 ログの記録 アクセスログ、エラーログを記録し、監視やトラブルシューティングに活用。

Tomcatの主な目的と役割

目的 内容
Java Webアプリケーションの実行 Java ServletJSP(JavaServer Pages)を動かすためのサーバー
📦 WARファイルのデプロイ Java Webアプリケーションを .war 形式で配置して、すぐに起動できる
🌐 Webコンテナ(Servletコンテナ)としての動作 クライアントからのHTTPリクエストをServletにルーティングし、レスポンスを返す
🔄 リクエストとレスポンスの管理 HTTPのリクエスト処理、セッション管理、クッキーの処理など
📁 Webアプリの構造管理 /WEB-INF, /WEB-INF/web.xml, /WEB-INF/classes, /WEB-INF/lib などのディレクトリ構成を理解して動作
🧰 開発~本番環境での利用 軽量なため、ローカル開発用にも本番用にも使える

まとめ

Apache は「軽量で静的なWebサーバー(HTMLや画像向け)」
Tomcat は「Java Webアプリケーション専用サーバー」
本格的なJavaのWeb開発をするなら Tomcat
HTML/CSSPHPなどのWebサイトを配信するなら Apache

【Java】文字列操作メソッドまとめ

フォーマット変換(String.format)

指定したフォーマットにしたがって文字列を作成できる関数
置き換え元の値がnullの場合、Nullと表示されるので注意。
【Java】値の置き換え(String.format) - アルパカノフン

System.out.println(String.format("%sさんは%d歳", "田中", 20)); // 田中さんは20歳

比較(equals)

値を比較する。
Stringのequalsはnullでエラーになるため非推奨。
【java】文字列の比較(equals) - アルパカノフン

"あ".equals("あ")  // true

ブランクチェック(isEmpty)

文字列がブランクかチェックする。
nullの場合、エラーになるため非推奨。
【Java】nullチェック - アルパカノフン

String hoge = "";
System.out.println(hoge.isEmpty()); // true

文字列連結(StringBuilder)

文字列を連結する。
Stringクラスを+で連結するより処理効率が良い。
追加する値がnullの場合、「null」が結合される。
【Java】文字列の連結(StringBuilder) - アルパカノフン

StringBuilder sb = new StringBuilder();

sb.append("あいうえお");
sb.append("かきくけこ");
System.out.println(sb); // "あいうえおかきくけこ"

// String型へ変換
Strint str = new String(sb);

先頭または末尾の文字列を調べる(startsWith、endsWith)

先頭or末尾の文字列を調べる。
startsWithは開始位置を引数で指定することもできる。(0が1文字目)
調べる文字列がnullの場合、エラーになる。

// startsWith
System.out.println("あいうえお".startsWith("あ")); // true
System.out.println("あいうえお".startsWith("い")); // false

System.out.println("あいうえお".startsWith("い", 1)); // true

// endsWith
System.out.println("あいうえお".endsWith("お")); // true
System.out.println("あいうえお".endsWith("え")); // false

部分文字列を取得する(substring)

開始位置と終了位置(任意)を指定して文字列を取得する。
nullの場合、エラーになる。

// 2文字目以降を取得
System.out.println("あいうえお".substring(1)); // いうえお

// 1文字目から2文字目までを取得
System.out.println("あいうえお".substring(0, 1)); // あ

// 1文字目から3文字目までを取得
System.out.println("あいうえお".substring(0,2)); // あい

【Java】値の置き換え(String.format)

概要

String.formatとは指定したフォーマットにしたがって文字列を作成できる関数。
置き換え元の値がnullの場合、Nullと表示されるので注意。

使い方

System.out.println(String.format("%sさんは%d歳", "田中", 20)); // 田中さんは20歳

System.out.println(String.format("%sさんは%d歳", null, 20)); // nullさんは20歳

System.out.println(String.format("日付: %tF", new Date())); // 日付: 2024-12-17

【基本】

指定子 説明 入力例 出力
%s 文字列 String.format("%s", "abc") abc
%d 10進数の整数 String.format("%d", 123) 123
%f 10進数の固定小数点表記 String.format("%.2f", 123.456) 123.46
%b ブール値 (true/false) String.format("%b", null) false
%B ブール値 (大文字表記) String.format("%B", true) TRUE

【編集】

指定子 説明 入力例 出力
, 3桁ごとにカンマを挿入する String.format("%,d", 1234567) 1,234,567
. 小数点以下の桁数を指定する (浮動小数点用) String.format("%.2f", 123.4567) 123.46
0 数値の左側を0で埋める (指定幅が必要) String.format("%05d", 123) 00123

【日時】
※他にもあり

指定子 説明 入力例 出力
%tF 年月日(1970-01-01~9999-12-31) String.format("%tF", new Date()) 2024-12-17
%tT 時刻(00:00:00~23:59:59) String.format("%tT", new Date()) 21:54:13
%tY 年(0000~9999) String.format("%tY", new Date()) 2024
%tm 月(01~12) String.format("%tm", new Date()) 12
%td 日(01~31) String.format("%td", new Date()) 17
%tH 時(00~23) String.format("%tH", new Date()) 21
%tM 分(00~59) String.format("%tM", new Date()) 54
%tS 秒(00~59) String.format("%tS", new Date()) 13
%tA 曜日 String.format("%tA", new Date()) 火曜日

【Linux(Ubuntu)】デプロイ、Apacheとの連携

デプロイ

1.tomcatのwebappsディレクトリにwarファイルを配置する

webappsの場所(例)

/opt/apache-tomcat-9.0.95/webapps

2.tomcatを再起動する

コマンド

sudo systemctl restart tomcat
3.デプロイの確認

アクセスする


Apacheとの連携

mod_proxyモジュールの有効化

コマンド

sudo a2enmod proxy
sudo a2enmod proxy_http
Apacheのバーチャルホスト設定

デフォルトのバーチャルホストファイルは

/etc/apache2/sites-available/000-default.conf

sudo vi /etc/apache2/sites-available/000-default.conf

000-default.conf

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    # 静的コンテンツの処理
    <Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>

    # Tomcatへのプロキシ設定
    ProxyPass /demo http://localhost:8080/demo
    ProxyPassReverse /demo http://localhost:8080/demo

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

ProxyPass:Apacheが/demoに対するリクエストをTomcatに転送する
ProxyPassReverse:Tomcatから返されるレスポンスをApache経由で正しく返すための設定

Apacheの再起動

コマンド

sudo systemctl restart apache2
起動確認

80ポートから実行できることを確認する