Skip to content

Instantly share code, notes, and snippets.

@hakatashi
Last active August 29, 2015 14:20
Show Gist options
  • Save hakatashi/3085e508ead26e4a1356 to your computer and use it in GitHub Desktop.
Save hakatashi/3085e508ead26e4a1356 to your computer and use it in GitHub Desktop.
TSG 初心者向け分科会 イントロダクション

TSG プログラミング初心者向け分科会 イントロダクション

お掃除お疲れ様です。 今回は趣味プログラマーの@hakatashiが、プログラミング初心者向けの最初の一歩を踏み出す手伝いをさせてもらいます。

今回の目標

  • GitHubなどにリポジトリを立ててバージョン管理しながら開発を進められる状態になる
  • TSGのサーバーにSSHでアクセスして作業できる状態になる

そのために学ばなければいけないこと

  • Unixコマンド
  • Git
  • C言語
  • (SSH)

準備編

以下のソフトをインストールします。

  • Cygwin (Windowsのみ)
  • Git
  • GCCなど

Windows

インストール時の煩雑なあれこれを解消するためにchocolateyを使用してインストールすることをおすすめします。

chocolateyのインストール

管理者権限のコマンドプロンプトで以下のコマンドを実行

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin

パッケージのインストール

管理者権限のコマンドプロンプトで以下のコマンドを実行

choco install git cygwin cyg-get putty
cyg-get gcc,gcc-core,git

Mac (OS X)

インストール時の煩雑なあれこれを解消するためにHomebrewを使用してインストールすることをおすすめします。

Homebrewのインストール

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

パッケージのインストール

brew update
brew install git

Debian, Ubuntu

sudo apt-get update
sudo apt-get install git build-essential

Fedora, CentOS

yum install git gcc gcc-c++ -y

Unixコマンド

なぜ学ばなければいけないのか

Unixコマンドは、MacやLinuxなどのOSで共通に使われるCLIコマンドです。Windowsでは本来Unixコマンドを使えませんが、cygwinをインストールすることによってcygwin上でUnixコマンドを使うことができるようになります。

昨今ではGUIの充実によりコマンドを覚えなくてもGitやC言語を扱えるようになってきましたが、SSHやバッチ処理など、いまだにCLIを扱えないと困る場面は多いです。特にTSGのサーバーにSSHで接続して作業できるようになるために、Unixコマンドを使えるようになりましょう。

CLIとは

(省略されました)

参考資料: マンガで分かる Java入門講座

CLIの開き方

  • cygwinを開く場合は「cmd」を「cygwin」に置き換えて「cygwin(64) Terminal」を実行してください。
  • 管理者権限で開く場合は右クリックして「管理者として実行」を選択してください。
  • 慣れてくるとConEmu2などのターミナルエミュレータを使用すると便利です。(インストール: choco install conemu2)

Windows XP

スタートメニューの「ファイルを指定して実行」を開いて「cmd」と入力して実行

Windows Vista, 7

スタートメニューの検索バーに「cmd」と入力して実行

もしくはエクスプローラー上部の「ファイル」メニューから「コマンドプロンプトを開く」を実行

Windows 8, 8.1

「Winキー + Q」を押して「cmd」と入力して実行

もしくはエクスプローラー上部の「ファイル」メニューから「コマンドプロンプトを開く」を実行

Mac, Linux

「ターミナル」を実行

実践

Windowsユーザーはcygwinを、Mac・Linuxユーザーはターミナルを開いて、以下のコマンドを順に実行します。

pwd
ls
touch tsg
echo -e "Hello, TSG\n" >> tsg
cat tsg
mkdir git-test
cd git-test
cd ..

参考資料: UNIX入門 ~初心者のためのUNIX/Linux講座~ 参考資料: UNIXコマンド入門

Git

なぜ学ばなければいけないのか

ごくごく小さなプログラムを作っているぶんには構いませんが、少し大きなプロジェクトを立てたり、もしくは複数人での共同開発を始めると、いちいちファイルをバックアップしたりメールで送信したりしていたら埒が明きません。必ずGitなどの分散型バージョン管理システムが必要になってきます。

分散型バージョン管理システムはGit以外にも存在していましたが、近年は99%がGitに駆逐されたといっていいでしょう。世界最大の共同開発コミュニティ、GitHubを使うためにもGitを使えるようになることは必須です。特に最初からVisual StudioとかでC言語を学んでいると軽視しがちな部分なので、ここでしっかりと学んでおきましょう。

Gitとは

Gitの真髄は高度なブランチングと分散管理ですが、今回は最も基本的なバージョン管理の機能を使えるようになりましょう。

資料サルでもわかるGit入門を読んでいきます。

参考資料: いつやるの? Git入門 入門とあるがわりと中級者向けでGitの概念を正しく理解したい場合に有効 参考資料: Try Git

実践

インストール直後の場合、最初に以下を設定する。

git config --global user.email "you@example.com"
git config --global user.name "Your Name"
  1. git-testディレクトリにGitリポジトリを作る
cd git-test
git init
  1. 適当なファイルを編集して、ファイルが作成されたことを確かめる。
notepad hello.txt
ls
cat hello.txt
  1. statusを確認し、ファイルをstagingする
git status
git add hello.txt
git status
  1. commitし、commit logが生成されたことを確認する
git commit -m "Hello, Git!"
git status
git log
  1. 複数のファイルを編集してみる
notepad hello.txt
notepad another.txt
mkdir test
notepad test/hello.txt
git status
  1. 一部のファイルのみをコミットする。stagingしてコミット
git add hello.txt
git add test/hello.txt
git status
git commit -m "Update Helloes"
git status
git log
  1. 残りのファイルをコミットする
git add --all
git status
git commit -m "Add another hello"
git status
git log
  1. GitHubにgit-testリポジトリを作成

  2. remoteにGitHubのURLをaddしてpushする

git remote add origin https://github.com/<account>/git-test.git
git push origin master

参考資料:

ブランチ操作など

参考資料: Learn Git Branching

C言語

なぜ学ばなければいけないのか

プログラミング言語にもいろいろあり、C言語はその中の一種です。実を言うと、今回初心者向け分科会の内容としてC言語を教える格別の理由は存在しません。昔は「プログラマが最初に習う言語といえばC言語」という風潮がありましたが、特に近年では、ポインタやインクルードパスや型付けなど、他の言語と比べてつまづきやすいポイントが多いことや、ウェブプログラミングではほとんど使われないことから、初心者向けの言語としては敬遠されつつある傾向があるように感じられます。

ですが、逆に言うと、そのぶんコンピューターのより内部の仕組みが正しく理解できるということであり、コンピューターの理論的な学習への苦手感を軽減できるというメリットもあります。この初心者分科会では、新入部員の能力を見込んで、C言語を教えていきます。

(挫折しそうだったら他の言語を学んでみてもいいかもしれません。RubyかPythonあたりをおすすめします。)

実践

とりあえず苦しんで覚えるC言語の第1部第1章から第5章あたりをざーっと読んでいきます。

余力があったらAOJのVolume100をやりましょう。

エディタ

たぶんエディタの操作まで教える時間がないので、Windowsユーザーはメモ帳を使ってコーディングしてもらうことになりますが、これはめちゃくちゃストレスなので、コーディングに適したテキストエディタを使うことをおすすめします。

どのエディタが最も優れているかというのは人によって大きく意見が異なり、俗にこれはエディタ戦争と呼ばれているのですが、要するに人によって手に馴染むエディタが異なるということなので、いろんなエディタを試してみるのが一番だと思います。

近年では、以下のようなエディタが人気です。

  • サクラエディタ・秀丸・notepad2など: いずれもメモ帳を拡張して便利機能をいっぱい追加した感じのエディタ。初心者には非常にとっつきやすく、日本語のサポートも充実しているが、拡張性に難があり、あまりこれに固執すると一流のプログラマになれないともいわれる。個人的にはまだこれらが適切に使えるユースケースも存在すると考えている。
  • Vim: 複数のモードを切り替えながらあらゆる操作を文字入力で行うのが特徴的。最初は手間に感じるが、熟練すると他のどんなエディタよりも高速にコーディングできる。ちなみに現役TSGerのほとんどがVimmer。
  • Emacs: Vimよりもいくらか直感的に操作できるが、こちらはCtrlを組み合わせた操作が多く、俗に「小指が鍛えられるエディタ」と呼ばれる。また中身がLispなのでそっち系の怖い人に好まれる傾向がある。
  • Atom: GitHubが開発したテキストエディタ。JavaScriptやCSSなどのWebエンジニアリングの知識を総結集してできた謎のエディタ。GitHubはその手の(Web系の)人にとってhackableなことを推している。異常に重い。Visual Studio並に重い。

SSH

(余力があったらTSGのサーバーにアカウントを作ってSSHでつないでもらいます)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment