Windowsでプログラミングを始めたい方に

## はじめに

Windowsにプログラミング言語をインストールして、プログラミングを始めたらよいと思います。ただし、インストールできればの話です。

インストールできないなんて話は聞いたことがないと思われるかもしれませんが、ユーザー権限が標準ユーザーだったりすると、インストールできないこともあります。

そういう特殊な状況に身を置くことになる方はほぼいないと思いますが、プログラミングを始めたばかりの方にも役に立つ情報も書こうと思いますので、もう少し読み進めていただければと思います。

ざっくりとした内容ですが、エディタ、実行環境、オンラインサービスなどを紹介したいと思います。

## Caps LookキーをCtrlキーに変換する

管理者権限が必要になる話から始めたいと思います。ここだけは管理者を説得してインストールさせてもらいましょう。

キーを扱うソフトなので少し気味が悪いのですが、私は「Ctrl2Cap」というソフトを使っています。他にもキーを入れ替えるソフトがありますので、お気に入りのソフトを使ってもらえばと思います。

プログラミングではCtrlキーをたくさん押すことになりますので、キーを入れ替えておいたほうがよいと思います。

デフォルトのCtrlキーの位置はホームポジションから少し離れたところにあります。デフォルトのCtrlキーの位置だとCtrlキーを押すたびにホームポジションが崩れてしまいます。

ホームポジションを崩してしまうとタイピングが遅くなります。ホームポジションを崩さずにタイプできると、流れるようにプログラミングができるようになるかもしれません。少なくとも気分良くプログラミングができるようになるとは思います。

ホームポジションを崩さずにタイプする楽しみを味わってからでも遅くはないと思います。まずはキーを入れ替えましょう。

## エディタ

たくさんエディタがあります。数あるエディタからエディタを一つ選ぶことはとても大変な作業だと思います。たとえ二択だったとしても辛い作業になるかと思いますが、大胆にVimをおすすめしたいと思います。

[KaoriYa](http://www.kaoriya.net/software/vim/)からダウンロードできます。他のサイトでもダウンロードできますが、こちらで配布しているものは使いやすいように設定されているようです。

ダウンロードした圧縮ファイルを解凍するだけで使い始めることができます。私はデスクトップに解凍して使っています。

vimもありますが、gvimをおすすめします。vimでEasy Motionというプラグインをインストールして、カーソルを操ることよりも、マウスでカーソルを移動させたほうが楽だったりします。(デフォルトでgvimでもキーでカーソルを移動させることができます。ノーマルモードでw,b,e,f,F,h,j,k,l,^,0,$,`Ctrl+I`,`Ctrl+O`などを押してみてください。)

学習コストは少し必要になるかもしれませんが、強力なエディタだと思います。使い始めはカーソルを移動させることもできないかもしれませんが、チュートリアルやヘルプを読んで徐々に慣れることで自然な仕上がりになるかと思います。

ただし、Escキーは使わないことが重要です。代わりに、InsertモードでCtrlキーと[キーを一緒に押してみてください（`Ctrl+[`と表記することがあります）。Insertモードからノーマルモードに戻ることができたかと思います。

そして、Back Spaceキーも使わないほうがよいと思います。代わりに、Insertモードで`Ctrl+H`を押してみてください。カーソルの手前の文字を削除できたかと思います。

改行は`Ctrl+J`または`Ctrl+M`を押すことで入力できます。タブも`Ctrl+I`を押すことで入力できます。

ホームディレクトリ下に設定ファイルを用意することでさらに便利なエディタになります。少し古い記事ですが、[Vimの極め方](http://whileimautomaton.net/2008/08/vimworkshop3-kana-presentation)が参考になると思います。参考にならないかもしれませんが、私の設定ファイルをさらしてみます。

``` _vimrc
set nocompatible
set number
set incsearch
set backspace=indent,eol,start
set autoindent
set expandtab
set shiftwidth=4
set tabstop=4
set softtabstop=4
set list
set listchars=tab:>.,trail:_,eol:?,extends:>,precedes:<,nbsp:%

cd ../src
```

デフォルトの設定だとウィンドウが小さいかもしれません。解凍先のgvimrcを編集すれば、ウィンドウのサイズを変更できます。

``` gvimrc
" ウインドウに関する設定:
"
" ウインドウの幅
set columns=200
"set columns=80
" ウインドウの高さ
set lines=45
" set lines=25
" コマンドラインの高さ(GUI使用時)
set cmdheight=2
" 画面を黒地に白にする (次行の先頭の " を削除すれば有効になる)
"colorscheme evening " (GUI使用時)
```

gvimに慣れてきたら`:help text-objects`などを読んでみたり、Insertモードで`Ctrl+P`を押してみてください。さらに便利なエディタになるかと思います。

## 実行環境

[Compile and Execute Programs Online](http://www.compileonline.com/)でソースコードをコンパイル＆実行できます。数百行程度のプログラムであれば、各種プログラミング言語をインストールしなくてもこちらのオンラインサービスで試すことができます。

## オンラインサービス

なにもないところからプログラミングを始めることは大変なことだと思います。テーマがなかったり、そもそもプログラミング言語の構文に慣れていなかったり、そういう場合に役に立ちそうなオンラインサービスが[クイズに答えるだけで「プログラミングの勉強」ができるWebサービスたちにハマる！ ](http://plus.appgiga.jp/masatolan/2014/07/29/53133/)で紹介されていました。

私が試してみたものは、[CodeEval](https://www.codeeval.com/)、[paiza](http://paiza.jp/)、[Codewars](http://www.codewars.com/)です。ざっくりと紹介します。

CodeEvalは英語ベースなので、設問を読むことが少し手間ですが、入力例と出力例があるので、多少英語が読めなくても利用できます。設問にレベルが設定されており、レベルごとに約50問が用意されています。

paizaは日本製のサービスです。日本語ベースであることと転職に利用できるという点が魅力的です。

Codewarsは英語ベースなので、設問を読むことが少し手間ですが、テストケースが提示されていることが多いので、多少英語が読めなくても利用できます。設問に正解すると他人の解答コードを閲覧することができるので、各プログラミング言語独特の作法を学ぶことができるように思います。

## まとめ

そもそもプログラミングを始めたい人が多いのかは疑問です。そして、プログラミングを始めたい人が実行環境を持ちたくないという状況が本当にあるのかも疑問です。

そういう細かいところは棚に上げて、これからのオンラインサービスに期待しています。オンラインで開発環境を提供するサービスなどがあってもおかしくはない時代です。詳しくはありませんが、[Nitrous.IO](https://www.nitrous.io/)などがそれかもしれません。

ブラウザだけでいろいろできると便利だと思うのは私だけでしょうか？