【第2回】初めての電子回路シミュレーション

次回の記事

terapotan.hatenablog.jp

前回の記事

terapotan.hatenablog.jp

連載記事一覧

  terapotan.hatenablog.jp

今回は部品の配置方法や、シミュレーションの実行方法などCircuitSimulatorAppletの基本的な使いかたについて触れていきます。

試してみる

下のリンクから、CircuitSimulatorAppletを実行出来ます。料金や会員登録は必要ありません。

http://www.falstad.com/circuit/circuitjs.html

更新履歴

2020/05/09 コラム:GND(グラウンド)についてを追記。
2020/08/21 コラム:GND(グラウンド)についての内容を修正。

既に解説されている方がいた!

www.mgo-tec.com

CircuitSimulatorAppletの使い方に関する資料は、英語で書かれたものも含めほとんどありませんが、唯一解説されている方がいらっしゃいました。

上の記事では、CircuitSimulatorAppletで部品を配置する方法やシミュレーションを実行する方法について書かれています。

この記事と一緒にご覧になると、より理解が深まると思います。

まずは回路を作ってみる

手始めに、下のような回路をCircuitSimulatorApplet上で作ってシミュレーションしてみましょう。

回路図

電池と抵抗だけのシンプルな回路です。

STEP1:既にある回路を削除する

CircuitSimulatorAppletを立ち上げると、既に「LRC Circuit」という回路があります。
これを全て削除しましょう。
上のメニューバーにある「Circuits」をクリックし「Blank Circuit」を選んでください。

BlankCircuit選択

STEP2:回路を作る

部品を追加するには、まず下のアニメーションのように右クリックして、追加したい部品を選択します。
その状態で、ドラッグすると部品が配置されます。

追加するアニメーション

部品を移動する時は、部品をドラッグします。

部品移動

今紹介した二つの操作方法を使って、回路を作成します。
抵抗を追加するには「Add Resistor」、電池を追加するには「Add Voltage Source(2-terminal)」、導線を追加するには「Add Wire」を選択する必要があります。

下のアニメーションを参考にして、上の回路図をCircuitSimulatorApplet上に作成してみてください。

回路図作成

部品が何もない場所で、右クリックを押し表示されたメニューでSelect/Drag Sel(space or Shift-drag)をクリックし、移動させたい部品をドラッグすると部品を移動させることが出来ます。

部品の名前は全て英語です。「日本語の部品名は分かるけど、それがCircuitSimulatorApplet上でどこにあるか分からない!」という時は、下の記事を活用してください。

terapotan.hatenablog.jp

上のアニメーションにもある通り、部品を追加する際は、右クリックして出てくるメニューで追加したい部品を選んだあとに、部品を置きたい所でドラッグする必要があります。

追加したい部品を選ぶだけでは、部品は置かれません。 注意してください。

部品の移動方法はこれ以外にもありますが、ここでは詳しく解説しません。
詳しく知りたい方は、以下の記事をご覧ください。

terapotan.hatenablog.jp

部品同士のつなげ方に注意!

下の回路図のように、部品同士を繋げたいとします。

回路図

CircuitSimulatorApplet上で上の回路図を作成しようとして、下のアニメーションのように導線と真ん中の抵抗を接続しても、真ん中の抵抗は導線に接続されません。

アニメーション

(赤くなっている点は、部品同士が接続されていないことを示します。)

シミュレーション結果

実際にシミュレーションしてみると、本来真ん中の抵抗にも電流が流れるはずですが、接続したことになっていないため、電流が流れていません。(もし電流が流れていれば、右の抵抗のように黄色い四角が抵抗の中を移動するはずです。)

部品同士を接続するには、部品の両端についている白い丸同士を繋げる必要があります。

白い丸

先ほどの例だと、次のようにすれば部品同士が接続されます。(赤くなっていた丸が、白い丸に変わっているのが分かります。)

アニメーション

STEP3:シミュレーション実行

回路が作成出来たら、シミュレーションを実行します。
シミュレーションを実行するには、画面右上にある「Run/Stop」というボタンを押します。

シミュレーションを停止させたい時はもう一度押します。
シミュレーションが停止している時は、ボタンの色が赤に変化します。

シミュレーションボタンの場所(アニメーション)

上手く行っていれば、下のようにシミュレーションが実行されます。
動作中の回路

STEP4:シミュレーション結果を見る

電圧

CircuitSimulatorAppletでは、何も操作を行わなくても大まかなシミュレーション結果が分かるようになっています。

動作中の回路

部品の色は、部品にかかっている電圧を表しています。
色が緑色に近ければ近いほど、電圧の値が正の方向に大きいこと(例:10V,100V)を表し、赤色に近ければ近いほど、電圧の値が負の方向に小さい(例:-100V,-20V)ことを表しています。

また、色が灰色に近ければ近いほど電圧が0Vに近いことを表しています。

上の例だと電池の+側が緑色になっており、抵抗で導線の色が灰色になっています。

「抵抗で電圧降下が起こっている」という現象も、シミュレーション結果を一目見るだけで、理解することができます。

電流

電流の流れは、回路図上にある黄色い四角の流れで見ることが出来ます。
黄色い四角が移動している向きが、電流の流れている向きになります。

電流が大きければ、黄色い四角の移動する速度が上がり、逆に小さければ移動する速度は下がります。

今回のシミュレーション結果だと「電池の+極側から、-極側に向かって電流が流れている」ことが分かります。

結果を詳しく見る

流れている電流の具体的な大きさや、電圧の具体的な大きさを知りたい時は、値を知りたい部品を右クリックして表示されるメニューのView in Scopeをクリックしてください。

すると、画面の下の方にグラフが表示され、グラフにマウスを当てると電圧と電流の値が表示されます。

グラフの出し方

電流

電圧

今回の回路では、抵抗にかかる電圧は5V、抵抗に流れる電流はオームの法則より5mAとなるはずですが、シミュレーション結果もそのようになっています。

電流計・電圧計を接続する

CircuitSimulatorAppletには、電流計や電圧計といった部品もあります。
それらの部品を接続することで、電流や電圧の大きさを知ることができます。

電流計は「Outputs and Labels-Add Ammeter」を、電圧計は「Outputs and Labels-Add Voltmeter/Scode Probe」を選択することで、追加できます。

電流計と電圧計を配置する

部品の削除は、削除したい部品で右クリックして出てきたメニューのDeleteを押すと削除できます。

部品の削除

電流計と電圧計を配置して、シミュレーションを実行すると下の図のように値が表示されます。

値が表示される

STEP5:回路図を保存する

CircuitSimulatorAppletには、回路をテキストデータで保存する機能が備わっています。
せっかくですから、今回の記事で作成した回路を保存してみましょう。

画面上部の、Fileと書かれているところをクリックし、さらにSave As…をクリックしてください。

ファイルメニューを開く

すると、下のようなダイアログが表示されます。

表示されるダイアログ

赤枠で囲った青いリンクをクリックすると、回路をテキストデータに変換したファイルをダウンロードすることが出来ます。(OKボタンを押しても何も起きません。注意してください。)

ファイルの中身

回路のデータと言っても単なるテキストデータであるため、メモ帳でファイルの中身を見ることが出来ます。

STEP6:保存した回路図を読み込む

回路を保存する機能があるのですから、当然読み込む機能もあります。

画面上部の、Fileと書かれているところをクリックし、さらにOpen File…をクリックしてください。

ファイルを読み込む

ファイルを選択する画面が表示されます。読み込みたい回路データが書かれているテキストファイルを選択してください。

Column:GND(グラウンド)について

LTspiceのような電子回路シミュレータでは、必ず回路中にGND(グラウンド)を設置して0Vの基準を決めなければなりません。
ですが、CircuitSimulatorAppletではGNDを置かなくても動作します。今回作成した回路にもGNDは置かれていませんが、シミュレーションを実行することが出来ます。

ただ、電圧の基準が意図しない位置に設定されることがあるため、GNDを回路中に一つは置いておくことをおすすめします。

次回予告

CircuitSimulatorAppletでは、スイッチや抵抗の値をマウス一つでシミュレーションを実行中に変えることができます。
またLEDも実際に光らせることが出来ます。

次回は、スイッチやLEDを使った回路をCircuitSimulatorApplet上でシミュレーションしてみます。

う-ん、よく分からん!

この記事を読んで、疑問に思うことがあったときは、気軽にコメント欄や私のTwitterから質問してください。

次回の記事

terapotan.hatenablog.jp

前回の記事

terapotan.hatenablog.jp

連載記事一覧

  terapotan.hatenablog.jp

【番外編】CircuitSimulatorApplet 全電子部品対訳表

連載記事一覧

  terapotan.hatenablog.jp

CircuitSimulatorAppletは全て英語です。当然電子部品の名前も英語なのですが、パッと見ただけでは、何の部品か分からないものもあります。
そこでこの記事では、CircuitSimulatorAppletの部品名を日本語訳したものを載せています。

この記事の使い方

英語->日本語

ブラウザの検索機能を使って、CircuitSimulatorAppletに書かれている英語の部品名を検索してください。
Google ChromeだとCtrl+F(コントロールキーとFキー同時押し)で、検索機能を呼び出すことが出来ます。

日本語->英語

日本語での部品名をブラウザの検索機能を使って、検索してください。
Google ChromeだとCtrl+F(コントロールキーとFキー同時押し)で、検索機能を呼び出すことが出来ます。

注意!

トップメニュー以外の部品名は、Addを省略しています。
また日本語訳は、あくまで参考です。自然な日本語にするために、語句を補っているものもあります。
日本語訳の後ろに?がついているものは、正しいか確証のない訳です。

トップメニュー

部品名 日本語訳 備考
Add Wire 導線を追加する
Add Resistor 抵抗を追加する
Passive Components 受動素子
Inputs and Sources 入力と電圧・電流源 様々な種類の電圧源や電流源、グランドが
このカテゴリーに入っている。
Outputs and Labels 出力とラベル LEDや電球などの素子が入っている
Active Components 能動素子
Active Building Blocks 能動ブロック素子? オペアンプなどが、このカテゴリーに入っている。ピタリと当てはまる日本語訳が思いつかなかった。
Logic Gates, Input and Output 論理回路と(論理回路の)入力と出力 AND回路やOR回路などがこのカテゴリーに入っている
Digital Chips デジタルチップ フリップ・フロップや全加算器など、若干複雑なデジタル回路がこのカテゴリーに入っている
Analog and Hybrid Chips アナログとハイブリットチップ
Drag ドラッグ 部品のドラッグ方法を詳しく指定できる。
詳しくはDragの項で。
Select/Drag Sel (部品を)選択/(選択した部品を)ドラッグ

Passive Components

部品名 日本語訳 備考
Capacitor コンデンサ(キャパシタ)
Capacitor(polarized) コンデンサ(極あり) 極性があるコンデンサ
逆方向に設定した値以上の電圧をかけると
「capacitor exceeded max reverse voltage」
というメッセージが表示される。
Inductor コイル(インダクタ)
Push Switch プッシュスイッチ クリックしている間だけ、ONになるスイッチ。
SPDT Switch 単極双投スイッチ
Potentiometer 可変抵抗 スライダーを使ってシミュレーション中に抵抗値を変更出来る。
Transformer 変圧器
Tapped Transformer タップ付き変圧器
Transmission Line 伝送線路 信号の遅れや、減衰をシミュレーションする時に用いる部品である。
Relay リレー
Memristor メモリスタ
Spark Gap 避雷器
Fuse ヒューズ
Custom Transformer カスタム変圧器

Inputs and Sources

部品名 日本語訳 備考
Ground グランド、GND
Voltage Source(2-terminal) 電圧源(2端子)
A/C Voltage Source(2-terminal) 交流電圧源(2端子)
Voltage Source(1-terminal) 電圧源(1端子)
A/C Voltage Source(1-terminal) 交流電圧源(1端子)
Square Wave Source(1-terminal) 矩形波発生源(1端子)
Clock クロック
A/C Sweep A/C 掃引 周波数を時間とともに大きくしたり、小さくしたり出来る
Variable Voltage 可変電圧源 スライダーを使ってシミュレーション中に電圧を変更出来る
Antenna アンテナ
FM Source FM信号発生源
AM Source AM信号発生源
Current Source 電流源
Noise Generator ノイズ発生源
Audio Input オーディオ入力 (自分で選択した)音声ファイルの信号を出力する

Outputs and Labels

部品名 日本語訳 備考
Analog Output アナログ出力
LED LED(発光ダイオード)
Lamp 電球
Text テキスト 文字を書くことが出来る
Box ボックス 点線の囲みを描くことが出来る
Voltmeter/Scobe Probe 電圧計 恐らくSco「p」e Probe。
Ohmmeter 抵抗計
Labeled Node ラベル付きノード
Test Point テストポイント
Ammeter 電流計
Data Export データ出力 DataExportにかかった電圧をファイルに記録する。
記録したファイルはダウンロードできる。
Audio Output オーディオ出力 AudioOutにかかった電圧を音声データとして出力する。
出力された音声データは実際に聞くことが出来る。
LED Array LEDアレイ LEDが格子状に並んだ部品。
応用すれば文字などを表示できる。
Stop Trigger ストップトリガー StopTriggerにかかる電圧が設定した値以上or以下になると
シミュレーションを停止する部品。

Active Components

部品名 日本語訳 備考
Diode ダイオード
Zener Diode ツェナーダイオード
Transistor(bipolar,NPN) NPN型バイポーラトランジスタ
Transistor(bipolar,PNP) PNP型バイポーラトランジスタ
MOSFET(N-Channel) NチャネルMOSFET
MOSFET(P-Channel) PチャネルMOSFET
JFET(N-Channel) NチャネルJFET
JFET(P-Channel) PチャネルJFET
SCR SCR(サイリスタ)
DIAC DIAC(トリガ・ダイオード)
TRIAC TRIAC(双方向サイリスタ)
Varactor/Varicap バリキャップ(可変容量ダイオード)
Tunnel Diode トンネルダイオード
Triode 三極管 真空管の一種

Active Building Blocks

部品名 日本語訳 備考
Op Amp(ideal,- on top) 理想オペアンプ(-端子が上側)
Op Amp(ideal,+ on top) 理想オペアンプ(+端子が上側)
Op Amp(real) 現実のオペアンプ
Analog Switch(SPST) 単極単投スイッチ 電気信号によって開閉するスイッチ
Analog Switch(SPDT) 単極双投スイッチ 電気信号によって開閉するスイッチ
Tristate Buffer トライステートバッファ
Schmitt Trigger シュミットトリガ
Schmitt Trigger(inverting) シュミットトリガインバータ
CCII+ 電流コンペア?
CCII- 電流コンペア?
Comparator(Hi-Z/GND output) コンパレータ
OTA(LM13700 style) オペレーショナルトランスコンダクタンスアンプ
Voltage-Controlled Voltage Source 電圧制御電圧源 入力端子にかかる電圧によって、出力電圧を制御できる部品。
○○制御○○源と呼ばれる部品を使うことで、どんな電子部品でも作り出すことが出来る。使いこなせば便利かも。
Voltage-Controlled Current Source 電圧制御電流源 入力端子にかかる電圧によって、出力電流を制御できる部品。
Current-Controlled Voltage Source 電流制御電圧源 入力端子に流れる電流によって、出力電圧を制御できる部品。
Current-Controlled Current Source 電流制御電流源 入力端子に流れる電流によって、出力電流を制御できる部品。
Optocoupler フォトカプラ
Subcircuit Instance サブサーキットインスタンス Subcircuitと呼ばれる機能を使用する時に用いる部品。

Logic Gates, Input and Output

部品名 日本語訳 備考
Logic Input 論理入力 デジタル回路の入力として使用すると便利。
Logic Output 論理出力 デジタル回路の出力として使用すると便利。
Inverter インバーター(NOTゲート)
NAND Gate NANDゲート
NOR Gate NORゲート
AND Gate ANDゲート
OR Gate ORゲート
XOR Gate XORゲート

Digital Chips

部品名 日本語訳 備考
D Flip-Flop Dフリップ・フロップ
JK Flip-Flop JKフリップ・フロップ
T Flip-Flop Tフリップ・フロップ
7 Segment LED 7セグメントLED
7 Segment Decoder 7セグメントデコーダ 2進数による入力(I0~I3)を7セグメントLEDで使われる信号入力(a~g)に変換してくれる部品。
例えば、0,0,0,1(I0,I1,I2,I3)という入力をこの部品に与えると、0,1,1,0,0,0,0(a,b,c,d,e,f,g)という出力になる。
ちなみに、7セグメントLEDで表示されるのは16進数である。実際1111(15)を入力するとFが表示される信号が出力される。
Multiplexer マルチプレクサ
Demultiplexer デマルチプレクサ
SIPO shift register SIPO(直列入力並列出力形)シフトレジスタ
PISO shift register PISO(並列入力直列出力形)シフトレジスタ
Counter カウンタ
Ring Counter リングカウンタ
Latch ラッチ(回路)
Sequence generator シーケンスジェネレータ
Full Adder 全加算器
Half Adder 半加算器
Custom Logic カスタムロジック 真理値表を入力することで
好きな論理回路を作成することが出来る。
カウンタ、フリップフロップもカスタムロジックで作成可能。

Analog and Hybrid Chips

部品名 日本語訳 備考
555 Timer 555タイマー
Phase Comparator 位相比較器
DAC デジタル-アナログ変換回路(D/Aコンバーター)
ADC アナログ-デジタル変換回路(A/Dコンバーター)
VCO 電圧制御発振器
Monostable 単安定?

Drag

本編第2回で、部品の移動方法について解説しましたが、それ以外にも特殊な部品の移動方法を指定することが出来ます。
特殊な移動方法を有効にするには、右クリックで出てくるメニューの項目をクリックする必要があります。

Drag All

部品全てをドラッグによって移動させます。
というのが、本来の機能ですが実質視点の移動です。

アニメーション

Drag Row

部品を上下に移動させます。
その際、ドラッグする部品と同じ高さにある部品も、一緒に上下に移動します。

アニメーション

Drag Column

部品を左右に移動させます。
その際、ドラッグする部品と同じ高さにある部品も、一緒に左右に移動します。

アニメーション

Drag Selected

部品をドラッグによって移動させます。

アニメーション

Drag Post

この項目は「部品の移動」というには、少し微妙かもしれません。
若干特殊な動きをします。

部品には二つの端子がありますが、この項目を選択すると、一方の端子の位置を固定して、もう一方の端子の位置を移動させることが出来ます。

……まぁ、下のアニメーションを見れば一目で分かるでしょう。

アニメーション

Select/Drag Sel

Drag Selectedと同じような働きをしますが、Drag Selectedと違って、複数部品を選択することが出来ます。

複数選択

選択した部品は、ドラッグで移動させることが出来ます。いくつかの部品を一気に移動させたい時に便利です。

その他

マウスホイールを動かすことで、回路をズームすることが出来ます。

ズーム

う-ん、よく分からん!

この記事を読んで、疑問に思うことがあったときは、気軽にコメント欄や私のTwitterから質問してください。

連載記事一覧

  terapotan.hatenablog.jp

【第1回】電流が見える電子回路シミュレータとは?

次回の記事

terapotan.hatenablog.jp

前回の記事

terapotan.hatenablog.jp

連載記事一覧

  terapotan.hatenablog.jp

電子回路シミュレータって何だ?

あなたは、電子回路シミュレータというものを知っているでしょうか。
普通電子回路を作ったときの動きは、実際に部品を買ってきて、回路を作らないと分かりません。

しかし、部品を買うのにもお金がかかりますし、回路を作るのにも時間がかかります。しかも、回路の組み方次第では部品を壊してしまうかもしれません。

……面倒くさいですよね。正直。「何とか部品を買わずに電子回路の動きを見る方法はないか」と思うと思います。

そんな時に使うのが「電子回路シミュレーター」です。その名の通り、自分で作った電子回路をパソコン上でシミュレーションすることができます。パソコン上でシミュレーションしているだけですから、部品を買う必要もありません。部品を壊してしまう恐れもありません。

LTspice

有名な電子回路シミュレーターとしてよく挙げられるのが、「LTspice」という電子回路シミュレータです。

このシミュレータ―は無料で、しかも機能の制限なく使用することが出来ます。

電子回路の解析に関する機能が豊富で、電流・電圧の測定はもちろん、周波数特性を求めたり、部品のパラメータを変えながら測定を行ったり、といった様々な解析を行うことが出来ます。

ですが、本格的な解析が行える反面、初心者にとってはとっつきにくいものになってしまっているのが現状です。

LTspiceでシミュレーションを行うには、次の手順を踏む必要があります。

  1. 回路図を作成する
  2. コマンドを入力する
  3. シミュレーションを行う
  4. 電流・電圧を測定したいところをクリックする

実際にシミュレーションを行った結果

「回路図作って、実行ボタンを押すだけでシミュレーション実行されないの?」と思われるかもしれませんが、そうではありません。
LTspiceでシミュレーションを実行するには、回路を作成してから「どのような条件でシミュレーションするのか」を指定してあげる必要があります。

また、回路中の電流や電圧等を測るには、測定したいポイントをクリックする必要があります。

CircuitSimulatorApplet

ここで登場するのが、今回の連載で解説する「CircuitSimulatorApplet」という回路シミュレーターです。

CircuitSimulatorAppletの外観

Web上で実行することが出来ます。下のリンクから、「CircuitSimulatorApplet」が実行できるページへ移動することができます。

http://www.falstad.com/circuit/circuitjs.htmlwww.falstad.com

オフラインで実行できるCircuitSimulatorAppletもあります。

https://www.falstad.com/circuit/www.falstad.com

上のリンク画像

上の画像の赤枠で囲っているリンクをクリックすると、ソフトウェアがダウンロードされます。(Macをお使いの方は、緑色の枠で囲っている所をクリックしてください。)

電流と電圧が一目で分かる

CircuitSimulatorApplet上でシミュレーションを行うには、次の手順を踏む必要があります。

  1. 回路を作成する
  2. 右上の「RUN」ボタンを押す

右上のRUNボタン

LTspiceで必要だった「コマンドを入力する」という操作は必要ありません。回路を作って、RUNというボタンを押すだけでいいのです。

さらに、LTspiceではクリックしないと見ることが出来なかった電流や電圧も一目で見ることができます。

実行時のアニメーション

電流の流れが、黄色い四角で表現されています。

スイッチや部品の値を直感的に変えられる

電子回路では「電圧の値を上げたらどうなるのだろう?」「抵抗の値を変えたらどうなるのだろう?」という疑問が浮かぶ場面がよくあります。

CircuitSimulatorAppletでは、下のアニメーションのようにクリック一つで、回路が動いている最中にスイッチを切ったり、電圧の値を変えたりすることができます。

直感的に変えられる部品の値

回路の動作が一目で分かる

CircuitSimulatorAppletは、上二つのような特徴を持っているため、電子回路の動作を理解する手助けをしてくれます。

例えば、下の図のような電子回路を考えてみましょう。

回路図

抵抗値の異なる抵抗が、二つ並列接続されています。

オームの法則より、抵抗の値が小さいければ小さいほど、抵抗に流れる電流は大きくなるはずです。

この回路をCircuitSimulatorApplet上でシミュレートしてみると、下のような結果になります。

シミュレート結果

抵抗値の小さい抵抗のほうが、黄色い四角の移動が速いのが分かると思います。

回路図を作って「RUN」ボタンを押すだけで、特に何もしなくてもオームの法則を一目で確認することが出来るのです。

最後に

今回は、CircuitSimulatorAppletとはどんなものなのか、について解説しました。
本文中では、CircuitSimulatorAppletの魅力を多く解説していますが、決してLTspiceがダメなソフトだというわけではありません。

むしろ、直感的に操作できるCircuitSimulatorAppletと、本格的な解析が出来るLTspiceを組み合わせて使えばより便利な回路シミュレーションを行えると思います。

次回予告

次回は、CircuitSimulatorAppletの基本的な使い方について解説します。

う-ん、よく分からん!

この記事を読んで、疑問に思うことがあったときは、気軽にコメント欄や私のTwitterから質問してください。

参考文献

LTspice関連

LTspiceの使い方について書かれている本です。これを読めば、とりあえずLTspiceは使えるようになります。

次回の記事

terapotan.hatenablog.jp

前回の記事

terapotan.hatenablog.jp

連載記事一覧

  terapotan.hatenablog.jp

【第0回】この連載を読む前に

大まかな内容

この連載(回路シミュレータCircuitSimulatorAppletを使ってみよう!)では、「Circuit Simulator Applet」という電子回路シミュレータの使い方について解説していく予定です。

この連載の読み方

コラム

記事を読んでいくと、下のようなコラムが出てくることがあります。

Column:コラム

これは、文字通りコラムです。
コラムですから、必ずしも読んで理解する必要はありません。
「あーわからん」と思うのであれば、どんどん読み飛ばしてください。

番外編

番外編も同じく「読むのが面倒くさい」「早く次に進みたい」と思うのであれば、読み飛ばしても構いません。

コラム・番外編ともに本文よりも難しい内容が入っている場合が多いです。

検索する、他の書籍・サイトをあたる

「この連載だけで勉強しなければならない」という決まりはありません。
いまいちピンとこない部分があれば、他の資料を使って勉強しても良いのです。

質問する

記事を読んでいくと、「どうしてこうなるんだ?」と言った疑問が出てくると思います。
そういう時は、ぜひ私に質問してください。
下のコメント欄からでも構いませんし、Twitterでも構いません。
質問内容を公開したくないのであれば、メールで送るという手もあります。

メールアドレスは、ページ右上に記載しています。

その他

連載は、全15回の予定となっています。 第1回の記事、連載記事一覧は下のリンクからご覧ください。

次回の記事

準備中です……

連載記事一覧

準備中です……

ソフト作り=プログラミングではない!

連載記事一覧

  terapotan.hatenablog.jp

あなたは、ソフト作りに必要な要素は何だと思いますか?
「プログラミング」――と答えるでしょうか。
もしそうなら「プログラミング」をどんどん勉強して極めれば、多くの人に使われるすごいソフトが作れそうな気がします。

……が、現実はそうではありません。それ以外にもたくさんの要素があるのです。
はぁ!?プログラミング出来れば、すごいソフト作れるんじゃないの?!――と思った方こそ、この記事をご覧ください。

プログラミングってそもそも何だ?

話を進める前に一つ解決しておかなくてはいけない疑問があります。

「プログラミングが出来る」というのは、いったいどういう状態を指すのでしょう?

人によって意見が分かれるところだとは思いますが、ここでは次のように定義します。

具体的にコンピュータにやらせたいこと(仕様)が決まっていて、それをプログラミング言語にして、実際にコンピュータ上で動くプログラムを作れる状態。

例えば、次のような仕様があったとします。

  • 「二つ数字を入力して、二つの数字を足した数字を表示しなさい」

上の定義で言う「プログラミングが出来る」というのは、上の仕様から

#include<iostream>

int main(void){
    int a,b;
    std::cin >> a >> b;
    std::cout << a + b;
    return 0;
}

上のようなプログラムを作れる状態を指しています。

プログラミングで出来ること

先ほど挙げた例を見れば分かる通り、「プログラミングが出来る」状態で何かしらのプログラムを作るためには、具体的な指示が必要になります。

ソフトというのは、上で見た小さなプログラムが集まって作られます。

ですから、この状態でソフトを作るには、ソフトに関するありとあらゆることについて具体的な指示が必要になります。

ですが、普通「どんなソフトを作りたい?」と聞かれて思い浮かぶのは、

  1. この作業を自動化してくるソフトを作りたい
  2. 爽快感のあるゲームを作りたい
  3. 面白いゲームを作りたい

という曖昧な指示でしょう。
ソフトを作るためには、曖昧な指示を具体的な指示に変換しなくてはなりません。

箇条書きの1であれば、自動化したい具体的な作業が分かれば何とかなるかもしれません。
しかし、2や3はどうでしょうか。爽快感・面白いというのは人によって違います。

これを具体的な指示に変換するのは、非常に難しいことです。

ソフトはプログラムだけで作れるのか?

素材の問題

曖昧な指示を具体的な指示に変換できたとしても、さらなる問題が立ちはだかります。

それはイラストや音楽などの素材が必要だ、ということです。
ツール系であれば、そこまで必要にはならないかもしれませんが、ゲームであれば数多くの素材が必要になります。

自分で作るのであれば、イラストや音楽を作れるような勉強をしなくてはいけませんし、そうでなければ、人に頼むかどこかの無料素材集から持ってこなくてはなりません。

プロジェクトを管理する

趣味で作っているソフトであれば、いつソフトが完成しようと構わないかもしれませんが、人に頼まれて作っているソフトであれば、期限内に完成させなければなりません。

どのようにソフトを期限内に完成させなければいけないか、というのも考えなくてはいけません。

宣伝

自分だけが使うソフトであれば、宣伝なんてしなくてもいいでしょうが、多くの人に使ってもらいたいなら、宣伝の方法を考える必要があります。

結局……

これ以外にも、ソフト作りに必要な要素はたくさんあります。

……もうお分かりでしょうか。
プログラミングはソフト作りの一部分でしかないということです。

書籍にあるようなプログラミングの問題を解いていけば、確かにプログラミングの能力を高めるのには役立つでしょう。ですが、プログラミングの能力が高まったからといって、ソフト作りの能力が高まるわけではないのです。悲しいことに。

ではどうすればいい?

プログラミングを勉強してもだめなのなら、いったいどうすればいいのでしょう?

ソフトを作ればいいのです。

作りたいと思うソフトを作ればいいのです。

ソフト作りの能力を高めたいのなら、ソフトを作ればいいのです。
とは言っても最初は、作るのに何か月もかかるソフトではなく、数日や1~2週間くらいで作り終わるソフトから作っていくのがいいでしょう。

いや、でも……

ソフト作りにはたくさんの要素が必要なんでしょう?じゃあ、プログラミング以外に必要な要素教えて!全部勉強するから!――説明を聞いて、こう思う人もいるかもしれません。

気持ちは分かります。中途半端に勉強してソフトを作るより、全部きっちり勉強してからソフトを作った方が、良いものが出来上がる気がします。

ですが、そもそもソフト作りに必要な要素を全て挙げることは不可能ですし、仮に出来たとしても全てを極めることなど不可能です。一生かかっても終わりません。

全てをきっちり勉強してからやるより、最低限ソフトを作るのに必要なことだけ勉強してからソフトを作る方が、勉強したこともよく身につきます。

さらに、ソフトを作る前は「これだけ勉強したんだから大丈夫!」と思っていても、ソフトを作っていくと「あ、これ勉強しなきゃだめだな」とか「ここ、あんまり理解出来ていなかった。もう少し詳しく勉強しよう」と勉強したいところが沢山出てくるものです。

もし、勉強したいところが後から出てきても何の問題もありません。勉強したいところを勉強すればいいだけです。

最後に

ソフトを作る、Webサービスを作ると聞くと、どうしても「プログラミングが出来なきゃ作れない」と思いがちです。確かにソフトを作るのに、プログラミングは必要ですが、プログラミングはあくまでソフト・サービスを作るための一つの手段にすぎません。

それを、忘れないようにしておきましょう。

注意!!

この記事は「ソフト作りには、プログラミングは全く必要ない」と言っているわけではありません。タイトルにもある通り「プログラミングがソフト作りの全てではない」と言っているだけです。
決して「プログラミングを勉強しなくていい」ということではありません。

う-ん、よく分からん!

この記事を読んで、疑問や意見があったときは、気軽にコメント欄や私のTwitterから質問してください。

連載記事一覧

terapotan.hatenablog.jp

【gitをソフト開発で使いこなそう!:最終回】.gitignoreの書き方を徹底解説!

前回の記事

terapotan.hatenablog.jp

連載記事一覧

  terapotan.hatenablog.jp

今回は、.gitignoreのファイルの書き方について解説していくと共に、README.mdやLICENSEといった特別な役割を持つファイルについても簡単に紹介していきます。

特別な役割を持つファイル

gitやGitHubでは、特別なファイル名を付けたファイルをリポジトリに置いておくと、特別な役割を果たすものがあります。
その代表例が、

  • README.md
  • LICENSE
  • .gitignore

です。もちろんこれ以外にも特別なファイルは存在します。 以下に、いくつか挙げますので興味のある方は調べてみてください。

[GitHubにおける特別なファイル]

  • PULL_REQUEST_TEMPLATE.md
  • CONTRIBUTING.md

[gitにおける特別なファイル]

  • .gitattributes
  • .gitmodules

README.md

この名前を付けたファイルをリポジトリに置いておくと、下の画像のようにREADME.mdの内容が表示されます。

READMEが表示されている画像

この機能を使うことで、初めてリポジトリを見に来た人に「このリポジトリってどんなリポジトリなんだろう?」ということを伝えることが出来ます。

上の画像は、私が前回紹介したプルリクエスト練習用のリポジトリです。

「このリポジトリはどんなリポジトリなのか」ということを解説しているのが分かるでしょうか。

Column:Markdownファイルの拡張子

.mdという見慣れない拡張子があります。これは、Markdownファイルの拡張子を表します。
「README」という名前さえついていれば、上の画像のようにファイルの内容が表示されますが、Markdownファイルとしては認識されません。

LICENSE

GitHub上で公開されているソースコード(ソフト)は、確かに無料で利用することが出来ますが、どんな利用をしてもいいというわけではありません。
ソフトの制作者が「こういう使い方だったらいいよ」と言わない限り利用することは出来ません。

LICENSEという名前のファイルに先ほど言ったこと、いわゆる「リポジトリ利用規約」を書いておくと、下の画像のようにGitHubによってライセンスの種類が表示されます。

ライセンス

ライセンス

自分で一からライセンスを書いても、もちろん構いませんが、既に作成され公開されているライセンスを適用するのが普通です。

例えば次のようなライセンスがあります。

  • MIT License
  • Apache License 2.0
  • GNU General Public License v3.0

ライセンス関連の話は、本題から大きくそれるため詳しくは述べませんが、興味のある方は参考文献をご覧ください。

.gitignoreとは?

.gitignoreを使う場面

gitでファイルを管理していると「このファイルはgitで管理したくないな」と思う場面があります。

例えば、次のようなファイルです。

  • ソースコードをビルド(コンパイル)して出来た実行可能ファイル(~.exeなど)
    • ソースコードをビルドすれば、生成できるためわざわざgitで管理する必要がない
  • ビルドする時に一時的に作成されるファイル
    • これもビルドすれば生成される上に、わざわざ管理する必要がない
  • 個人的なメモ書き
    • 本当にただのメモ書きであれば、管理する必要もない

このような時.gitignoreという名前のファイルを置くと、ある特定のファイルを無視することが出来ます。

Column:Windowsで.gitignoreという名前のファイルは作れない!?

Windows 10 Version 1903(2019年5月21日公開)より前のWindows10では、エクスプローラー上で.gitignoreのような、ドットから始まるファイルを作成することが出来ませんでした。
.gitignoreと検索すると、「.gitignoreという名前のファイルが作れない!」といった名前の記事が出てくるのはそのためです。
Windows 10 Version 1903によって、ドットから始まるファイルをエクスプローラー上で作れるようになり、変な裏技を使う必要はなくなりました。

.gitignoreの優先順位

.gitignoreは、一つのリポジトリに複数置くことが出来ます。

ある一方の.gitignoreには「ファイルAを無視しろ!」と書かれているのに、もう一方の.gitignoreには「ファイルAは無視しない」と書かれていたらどうなるのでしょうか。

その場合、より深い階層に置かれている.gitignoreが優先されることになっています。
上の例であれば、「ファイルAは無視しない」という指定が優先されます。

要するに

.gitignoreの書き方

.gitignoreの実体は、単なるテキストファイルです。次のように書かれます。

# Exclude text files
*.txt
*.md

# Exclude specific directories
/[Mm]emo/
/[Mm]anualtest/test/

tada/

/tmp/*
!/tmp/test.txt

以下具体的な書き方について、見ていきます。

基本的には、除外したいファイルやフォルダを書いていくだけです。
除外したいファイルやフォルダが、下のフォルダにあったら、.gitignoreを基準にして、相対パスで指定します。

相対パスって何だ?と思われた方は、下の記事をご覧ください。

https://wa3.i-3-i.info/word1167.htmlwa3.i-3-i.info

(ただし.gitignoreでは、./フォルダ1/フォルダ2のような相対パスの一番先頭にある.は必要ありません。)

# .gitignoreと同じフォルダに入っているファイルを無視する
/test.txt
/test.md

# subフォルダを除外
/sub/

空白行とコメント

.gitignoreにおいて、空白行は何の働きもしません。無視されます。
そのため上の例のように、見やすくするために、空白行を挿入しても構いません。

また、#を行の先頭につけると、コメントを付けることが出来ます。
#を付けた行は、何の働きもしなくなります。(一般的なプログラミング言語で言う「コメント」と同じ役割です。)

ファイル名やフォルダ名だけを書く

test.txtbuildフォルダといった、ファイル名やフォルダ名のみを一つの行に書くと、その.gitignoreサブフォルダ以下にある全ての指定されたファイルやフォルダを無視します。(サブフォルダ以下です。.gitignoreが置かれている上のフォルダには、その.gitignoreの影響は及びません。)

……少しわかりにくいでしょうか?

一つ例を挙げましょう。
リポジトリの構成が下の図のようになっているとします。

例として挙げたリポジトリの構成

ここで、.gitignore

test

と書かれていたとします。すると、上の図のABが除外されることになります。
(フォルダが除外された場合、フォルダの中身のファイルも除外されます。)

名前の最後にスラッシュ(/)をつける

名前の最後にスラッシュをつけると、設定が書かれた.gitignoreサブフォルダ以下にある全ての指定されたフォルダのみを無視します。

例として挙げたリポジトリの構成

.gitignoreに、

test

と書いたときは、ABが無視されましたが

test/

と書いたときには、ファイルであるBは無視されず、フォルダであるAのみが無視されます。

名前の最後以外にスラッシュが入っている

.gitignoreを基準にして、相対パスで指定される、ファイルやフォルダを無視します。

と言ってもいまいちピンと来ないため、下のような例で考えてみます。

例として挙げたリポジトリの構成

ここで.gitignoreに、

main/sub/test

と書くと、.gitignoreが置かれているフォルダを基準にした相対パスとして認識されます。
この例だと、mainフォルダにあるsubフォルダのtestファイルとtestフォルダを無視する、という設定になっています。

また、ここで

main/sub/test/

のように、名前の最後に/をつけると、mainフォルダにあるsubフォルダのtestフォルダのみを無視するようになります。

!

行の先頭に!をつけると、以降のファイル名やフォルダ名を無視しないという意味になります。

この設定で、前の設定を上書きすることが出来ます。

次のような.gitignoreを考えます。

/test/*
!/test/reigai.txt

一行目で、testフォルダにある全てのファイルやディレクトリを無視していますが、二行目でtestフォルダにある、reigai.txtを無視する設定から除外しています。

一見矛盾する設定のようですが、!による指定は、前の設定を上書きするため「testフォルダにあるreigai.txt以外のファイルやフォルダは、無視する」という意味になります。

もしかすると、「こうでもいけるんじゃない?」と思った方がいらっしゃるかもしれません。

/test/
!/test/reigai.txt

しかし、これは思うように動きません。なぜなら、gitの仕様上フォルダそのものを無視した場合、後から一部のフォルダやファイルだけを無視しないようには出来ないからです。

最初に挙げた例が動作するのは、フォルダそのものではなくフォルダの中にあるファイルとディレクトを無視するように設定しているからです。

……何だか、面倒くさい仕様ですが、そのような仕様になっている以上仕方ないのです。

ワイルドカード

*(アスタリスク)

「ある特定のファイルやフォルダ」ではなく、「~.txt~.exeと言った特定の拡張子のファイルを全て除外したい」と言った場面があるかもしれません。

そのような場合、.gitignoreに次のように書きます。

*.txt
*.exe

*(アスタリスク)は、/(スラッシュ)以外の0文字以上を表します。
ですから、次のようなファイル名が指定されたのと同じ意味を持ちます。(下はあくまで例です。上の文を満たすファイルはいくらでもあります。)

  • test.txt
  • ttt.exe
  • setup.exe
  • .txt (ドットの前に一文字も無くても良い。なぜなら0文字以上だから。)
  • /test/sub/file.txt (フォルダが指定されていても、構わない。)

?

/(スラッシュ)以外の任意の1文字を指します。

[~]

[]の中に入っている、/(スラッシュ)以外の一文字が指定されます。

例えば、manual.txtとManual.txtを除外したいとき、

manual.txt
Manual.txt

と書いてもいいですが、

[Mm]anual.txt

と書くことも出来ます。[Mm]はMかmどちらかの文字が指定されたとき、という意味だからです。

既にコミットしたファイルを無視したい

既にコミットしてしまったファイルを、後から.gitignoreで無視するよう設定しても無視されません

既にコミットしてしまったファイルを無視させるには、下のコマンドを入力する必要があります。

無視したいものが、ファイルだった場合。

git rm  --cached <ファイル名(例:test.txt)>

無視したいものが、フォルダだった場合。

git rm  -r --cached <フォルダ名(例:folder)>

delete……と画面上に表示されますが、ファイル自体が消えたわけではないため、安心してください。

-rオプションは、「<フォルダ名>のサブディレクトリ以下に入っているファイルも全て」という意味になります。

次コミットするときに反映されます。

ちなみに、--cachedオプションを忘れると一見ファイルが本当に削除されたように表示されますが、すぐに復旧できます。

下のコマンドを順に入力してください。

git reset HEAD
git checkout HEAD <ファイル名orフォルダ名>

最後に

これで「gitをソフト開発で使いこなそう!」は、終了となります。
「gitをソフト開発で使いこなそう!」をお読みいただきありがとうございました。

より深く学びたい人のために

こっそり始めるGit/GitHub超入門

www.atmarkit.co.jp

この連載では、gitをソフト開発で使いこなそうで扱えなかったGitHubの機能がいくつか解説されています。

う-ん、よく分からん!

この記事を読んで、疑問に思うことがあったときは、気軽にコメント欄や私のTwitterから質問してください。

参考文献

Pro Git

git,GitHubを使うにあたって必要なコマンドの使い方が詳しく解説されています。この連載を読んで分からないことや詳しく知りたいことがあったときはまずProgitを読んでみるといいでしょう。 git-scm.com

今日から始めるOSSライセンス講座

OSSライセンス、オープンソースソフトウェアライセンスについての概要が書かれている連載です。

thinkit.co.jp

文化庁著作権テキスト

https://www.bunka.go.jp/seisaku/chosakuken/seidokaisetsu/pdf/r1392388_01.pdfwww.bunka.go.jp

www.bunka.go.jp

OSSライセンスとは直接関係はありませんが、OSSライセンスの土台となっている「著作権」について詳しく学ぶことが出来ます。
文化庁が公式で出しているものです。

前回の記事

terapotan.hatenablog.jp

連載記事一覧

terapotan.hatenablog.jp

【gitをソフト開発で使いこなそう!:第13回】プルリクエストを送ってみよう!

次回の記事

terapotan.hatenablog.jp

前回の記事

terapotan.hatenablog.jp

連載記事一覧

  terapotan.hatenablog.jp

今回は、GitHubの大きな特色である「プルリクエスト」という機能について解説します。
これが出来るようになると、他の人がGitHub上で公開しているソースコードを編集することが出来るようになります。

プルリクエストとは?

プルリクエス(プルリク・PRとも略される。)とは、GitHubに備わっているリポジトリの内容の変更をリクエスト出来る機能のことです。

プルリクエストの機能は、GitHubが独自に備えている機能です。gitに備わっている機能ではありません。

一つ例を挙げてみましょう。

誰かが、GitHub上にとあるソフトのソースコードを公開しているとします。

あなたが、このソフトのバグ(不具合)を見つけたため、公開されているソフトのソースコードを修正したいとします。

しかし、第10回で説明している理由で、プッシュ出来る人を普通、制限しているため、あなたが直接ソースコードを修正することは出来ません。

そこで直接ソースコードを修正出来る人に「こういう変更をしてくれ!」というリクエストを送ります。これが、プルリクエスです。

プルリクエストの送り方

フォークとクローン

今回は、下のリポジトリを例にしてプルリクエストを送ってみます。

github.com

Column:上のリポジトリについて

上のリポジトリは書籍「わかばちゃんと学ぶGit使い方入門」のプルリクエスト練習用リポジトリとして公開されているものです。
ですが2020年4月現在、数百件以上のプルリクエストがマージされないまま、放置されている状況です。恐らくプルリクエストが受け入れられることは……ないでしょう。

そこで、プルリクエスト練習用のリポジトリを作成しました。下のリンクから移動することが出来ます。
気軽にプルリクエストの練習に使ってください。

github.com

プルリクエストを送りたいリポジトリに移動したら、画面右上の「Fork」というボタンを押してください。

Forkボタンの場所

このボタンを押すと、今表示しているリポジトリが自分のアカウントにコピーされます。(これをボタンの名前の通り、フォークと言います。)

フォークの概念図

フォークしたリポジトリの名前を見ると、elmas3/pull-request-practiceからterapotan/pull-request-practiceに変わっているのが分かります。(terapotanは私のアカウント名です。)

フォーク成功

さらにフォークしたリポジトリに変更を加えるために、リポジトリをローカル(自分のPCとか)にコピーします。
これをクローンと言います。

フォークしたリポジトリClone or downloadをクリックして、git@から始まるアドレスをクリップボードにコピーしてください。

アドレスを見る

中身が空のフォルダを作成し、そこでGitBashを立ち上げて、次のコマンドを入力してください。

git clone <コピーしてきたgit@から始まるアドレス>
Column:コピーと貼り付けのショートカットキー

普通Windows上では、コピーと貼り付けのショートカットキーは「Ctrl+C」と「Ctrl+V」です。
ですが、GitBashでは「Ctrl+Ins(インサートキー)」と「Shift+Ins」がコピーと貼り付けのショートカットキーとなっています。

クローンが終わったら、下のコマンドを入力して作成されたフォルダに移動してください。(カレントディレクトリを新たに作成されたフォルダにする。)

cd ./<新たに作成されたフォルダの名前>

変更を加える

新たに作成したフォルダに移動したら、新しいブランチを作成します。
ブランチ名は何でもいいですが、今回はpullreqdevとしました。

git branch pullreqdev
git checkout pullreqdev
Column:git checkout -b

「git checkout -b」と入力することで、ブランチの作成と作成したブランチへの、チェックアウトを同時に行うことが出来ます。
上の例であれば、「git checkout -b pullreqdev」と入力します。

新しく変更を加えます。これも、何でもよいのですが、今回は新しく下の内容のファイルを追加しました。

プルリク.txt

PullRequestTest

次のコマンドを実行してコミットします。

git add --all
git commit -m "プルリクコミット"

git pushコマンドを実行して、変更をフォークしたリポジトリに反映します。

git push origin pullreqdev
Column:あれ?git remoteコマンド打ってないよ?

第10回では、リモートリポジトリにプッシュする前に「git remote add~」を使って「origin」を追加していましたが、今回はしていません。
……ですが、上の「git push」コマンドは正常に実行されます。なぜ上手くいくのでしょうか。
それは、「git clone」コマンドを使ってローカルリポジトリを作成した場合、自動的にクローン先のリモートリポジトリ(今回の場合、フォークしたリポジトリ)のアドレスをoriginとして登録するようになっているからです。

プルリクエストを送る

新たにブランチを作成したら、プルリクエストを送りたいリポジトリのページを開いてください。

下の画像のような、メッセージが画面の上の方に表示されているはずです。

プルリクボタン

画像右端にある、Compare & pull requestをクリックしてください。

下のような画面が表示されます。

プルリクを出す。

画像上の方にある、base repositoryhead repository……というのは、「head repositoryからbase repositoryへ、内容変更のリクエストを出す」という意味になります。

画像のような表示だと「terapotan/pull-request-practiceリポジトリpullreqdevブランチから、elmas3/pull-request-practiceリポジトリmasterブランチへ、内容変更のリクエストを出す」という意味になります。

何となく気づいた方もいらっしゃるかもしれませんが、プルリクエスというのは、「俺の作ったブランチをお前のリポジトリのブランチに、マージさせてくれ!」というリクエストです。

ですから、どこのブランチをどこのブランチへマージさせるのか、予め指定しておく必要があります。

画像中央に「プルリクエストのテストです。」と書かれている部分があります。
ここに、プルリクエストと一緒に送るメッセージを書き込みます。

Column:Markdown

プルリクエストと一緒に送るメッセージは、Markdownという書式で書くことが出来ます。
Markdownと呼ばれる書式で書くと、見出しや太字・箇条書きと言ったものを簡単に書くことが出来ます。この記事も、Markdownで書いています。
Markdownには、HTMLのように決まった規格があるわけではないため、エディタによって書く方法に若干の差があります。
ここではMarkdownについて詳しく解説しません。詳しいことが知りたい方は、参考文献をご覧下さい。

メッセージが書けたら、画像下にあるCreate Pull requestを押してください。

プルリクエストが作成されます。

プルリクエスト作成完了

後は、マージされるのを待つだけです。

マージされると、画像左上にあるOpenという文字がMergedに変わります。

マージが通った

(上の画像は、別のリポジトリでマージされた時のものです。)

次回予告

次回は、よくGitHubリポジトリに登場するREADME.mdLICENSE.gitignoreの3つのファイルについて解説していきます。

う-ん、よく分からん!

この記事を読んで、疑問に思うことがあったときは、気軽にコメント欄や私のTwitterから質問してください。

参考文献

Pro Git

git,GitHubを使うにあたって必要なコマンドの使い方が詳しく解説されています。この連載を読んで分からないことや詳しく知りたいことがあったときはまずProgitを読んでみるといいでしょう。 git-scm.com

GitHub公式マニュアル

GitHub公式の、プルリクエストについて解説した文章です。

help.github.com

Markdown関連

Markdownそのものについて詳しく知りたい方はこちら。

www.markdown.jp

Markdownの書き方について知りたい方はこちら。

help.github.com

次回の記事

[terapotan.hatenablog.jp

前回の記事

terapotan.hatenablog.jp

連載記事一覧

terapotan.hatenablog.jp