テスト

よしデブ Blog

プログラミング、Web、IoTの話を発信。

新型コロナウイルス感染症対策サイトに貢献しました!

はじめに

こんにちは、よしデブです。

新型コロナウイルスが日本だけでなく、世界中で猛威を振るってますね...!!😭

そんな中、各都道府県の公式/非公式の新型コロナウイルス感染症対策サイトがリリースされているのを皆さんご存知でしょうか!

しかも、それらのサイトのソースコードGitHubに公開されており、

誰でも開発する事ができます。

東京都が初めにサイトを公開し、その後各都道府県に波及していってます。

f:id:yoshidev523:20200319220917p:plain

今回、本サイトの改善に貢献したのでその紹介をしたいと思います。

やったこと

今回私はflowページにある「印刷ボタン」にマウスオーバーした時に緑色に反転させる修正を行いました。 github.com

同じflowページの 詳細を見る(東京都福祉保健局)ボタン や、トップページの 相談の手順を見るボタン がマウスオーバーで色が緑色に反転していました。 これを踏まえて UXに統一感を出すため、flowページにおける印刷ボタンにマウスオーバーした時に緑色に反転させよう!と思い立ち、自らissueを立てて開発を始めました。

▼修正したものがこちら(新型コロナウイルス感染症が心配なときに | 東京都 新型コロナウイルス感染症対策サイト )▼

f:id:yoshidev523:20200319232936p:plain
before

f:id:yoshidev523:20200319232950p:plain
after

重箱の隅をつつくような軽微な修正ですが、自分で修正したものがこのように反映されるのはとてもやりがいを感じました!!

参考にした記事

こちらのサイトを参考にしました。投稿者は学生さんだそうです!(すごい)

新型コロナウイルス感染症対策サイトに関わってる人たちにとっては有名な記事です!

qiita.com

おわりに

今回は新型コロナウイルス感染症対策サイトの修正に携わりましたので紹介をしました。

みなさんも手軽に参加でき社会貢献できるので是非やってみてください!

現在は大阪版もリリースされており、GitHubも公開されているので関わっていきたいなと思います!

github.com

ご指摘、ご意見などがあれば、コメントお願いします。またTwitterのDMにでもご連絡いただけたらと思います。みきてぃ/よしデブ(@yoyoyop523)| Twitter

Sketchでアイコン作ったよ

はじめに

こんにちは、よしデブです。

最近デザインに興味がありまして、SketchというUIデザインツールでアイコンを作成したので紹介していくこうと思います!

Sketchとは

ご存知の方もおられるかと思いますが、SketchはUIデザインツールの中で最も知られているアプリケーションの1つです。

www.sketch.com

webアプリケーションのモックデザインや簡単な画像編集ができるデザインツールです。

作ったもの

今回Sketchで作成したアイコンがこちら。

アイコン
アイコン

よしデブの「デブ」は本来 developer(開発者) の意味ですが、今回は「デブ=太っている人=豚」という事で豚のキャラクターを描いてみました。

また、よしデブのアルファベット表記 はyoshidev です。頭の「yos」をとってiOSならぬ「yOS」という事でシリーズ化して行こうと思っています!記念すべきver.1.0がリリースされました🎉

yos_ver1.0
yOS ver.1.0

ボツ案

他にもいくつか案が出ましたがもう日の目を浴びる事がないので、ここでご紹介。

Sketchアプリ画面
Sketchアプリ画面

ボツ案1

案1
案1

一番最初に浮かんだやつ。豚らしい色の赤を基調としたデザイン。豚のグラデーションが気に食わなくてボツ。

ボツ案2、3

案2、3
案2、3

アイコン作成中に妻が割り込んできて作成したやつ。色合いが落ち着いていてとても良い。少し女性らしすぎるなという事でボツ。

ボツ案4

案4
案4

とにかく青い。ボツ。

おわりに

今回はSketchで作成したアイコンをご紹介しました。 簡単に作ることができて楽しかったです。これからもどんどんSketchで遊びたいです。

ではでは。

ご指摘、ご意見などがあれば、コメントお願いします。またTwitterのDMにでもご連絡いただけたらと思います。みきてぃ/よしデブ(@yoyoyop523)| Twitter

【チュートリアル付き】gitに初挑戦してみようぜ!〜③初めてのGigHub〜

はじめに

こんにちは、よしデブです。

やっときました、git最終回。

今回は GitHubを使ったコードのリモート管理 を体験していただきたいと思います。git初めての方はもちろん、便利なオプションも紹介したいと思うので、経験者にも参考になれば幸いです。

前回のおさらい

前回の記事はこちら。 yoshidev523.hatenablog.com

前回は主に以下のことを体験してもらいました。

  1. ブランチを切る
  2. ブランチを切る恩恵を感じる
  3. マージする
  4. チーム開発の流れについて

前回までは全てローカル、つまり自分のPCでしかコードを管理することができません。 今回はリモートで管理するための方法について簡単に説明します!

チーム開発

チーム開発では普通、開発者がそれぞれのPCで作業をするため、複数台のPCで連携して作業する必要があります。 そのためには、gitサーバーというものを構築し、ソースコードをリモート上で管理してシェアする必要があります。

GitHub

自前でgitサーバーを構築して運営するにはコストがかかります。そこで登場したのがgitサーバーを提供するサービスです。 その代表に GitHub というサービスがあります。GitHubは世界中で多くの企業でも利用しているソフトウェア開発のプラットフォームであり、ソースコードをリモートで管理できるサービスです。 今回はこのGitHubを利用してリモートでのソース管理を体験しましょう!

チュートリアル

第一回、第二回の内容を踏まえた上で続きをやっていきましょう!

動作環境

動作環境は前回と同様、以下の通りです。

  • macOS 10.14.5(Mojave)
  • git v.2.21.0
  • Python v.3.5.7(Python3系ならどれでもOKです)

GitHubにアカウント登録する

GitHubのアカウントをお持ちでない方はこちらでアカウントを登録してください。 以下の操作を行ってください。

  1. ユーザ名、メールアドレス、パスワードを登録
  2. プランはFreeを選択
  3. メールアドレスに確認メールが届くので確認する

↑ユーザ名、メールアドレス、パスワードを登録

↑Freeを選択

↑メールが送られるので、メールを開いて登録を完了させる

SSH鍵を作成してGitHubに登録する(ssh-keygenコマンド)

次にGitHubSSH公開鍵を登録するためにSSH鍵を生成します。 まず、ターミナルでssh-keygen -t rsaというコマンドを実行します。次に色々入力を求められますが全てEnterキーで次に進んでください。 最後までいくと、~/.sshの中にiid_rsa.pub (公開鍵)id_rsa (秘密鍵)が生成されます。

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/yoshikihonda/.ssh/id_rsa): (Enterキー)
Enter passphrase (empty for no passphrase): (Enterキー)
Enter same passphrase again: (Enterキー)
Your identification has been saved in /Users/yoshikihonda/.ssh/id_rsa.
Your public key has been saved in /Users/yoshikihonda/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:+rJmOqgsoVQ9pw3safuRnFYgvdBXrBunskG5+743uEE yoshikihonda@Castor.local
The key's randomart image is:
+---[RSA 2048]----+
|          ..     |
|      o   ..     |
|    oo +...      |
|   . =o++o .     |
|  . . O.SE=      |
|..   =.*=o       |
|o. .. o*=..      |
|+ . ..=+...o     |
|oo  .=o++=+ .    |
+----[SHA256]-----+

事前に公開鍵をコピーしておきましょう。cat ~/.ssh/id_rsa.pubコマンドで出力される内容をコピーしてください。

決して秘密鍵(id_rsa)をコピーしないように注意してください!!あなたのGitHubが乗っ取られてしまいます。

さて、これで準備ができたのでGitHubに公開鍵を登録していきましょう。 設定画面のメニューからSSH and GPG keysを選択します。 次にNew SSH keyをクリックしてください。 Titleには適当に名前をつけてください、Keyには先ほどコピーした内容を貼り付けてください。ここで注意して欲しいのが、 最後に改行を入れないことです。 認証が失敗してしまうので気をつけてください。

リモートリポジトリの作成

お待たせしました、リモートリポジトリを作成していきましょう。 リポジトリ作成ページから「リポジトリ名」はpython-git、「公開/非公開」は非公開を入力し、Create repositoryをクリックして作成します。

画面遷移後、Quick setup ~とあると思います。ここでSSHを選択し、出力される内容をコピーしておきましょう(git@github.com:{ユーザ名}/python-git.gitとなってるはず)

↑「リポジトリ名」、「公開/非公開」を入力

↑URLをコピー(SSHの方をコピーしてください)

リモートリポジトリの登録(git remote add コマンド)

先ほど作成したリモートリポジトリをローカルリポジトリに登録します。 登録にはgit remote addコマンドを実行します。ローカルのリポジトリ直下で以下のコマンドを実行してください。

$ git remote add origin git@github.com:{ユーザ名}/python-git.git

ここでoriginというのはリモートレポジトリの名前です。実はこの名前は何でも良いのですが習慣的にoriginという名前をつけます。(gitの推奨なのかな…?)

【おまけ】リモートリポジトリの確認(git remote -v)

リモートリポジトリを確認するにはgit remote -vコマンドを実行します。

$ git remote -v
origin  git@github.com:{ユーザ名}/python-git.git (fetch)
origin  git@github.com:{ユーザ名}/python-git.git (push)

【おまけ】リモートリポジトリの設定変更(git remote rename/git remote set-url)

リモートレポジトリの名前を変更するにはgit remote renameコマンドを実行します。以下のコマンドはoriginから"新しい名前"に変更します。

$ git remote rename origin {新しい名前}

リモートリポジトリの登録URLを変更するにはgit remote set-urlコマンドを実行します。以下のコマンドはoriginのURLを変更します。

$ git remote set-url origin {新しいURL}

リモートリポジトリにソースをアップ(git push)

続いてローカルのソースをリモートにアップしましょう。そのためにはgit pushコマンドを実行します。

$ git push origin master
Enumerating objects: 9, done.
Counting objects: 100% (9/9), done.
Delta compression using up to 4 threads
Compressing objects: 100% (6/6), done.
Writing objects: 100% (9/9), 1.04 KiB | 532.00 KiB/s, done.
Total 9 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), done.
To github:yoshidev523/python-git.git
 * [new branch]      master -> master

これはoriginというリモートリポジトリにmasterの内容を反映させるということを意味します。 また、実行結果はmasterブランチをリモートに新たに作成したことを意味しています。

リモートでのソースを確認

最後にGitHubでソースを確認しましょう。https://github.com/{ユーザ名}/python-gitにアクセスするとcalc.pyがアップされていることが確認できるかと思います。

やったぜ。

おわりに

今回はgit操作のチュートリアル第三弾として、GitHubによるリモートでのコード管理を体験していただけました。

これにてgitに初挑戦してみようぜ!シリーズは終了です!これでgitの基本的な使い方は共有することができたかなと思っております。

gitは他にも便利なコマンドがありますし、GitHubの機能はまだまだ紹介しきれないことがあるので、gitの使い方に慣れてから調べられると良いと思います!本ブログでもニッチなコマンドを紹介できればと思います!

ではでは。

ご指摘、ご意見などがあれば、コメントお願いします。またTwitterのDMにでもご連絡いただけたらと思います。よしデブ(@yoshidev523)| Twitter(https://twitter.com/yoshidev523)

【スマートホーム計画】Amazon Prime Dayで激アツなものを買っちゃった。

はじめに

こんにちは、よしデブです。

先日Amazon Prime Day 2019が開催されましたね!

皆さんも何か買いましたか?

私は買っちゃいましたよ、ロマンのあるIoTガジェットを。

今月末に引っ越すのですが、 これから新たなお家のスマートホーム化計画を進めて行こうと思っています。

ということで、今日は買ったものについての紹介です。

Nature Remo

購入したものはこちら。

Nature RemoとNature Remo miniです!!

公式ホームページはこちら。 nature.global

何ができる?

公式ホームページによると、

Nature Remo(ネイチャーリモ)は、お使いの家電をインターネットに繋げることで、手軽にスマートホームを実現するスマートリモコンです。例えば、外出先からスマートフォンでエアコンを操作したり、Google Homeグーグルホーム)やAmazon Echo(アマゾンエコー)から音声でテレビや照明を操作することができます。

よくありがちなスマホスマートスピーカーと連携してテレビとか電気を操作するやつです。

また、センサーが豊富というのも魅力的です。

Nature Remoは温度センサー、湿度センサー、照度センサー、人感センサーが組み込まれています。 これらの情報は専用のスマホのアプリで見ることができ、それらの値によって家電を操作することができるようです。

購入した理由

私はこれを買う以前にも、eRemote miniというものを購入してAmazon echoと連携していました。

eRemote /eRemote mini |スマートホーム IoT LinkJapan

eRemote miniもNature Remoと同等の機能は持っています。実際に、電気を消したりテレビをつけたりして大活躍しています。

しかし!!

Nature Remoにはそれを上回るロマンがありました。

なんと、APIが公開されているのです。

つまり、用意されたスマホアプリを使えるだけでなく、自分の好きな機能をAPIを使って自作できるということなんです!

ロマン溢れるじゃないですか...😋

例えばこんなことができます。

  • 外出中にお家の室温が高くなったとLINEに通知を送るようにする。
  • 朝になったら明るさを検知して、自動でテレビをつける(目覚まし機能でええやん。いや、これがロマン)

面白そおおおおおおおおおおおおおお。

APIはこちら。

今後の展望

今回はNature Remoシリーズの紹介までにしておきます。

引っ越し後には設置した様子やAPIを使って作ったものを紹介できればと思います!!

こいつを使って新たなお家をスマートにしていくぜ!!!

おわりに

今回はスマートホーム計画ということで、Nature Remoについてのご紹介でした!

ところで、なぜNature RemoとNature Remo miniの2つも買ったんだと思う方もいらっしゃるでしょう。

なぜ2つも買ったかというと、欲しかったから。

ではでは。

ご指摘、ご意見などがあれば、コメントお願いします。またTwitterのDMにでもご連絡いただけたらと思います。よしデブ(@yoshidev523)| Twitter

【チュートリアル付き】gitに初挑戦してみようぜ!〜②初めてのbranch作成からmergeまで〜

はじめに

こんにちは、よしデブです。

前回に引き継ぎ git の操作を行っていきましょう。

今日は第二回ということで ブランチを用いた開発およびコード管理 を体験していただきたいと思います。git初めての方はもちろん、便利なオプションも紹介したいと思うので、経験者にも参考になれば幸いです。

前回のおさらい

前回の記事はこちら。 yoshidev523.hatenablog.com

前回は主に以下のことを体験してもらいました。

  1. コードを変更する
  2. コードを変更記録対象に指定する(git addコマンド)
  3. コードの変更を確定して記録する(git commitコマンド)

これらの作業は一つのブランチ上で行われます。

ブランチ(branch)とは?

ブランチは、ざっくり言うとコードを書く作業場です。

gitは必ずどこかのブランチ上で開発するようになっています。

ブランチは複数作ることができます。 このブランチという機能が、開発にgitを用いる上で一番の利点と言って良いと思います。 コードを書く作業場(ブランチ)を複数作ることで 他の作業場を汚すことなく開発することができます。

「汚すことがない」とはどういうことなのか、以降のチュートリアルで説明していきます。

チュートリアル

第一回の内容を踏まえた上で続きをやっていきましょう!

動作環境

動作環境は前回と同様、以下の通りです。

  • macOS 10.14.5(Mojave)
  • git v.2.21.0
  • Python v.3.5.7(Python3系ならどれでもOKです)

ブランチを作成して切り替える(git branchとgit checkout)

まず、現在のブランチが何なのかを確認します。確認にはgit branchコマンドを用います。

$ git branch
* master(緑色で出力)

現在のブランチがmasterブランチであることを確認してください。 masterブランチは最初にデフォルトで作成されるブランチです。

次に新しいブランチを作成します。 git branch {ブランチ名}でブランチを作成できます。今回はcalc-powerブランチ(累乗を計算する機能を作るブランチ)を作成します。 このようにブランチ名はそのブランチで何の機能を作るのか(修正するのか)を表すようにつけることをオススメします。

$ git branch calc-power
$ git branch
  calc-power
* master(緑色で出力)

さて、新たにcalc-powerブランチが作成されたことを確認します。 ここで注意してほしいのは、 ブランチは作成されたがそのブランチに未だ移動していない ということです。 ブランチを切り替えるコマンドはgit checkout {ブランチ名}です。 以下のコマンドでブランチを切り替わったことを確認してください。

$ git checkout calc-power
Switched to branch 'calc-power'
$ git branch
* calc-power(緑色で出力)
  master

【おまけ】ブランチを切る

補足ですが、このブランチを作成することはよく 「ブランチを切る」 と表現されます。 ブランチ(branch)は日本語でという意味で、枝分かれするイメージで切ると言われているのかな... 私もその辺はよくわかっていません笑

以降、ブランチを切るという表現を使うことがありますので、ブランチを作成するという風に読み替えてください。

【おまけ】ブランチ作成と切り替えを同時に行う(git checkout -b)

git branchでブランチを作成し、git checkoutでブランチを切り替えるという動作をまとめて行うコマンドがあります。 それはgit checkout -b {ブランチ名}というコマンドです。 既存のブランチ名を指定すると失敗するので注意してください。

$ git checkout -b calc-power
Switched to a new branch 'calc-power'
$ git branch
* calc-power(緑色で出力)
  master

次回からgit checkout -b {ブランチ名}というコマンドで、新たなブランチの作成および切り替えをしていきます。

ファイルを変更しコミットする(git addとgit commit)

calc-powerブランチに切り替えができれば、ファイルに機能追加をしていきましょう。 calc.pyファイルを以下のように変更(正確には追加)してください。変更内容は以下の通りです。

  • 累乗を計算するメソッド(power)を追加
  • 累乗の計算結果を出力

# coding: utf-8
def add(a, b):
  return a + b
# 引き算するメソッドを追加 def sub(a, b): return a - b
# 累乗を計算するメソッドを追加 def power(a, b): return a ** b
if __name__ == '__main__': # aを12に変更、bを8に変更 a = 12 b = 8 print('add: {0}+{1}={2}'.format(a, b, add(a, b))) # 引き算を実行 print('sub: {0}-{1}={2}'.format(a, b, sub(a, b))) # 累乗を計算 print('power: {0}^{1}={2}'.format(a, b, power(a, b)))

実際にプログラムを実行してみましょう。以下のような出力結果になればOKです。

$ python calc.py
add: 12+8=20
sub: 12-8=4
power: 12^8=429981696

正しくプログラムが動作したならば、コミットを行いましょう。 このあたりのコマンドについては第一回の記事を参考にしてください。

$ git add calc.py
$ git commit -m "powerメソッドを追加"
$ git log --oneline
dce5d65 (HEAD -> calc-power) powerメソッドを追加
8d34df8 a,bの値変更、subメソッドを追加
b5883d7 初めてのfirst commit

ブランチを切る恩恵を感じる

コミットが完了したら、ここでブランチをmasterブランチに一度切り替えてみましょう。

$ git checkout master
$ git branch
  calc-power
* master(緑色で出力)
masterブランチに切り替えたところで、calc.pyの中身を確認します。

# coding: utf-8
def add(a, b):
  return a + b
# 引き算するメソッドを追加 def sub(a, b): return a - b
if name == 'main': # aを12に変更、bを8に変更 a = 12 b = 8 print('add: {0}+{1}={2}'.format(a, b, add(a, b))) # 引き算を実行 print('sub: {0}-{1}={2}'.format(a, b, sub(a, b)))

内容が元に戻ってることが確認できましたでしょうか? 具体的には、先ほど追加した累乗計算の部分がありません。

git logコマンドでコミット履歴を確認してみます。

$ git log --oneline
8d34df8 (HEAD -> master) a,bの値変更、subメソッドを追加
b5883d7 初めてのfirst commit
累乗計算機能を追加したコミットがありません。 先ほど、「内容が元に戻ってる」と書きましたが、正確には masterブランチは累乗計算機能の追加が未だ反映されていない ということです。

これがブランチを切り替えて開発を行う良いところです。 開発するときに次の2つの問題がよく発生します。

  1. 既に動作するプログラムに対して新たな機能を追加する時、追加したことが原因で先ほどのプログラムが動作しなくなる。動作する状態に戻すことは容易ではない。
  2. 複数人で同時に開発する時、1つのファイルを編集している最中は他の人はそのファイルを使用することができない。

ブランチを切って開発することで以下の恩恵が受けられます。

  1. 既に動作するプログラムがあるブランチから独立して開発ができるので、プログラムの動作は保証される。
  2. 複数人がそれぞれ別のブランチ上で開発を行うことができ、それぞれのブランチは他のブランチの影響を受けないため同時開発が容易。

今回の場合に置き換えて考えると、累乗の計算がうまく動作しなかったり、累乗計算の機能が必要なくなったりした時、 masterブランチに戻って累乗計算のために追加した内容を簡単に無しにすることができます。

ブランチを統合して変更内容を反映する(git merge)

今回は累乗計算の動作確認ができたので、この変更内容をmasterブランチに反映したいと思います。 このようにブランチを統合することをマージ(merge)と言います。

マージにはgit mergeコマンドを用います。 現在のブランチがmasterであることを確認してからclac-powerブランチの内容を反映してみましょう。 現在のブランチがmasterブランチでなければgit checkoutコマンドでmasterブランチに切り替えてから行ってください。

$ git branch
  calc-power
* master(緑色で出力)
$ git merge calc-power
Updating 8d34df8..dce5d65
Fast-forward
 calc.py | 7 +++++++
 1 file changed, 7 insertions(+)

無事にマージできたでしょうか? ここで、もう一度calc.pyの中身を見てみます。

# coding: utf-8
def add(a, b):
  return a + b
# 引き算するメソッドを追加 def sub(a, b): return a - b
# 累乗を計算するメソッドを追加 def power(a, b): return a ** b
if __name__ == '__main__': # aを12に変更、bを8に変更 a = 12 b = 8 print('add: {0}+{1}={2}'.format(a, b, add(a, b))) # 引き算を実行 print('sub: {0}-{1}={2}'.format(a, b, sub(a, b))) # 累乗を計算 print('power: {0}^{1}={2}'.format(a, b, power(a, b)))

masterブランチに累乗計算機能が追加されていることを確認できたかと思います。

$ git log --oneline
dce5d65 (HEAD -> master, calc-power) powerメソッドを追加
8d34df8 a,bの値変更、subメソッドを追加
b5883d7 初めてのfirst commit

コミットログを見てもmasterブランチに反映されていることを確認できますね。いい感じです。

不要なブランチを消去する(git branch -d)

calc-powerブランチはmasterブランチに無事にマージされたのでもう必要ありません。 git branch -d {ブランチ名}というコマンドでブランチを消去します。

$ git branch -d calc-power
$ git branch
* master(緑色で出力)

チーム開発の流れ

複数人(チーム)で1つのプロダクトを開発する時、実際に多くの現場ではブランチを駆使して開発しています。 チームメンバーそれぞれが各機能を分担し、機能ごとにブランチを切って開発していきます。

例えば、webページをチーム開発するとしましょう。

masterブランチは常に動作する状態を保っておくブランチで、masterブランチに直接コミットはしません。 他のブランチからマージすることで変更を反映していきます。

上図のように、ある人はwebページにボタンを配置し、あるアザラシはヘッダーを配置することを担当されました。 それぞれはブランチをmasterブランチから新たに作成して、それぞれ独立したブランチ上で開発していきます。 そして、開発が終了した時はmasterブランチにマージされ、masterブランチは機能がどんどん追加されていきます。

このようにチーム開発においてそれぞれが機能ごとにブランチを切って開発をしていくことで、複数人で同時に開発したとしてもmasterブランチは常に動作する状態を保っています。

うむ、ブランチ最高。

おわりに

今回はgit操作のチュートリアル第二弾として、gitで重要な機能であるブランチについて説明しました。

次回はGitHubを使ってリモートに自分のgitプロジェクトをアップする体験をしていただきたいと思います。

ではでは。

ご指摘、ご意見などがあれば、コメントお願いします。またTwitterのDMにでもご連絡いただけたらと思います。よしデブ(@yoshidev523)| Twitter

【チュートリアル付き】gitに初挑戦してみようぜ!〜①初めてのgit initからcommitまで〜

はじめに

こんにちは、よしデブです。

今回のテーマは git です。

今やエンジニアの必須ツールとなっています。

gitの基本操作及びgitを利用したwebサービスGitHubについて3段階構成で紹介したいと思います!!

  1. 初めてのgit initからfirst commitまで
  2. 初めてのbranch作成からmergeまで
  3. 初めてのGitHub

今日は第一回ということで gitプロジェクトを作成してコミットによるファイル管理 を体験していただきたいと思います。git初めての方はもちろん、便利なオプションも紹介したいと思うので、経験者にも参考になれば幸いです。

gitとは?

Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. git公式サイト

gitとはオープンソースの分散バージョン管理システムです。

会社・大学のレポートや卒業論文の提出期限が迫ってきたとき、皆さんのフォルダの中身がこんなことになっているはずです。

どれが、本当の最終盤なのかわかりませんよね笑

これがプログラムコードの場合、もっと悲惨なことになります。

例えば、最初は動いていたプログラムを変更してしまって動かなくなった時、元に戻したい!!と思ったことありませんか?

そんなとき、gitを使いこなすことができたら簡単にファイルを管理することができるのです! 以降に、gitを基本的な使い方についてチュートリアル付きで説明していきます。

チュートリアル:gitの基本操作

動作環境

  • macOS 10.14.5(Mojave)
  • git v.2.21.0
  • Python v.3.5.7(Python3系ならどれでもOKです)

gitはMacにデフォルトでインストールされているので大丈夫だと思いますが、Pythonはインストールしている前提で進めます。

Pythonのインストール方法はまた別記事で紹介させていただきます。

前準備

$ mkdir ~/python-git
$ cd ~/python-git
$ touch calc.py
今回はホームディレクトリにpython-gitディレクトリを作成し、python-gitディレクトリにcalc.pyファイルを作成します。

calc.pyの内容は以下のようにしてください。

# coding: utf-8  
def add(a, b):
  return a + b  
if __name__ == '__main__': a = 6 b = 2 print('add: {0}+{1}={2}'.format(a, b, add(a, b)))

calc.pyの動作を確認します。

$ python calc.py
add: 6+2=8

確認ができたら、次にgit configコマンドで自分の情報を登録します。 (user.nameはダブルクォーテーションで囲ってください)名前はフルネーム、emailは自分が使っているメールアドレスを指定します。開発用のメールアドレスを作るのがオススメです。

$ git config --global user.name "Yoshi Dev"
$ git config --global user.email hgoehoge@hogehoge.com

これでgitを使う準備は整いました。

gitプロジェクト作成(git init)

python-gitディレクトリをgitプロジェクトにするコマンドがgit initコマンドです。pwdコマンドで現在がpython-gitディレクトリ直下にいることを確認してからgit initコマンドを実行してください。 ls -aコマンドで隠しファイルを含めて.gitという隠しファイルが生成されていれば成功しています。

$ pwd
/Users/{アカウント名}/python-git
$ git init
$ ls -a
.  ..  .git  calc.py

ファイルの変更を記録(git addとgit commit)

gitの初期設定は終了しました。次に最初のコミットを行います。コミットとはざっくり言うと ファイルの作成・変更・削除を記録する作業 のことを指します。 以下のコマンドを実行してください。

$ git add calc.py
$ git commit -m "first commit"

git addコマンドは変更を記録したいファイルを指定します。このことをステージングと言います。 ステージングされたファイルの変更を確定するコマンドがgit commitコマンドです。コミットにはコミットメッセージでどのような変更をしたかを記述する必要があります。

-mオプションをつけるとコミットメッセージを簡単につけることができます。-mオプションをつけないとターミナルテキストエディタvim、nano、emacsなど)が開いてコミットメッセージを書きます。慣れない方は-mオプションをつけてメッセージをつけてください。

コミットログの確認(git log)

さて、最初のコミットが終わりました。きちんとコミットができているか確認してみましょう。コミットの履歴を確認するコマンドはgit logコマンドです。

$ git log
commit e2d0e2a8ba6807569cfe61b90045e300dd560c04 (HEAD -> master)
Author: Yoshi Dev <hogehoge@hogehoge.com>
Date:   Sat Jun 22 13:45:55 2019 +0900
first commit
$ git log --oneline e2d0e2a (HEAD -> master) first commit

git logコマンドを実行すると、コミットID(コミットハッシュ値)、コミット作成者、日付、コミットメッセージを確認することができます。

簡易的にログを確認したい場合は--onelineオプションをつけます。するとコミットIDの最初の7文字、コミットメッセージを確認することができます。

直前のコミットメッセージの変更(git commit --amend)

コミットメッセージを間違えた!!という経験をした方も多いと思います。実際に私もよく間違えます...

そんな時はgit commit--amendオプションをつけて直前のコミットメッセージを変更できます。

$ git commit --amend -m "初めてのfirst commit"
$ git log --oneline
b5883d7 (HEAD -> master) 初めてのfirst commit

ファイルの変更内容を確認(git status)

続いて、calc.pyに引き算をするメソッドを追加して内容を変更してみましょう。calc.pyの内容を以下のようにしてください(コメントは無くてもOKです)。 変更点を以下に挙げます。

  • 引き算するメソッド(sub)を追加
  • a、bの値を変更
  • 引き算の結果を出力

# coding: utf-8  
def add(a, b):
  return a + b
# 引き算するメソッドを追加 def sub(a, b): return a - b
if __name__ == '__main__': # aを12に変更、bを8に変更 a = 12 b = 8 print('add: {0}+{1}={2}'.format(a, b, add(a, b))) # 引き算を実行 print('sub: {0}-{1}={2}'.format(a, b, sub(a, b)))

calc.pyを実行して動作を確認します。

$ python calc.py
add: 12+8=20
sub: 12-8=4

ここで、ファイルの状態がどのようになっているか確認するgit statusコマンドを実行してみます。

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
modified: calc.py(赤色で表示)
no changes added to commit (use "git add" and/or "git commit -a")

注目すべきはmodified: calc.pyとなっていることです。modifiedはファイル内容が変更されていることを表しています。また赤色で表示されているのはファイル変更記録対象に未だ指定されていない(ステージングされていない)状態を表しています。 次にgit addコマンドで変更を記録したいファイルをステージングしましょう。

$ git add calc.py
$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
modified: calc.py(緑色で表示)
no changes added to commit (use "git add" and/or "git commit -a")
calc.pyが緑色に変わったことを確認できるかと思います。これはファイル変更記録対象に指定された(ステージングされた)状態を表しています。 最後にgit commitコマンドで変更を確定します。
$ git commit -m "a,bの値変更、subメソッドを追加"
$ git log --oneline
8d34df8 (HEAD -> master) a,bの値変更、subメソッドを追加
b5883d7 初めてのfirst commit

このようにgitを使ったファイル管理では プログラムの機能を追加したり、内容を変更する度にコミットを行ってファイルの変更履歴を記録していきます。

基本的にはgit addでステージングしてgit commitで変更を記録するという操作を繰り返しです。

「なんだ、意外と簡単だ。」と思っていただけたでしょうか? 公式のgitホームページ でも操作方法のドキュメントがあるので参考にしてみてください。

さぁ、これであなたもgit経験者の一員です。

おわりに

今回はgit操作のチュートリアル第一弾として、gitの基本操作であるgit addgit commitについて説明しました。 また、gitの状態を確認するgit status、コミット履歴を確認するgit log、使えるオプションについて紹介しました。

次回はブランチを新たに作成して、ファイルの分散管理を体験していただきたいと思います。

ではでは。

ご指摘、ご意見などがあれば、コメントお願いします。またTwitterのDMにでもご連絡いただけたらと思います。よしデブ(@yoshidev523)| Twitter

【とあるエンジニアの個人見解】MacBookってどれを選べば良いのよ?

はじめに

こんにちは、よしデブです。

本日のテーマはMacBookシリーズについてです。 皆さんがMacBookを購入されるときの参考になれば良いと思いまして綴らせていただきます。 また、既にMacBookを持ってる人も読んでいただいて、共感や異論を説いていただきたいです!

※個人の意見ですので、全て鵜呑みにせずあくまでも参考程度に留めておいてもらえれば幸いです。

背景

なぜこの話をしようかと言いますと、先日、友達からこんなことを聞かれました。

「まくどなるどぶっくえあぁー?とかいうやつってはぁいすぺぇっく?」

…はい?

頭の中で変換するとこうなりました。

MacBook Airとかいうやつってハイスペック?」

どうやら彼にとってマクドナルドとMacは同じのようです。 すぐに脳内変換できた私も同じ感性があるんだろうな()

冗談はさておき、MacBook初心者の人はどれを選べば良いか悩んでる人がいるのかなと感じたので、MacBookシリーズの種類とそれぞれの特徴について自分なりにまとめてみようと思いました。 ※本当に個人の意見ですので、全て鵜呑みにしないでね。

MacBookシリーズ

皆さんご存知かと思いますが、2019年6月現在では大きく分けて3種類のMacBookが存在します。

それらのスペックや価格について表にまとめます。(スマートフォンの方は横向きでご覧ください。*1

シリーズ名 価格(税別) CPU メモリ ストレージ(SSD)
MacBook
(2017年モデル)
142,800〜
214,300円
1.2〜1.4GHz
(2コア)
8〜
16GB
512GB
MacBook Air
(2018年モデル)
134,800〜
277,700円
1.6GHz(2コア) 8〜
16GB
256GB〜
1.5TB
MacBook Pro 13インチ
(TouchBarなし)
142,800〜
285,800円
2.3〜2.5GHz
(2コア)
8〜
16GB
128GB〜
1TB
MacBook Pro 13インチ
(TouchBarあり)
198,800〜
385,800円
2.4〜2.8GHz
(4コア)
8〜
16GB
256GB〜
2TB
MacBook Pro 15インチ 258,800〜
676,800円
2.6GHz(6コア)〜
2.4GHz(8コア)
16〜
32GB
256GB〜
4TB

価格はピンからキリまで様々ですね...

67万越えは普通のノートパソコンを凌駕してますね。

さて、次に個別に見ていきましょう!

MacBook

まずは無印版MacBookです(サイトはこちら) CPUを見る限りスペック的には一番低いです。

私の見解としては以下の通りです。

  • 軽さ重視ならこれ一択
  • それ以外は選ぶメリット無し

最大の特徴はなんといっても軽い!!重さは驚きの0.92kg!

ディスプレイサイズは12インチのみ。 持ち運べるという意味では最高のパフォーマンスを発揮してくれます。

しかし、問題はそのお値段。 MacBookは最低スペックなのに、その最低価格は後述するMacBook Airより高くなっていますね。 この原因はストレージにあります。ストレージはいわゆる容量ってやつで、アプリケーションやファイル、写真のデータを保存できる量です。

MacBookはストレージが512GBしか選択できません。 この辺がAppleのいやらしいところですよね。一番スペック低くてもストレージ容量がそこそこ大きいんです。 少しスペックの高いMacBook Airの方が安いがストレージは256GBとMacBookより少ない、この価格設定が絶妙です。

また、非常に残念な点としてUSB type-cのポートが1つしかないことが挙げられます。。 USB type-cポートを使って充電したり、ディスプレイに繋いだり、アダプタを通してUSBメモリを繋げたりするのですが、1つしかないということは非常に不便です。

一度に繋げたい場合は、別途アダプタを購入するしかありません。

USB-C Digital AV Multiport アダプタ

USB-C Digital AV Multiport アダプタ

MacBook Air

続いてMacBook Airです(サイトはこちら) スペックはMacBookMacBook Proの中間といったところです。

THE バランス型です。

2018年に新しいMacBook Airが発売されて、MacBook Airは最高になりました。

何が最高かを以下に挙げます。

  • MacBookに劣らず持ち運びやすい
  • 最低スペックでも十分なパフォーマンス
  • カスタマイズが豊富

まず、MacBook Airでもとても持ち運びやすいです。重さは1.25kg、軽いです。 また、USB type-cポートはMacBookと異なり2つあります。

MacBook Air最低スペックでも十分なパフォーマンスを発揮してくれるかと思います。 具体的には、Word、ExcelなどのOfficeソフトはサクサクです。IDE(統合開発環境)によるプログラミング、Web・ネイティブアプリ開発も重い処理をしない限りではサクサク動くかと思います。

ただし、動画編集をがっつりする人には厳しいかもしれません。YouTuberにはオススメしません。

さらに、自分の用途に合わせて多くのスペックカスタマイズができます。

ストレージは最大1.5TBを選択できます。 写真や動画を多く保存したい人は重宝するかと思います。 それ以外の人は256GBでも十分かと個人的に思います。 少し不安な人は512GBをオススメします。 128GBでは少し足りないかなぁって感じです。

ちなみに私の現在の個人PCはMacBook Airのメモリ16GB、ストレージ512GBです。

MacBook Pro

最後はMacBook Proです。(サイトはこちら) スペックはMacBookシリーズの中では最高、お値段も最高です。 MacBook Proはディスプレイのサイズが2種類あるので、それぞれで見ていきます。

MacBook Pro 13インチ

まずは13インチ。これはMacBook Airと同じサイズです。

  • MacBook Airには劣るが、持ち運びやすい
  • スペックは十分
  • カスタマイズが豊富
  • TouchBarは不要

13インチの重さは1.37kg。 意外とMacBook Airとあまり変わらない重さです。

スペックについては言わずもがな、13インチでは最高級です。 MacBook Air同様、自分の用途にあったカスタマイズがしやすいと思います。

13インチはTouchBar有り/TouchBar無しの2種類が選択できます。 TouchBarはファンクションキーの部分がタッチできる仕様になっていて、アプリケーションによっていろんな機能が使えるものになっています。

が、TouchBarを使うことはないです。 私の場合はそうでした。私は大学時代、研究室でTouchBar付きのMacBook Proを支給され使用していたのですが、ほとんどをトラックパッド+キーボードで操作していました。 「TouchBarめっちゃいい!」という声を私は聞いたことがありません笑。

強いて良い点を言うとしたら、TouchBar有りはUSB type-cが4ポートあります。 TouchBar無しは2ポートしかありません。 TouchBar有りの利点はそれくらいですかね...

MacBook Pro 15インチ

続いて15インチ。これはMacBookシリーズの中で最大サイズです。

  • 持ち運びには向かない
  • スペックは十分
  • カスタマイズが豊富

15インチの重さは1.83kg。 これくらいになると重く感じます(研究室で支給されたのは15インチでした)

スペックに関しては13インチ同様最高級で、カスタマイズもできます。 スペック盛り盛りのお値段は60万超え。

価格高騰の原因はやはりストレージです。 最大4TBまで上げることができます。 はい、YouTuber専門PCですね。

動画関係の用途以外では、絶対こんなにも必要ありません。

おわりに

今回はMacBookシリーズについて、個人見解と共にまとめてみました。

いかがだったでしょうか、少しでも購入の参考になれば幸いです。

まとめてみた感想:マクドナルド行きたくなった。

ではでは。

ご指摘、ご意見などがあれば、コメントお願いします。またTwitterのDMにでもご連絡いただけたらと思います。よしデブ(@yoshidev523)| Twitter

*1:2019年6月現在で発売されている最新モデルで比較しています