ラベル Git の投稿を表示しています。 すべての投稿を表示
ラベル Git の投稿を表示しています。 すべての投稿を表示

2014年11月28日金曜日

プログラミング初心者が中級者になるために学ぶべき4つの開発ツール


プログラミングの生産性はプログラマによって大きく異なります。
生産性の差というのはアルゴリズムや言語の知識、才能など様々ありますが、その中で最も効率よく、素早く改善出来るのは開発ツールの習得でしょう

開発ツールは世の中に五万とあり、様々な用途に合わせて作られています。

それらのツールを習得しているということはプログラマとしての能力そのものと言えるでしょう。

そして、天才的なプログラマでも意外とツールを良く理解していないことがあります。彼らに対してアドバンテージを取れるという意味でも開発ツールを学ぶ価値は非常に大きいです。


ここでは個別のツールに限定するのではなく、広くどのようなツールを、どのように学ぶべきなのかを議論したいと思います。




1. IDE (統合開発環境)



ex. Eclipse, Visual Studio

多くのプロジェクトにおいて、IDEはプログラミングの殆どの時間、開いているものです。
これを良く理解しているということがプログラマにとって重要であることは間違いありません。

しかし、「IDEを習得する」とはどういうことでしょうか。
IDEの利便性を最大限に引き出すためには以下の2点を習得する必要があるでしょう。

1. ショートカットキーを覚える

IDEは思った以上に沢山のショートカットキーが存在します。
いちいちGUI上でクリックするのではなくショートカットを利用するだけで作業効率は一段と上がります。

ビルドやデバッグなどの非常に頻繁に使うショートカットはすぐに覚えますが、それほど頻繁ではないショートカットの場合、自分で意識して使うようにしないと覚えられないものです


2. ビルドプロセスを理解する

IDEを自在に操れる人というのはIDEがその内部で何をやっているのかを理解しているプログラマです。

多くのIDEはMakefileに相当するものを自動生成することでプロジェクトのビルドを自動化しています。

この自動生成されるMakefileに凡そどのような内容が書かれているのかを理解すると様々な自動化が可能になります

例えばIDEが行っているビルドをそのままスクリプトにまとめることでテストビルドを自動化することが出来ます。

 

2. テキストエディタ



ex. Vi, Vim, Emacs

テキストエディタはあらゆる場面で使う、プログラマ・エンジニアの根幹となる武器です。
プログラマにとって優良なテキストエディタを習得するということは、日本人にとって日本語を習得するということと同義です

テキストエディタの習得において最も大切なことはショートカットを覚えることです。そもそもテキストエディタを開く目的自体、あるコマンドを実行することである場合もあるでしょう。

ちなみにテキストエディタとしてはViかEmacsをおすすめします。
これらはコマンドライン上で使え、ショートカットが豊富であり、またシェアが大きいからです。

十中八九、一生使えるツールになるでしょう。



 

3. Git (バージョン管理ツール)



ex. Git, Subversion (ここではバージョン管理ツールとして)

時々Gitは不必要に複雑だ、という方がいます。

複雑かもしれませんが、不必要なものではありません。


そもそも、バージョン管理はいかなる種類のソフトウェアにおいても重要なものです。
個人で開発する場合でも、過去のコードというのは常に取っておくべきものであり、また開発の途中で「やっぱりPlan AじゃなくてPlan Bにしよう」という時にPlan Aに取りかかる前の状態にコードを戻すことが出来ます。

これを手動でやろうとして失敗した方は多いと思います。

バージョン管理を丁寧に行うだけで作業の効率は格段に上がります

Gitとは全てのプログラマが習得すべきツールです。


また、Gitは絶対にコマンドライン上で扱うべきです
確かにGUIも有用ですが、GUIはそのままでは自動化出来ないという致命的な欠点を持っています。

Gitのcommitやpushというのはめんどうな作業であるので、だからこそそれらを自動化することでそれらの作業を単純化することが出来るのです。



 

4. スクリプト言語



ex. Perl, Ruby, Python

これまでのツール紹介でも繰り返し自動化と言ってきました。

自動化というのは開発ツールの本質の一つでしょう。

そして、どれだけ自動化出来るかというのは、プログラマの能力のかなり精確なベンチマークであるでしょう

それらの自動化を担当するのがスクリプト言語です。

スクリプト言語の代表はPerl, Ruby, Pythonでしょう。

スクリプト言語は本質的に「上から順に実行する」というものなので、自動化というものととても相性がいいのです。また、そもそもスクリプト言語は書くのが簡単であるということもあります。






これらの開発ツールを習得し、高い生産性と知識を得ればいち早く初級者から中級者になれるでしょう。


そもそもプログラミングとは効率向上・自動化の為のものです。

それを、プログラミングという活動自体に適用するということが中級者以上に求められる技能とも言えましょう。

2014年4月26日土曜日

一人の開発でもGitを使おう

Gitを使っていますでしょうか?

Gitは版管理システムというものの一つで、簡単に言うとチームで開発するときにコードがこんがらがらないように一ヶ所にまとめて管理し、かつ各々が自由に開発できるという便利なシステムです。

元々はLinux開発の為にリーナスが一週間かけて開発したシステムだそうです。ので多くのオープンソースで使われております。つまり、オープンソースのように不特定多数の開発者間でも開発することを可能にする、頑強なシステムになっています。

そうすると一人の開発で使うものじゃないと思われるかもしれませんが、実はこれは一人での開発にも非常に役立ちます。どういうことかというと、例えば一ヶ月前・一ヶ月後の自分なんて他人もいいところだということです。

自分で書いたコードでもちょっと前のものだとよく分からなくなるというのはよくあることだと思います。また、ある変更を加えた後にやっぱり変更前のものの方が良かった、ということもあるでしょう。テキストエディタなら結構履歴が残っているものですが、この時点に戻したい、というのを探し出すのはかなり時間がかかります。加えてそれが複数のファイルに跨る変更だった場合、ファイル間の変更も同期させないといけない訳ですから、これは非常に面倒ですね。

そこで便利になるのが版管理システム、Gitです。単独での開発においてもGitを使うと何が便利なのかというと、


・「ここの時点のコードに戻したい」というのをすぐに戻せる。

・複数のファイルを同期して戻すことが出来る。

・GitHubにあげれば色んなパソコンで共有出来る。

などがあげられます。


ただ、Gitは使い方が難しいということで敬遠されがちです。最低限必要なコマンドが結構あり、かつコマンドの順序が定まっている部分もあります。ので習熟に時間はかかるでしょう。

なぜ難しいのか。それは「正しい使い方を簡単に、間違った使い方を困難に*」というインターフェイスの原則に従っているからです。つまり、何でもかんでも制御可能にしてしまうと共同開発には使えない訳です。ので、望ましくないコマンドを受け付けないことで頑強性を実現していると言う訳です。そして、一度正しい使い方を理解すれば非常に簡単に版管理システムを使うことが出来ます

最近では非常に明解なGUIが整備されています。WindowsならTortoiseGit, Linuxならcola-gitとか。

いずれどこかで使いますし、ここで覚えてしまっては如何でしょうか。



・参照リンク
Windows用GUI:TortoiseGitの使い方
サルでもわかるGit入門

Gitの構造・システムについて解説されている、入門Git。
サルでもわかるGit入門はコマンドの使い方等の説明は非常に丁寧なので慣れたらこれを読めばいいと思いますが、UIの説明に重心が寄っていて、Gitというシステム全体についての解説が薄いように思えます。Gitの設計を知ることこそGitを習熟する肝だと思うので、この本をお勧めします。





*「正しい使い方を簡単に、間違った使い方を困難に」というのはプログラマが知るべき97のことより。