(このページはまだ作成中です。。)
ここでは、勉強を進めていく上での指針や、役立つ本、お勧めのサイトを紹介していきます。
全くコンピュータを初めて触るという方は、まずは、Windowsの基本的な使い方と、インターネット・エクスプローラ、それからメールについて学ぶといいでしょう。まずはキーボードの入力の仕方や基本的なソフトの使い方を覚えることから始めます。
ブラインドタッチはこれからの時代必須です。いろいろなタイピングソフトが出ていますし、フリーのものもあるのでそれらを活用してマスターします。毎日1時間練習すれば、2週間でマスターできます。最初にきちんとやらないと、変な癖がついて後で直すのが困難になります。先日、20年近くSEをやっていながら、キー入力がデタラメなSEを見かけました。当然キー入力はきちんとブラインドタッチができる人に比べて遅いです。できれば数字までマスターした方がいいです(私自身中学生の頃手動タイプライター(超昔)の講習会に通ってマスターしたのですが、数字のコースまで取らなかったので、未だに数字キーはちゃんと打てません)。
話を入門に戻しますと、コンピュータ購入時に付いてくるマニュアルでもいいですし、それがわかりづらければ、本屋や図書館にある図解入りの入門書で勉強するのがいいでしょう。Windowsについてくるツアーも昔に比べればわかりやすくなりましたが、やはり本で勉強するのがいいでしょう。
それから、WordとExcelはSEになるためには必須です。Power Pointも必須ですが、WordやExcelをマスターしていれば、すぐにマスターできます。
それから、コンピューターを買うときには必ずサポート付きで買うようにしましょう。初心者にとってコンピュータが扱いにくいのはそれがあまりにも複雑すぎるからです。あれこれソフトをインストールした途端に非常に複雑になり、ちょっとした誤操作が問題を引き起こし、手に負えない問題となります。何年も経験している上級者であれば、どこがおかしいか調査することができますが、それでも原因を突き止めるまでには時間がかかります。また、プリンターやモデムなどのハードウエアとの接続も荷が重いです。
コンピューターに詳しい友人がそばにいるのがいいのですが、おんぶにだっこではその友人にも負担がかかりすぎます。なので基本的に自分で勉強し、調べ、ピンポイントで友人に質問します。人に頼っていたらいつまでも進歩しません。しょっちゅう聞かなければならないようであれば、メーカーや販売元のサポートに頼るようにしましょう。
少し進歩して、ネットの掲示板とかで質問できるようになれば、それを利用するのもいいですが、原則は先のことと同じです。親切に教えてくれる人もいますが、あまりにも周辺知識がなさ過ぎる場合は自分で勉強しろとつき返されることも多いです。
情報処理試験に出てくる、コンピュータの構成要素と働き、データ構造、アルゴリズム、OS、システム構成技術などですが、これらの深い意味はいろいろな経験を積んでから理解できるもので、初期段階では覚えても実際大した利益になりません。というのは、いろいろな言葉や概念が出てきますが、あらゆる言語やハードをカバーしようとして抽象化されているため、どこで使われているのかわからず、きちんと理解するのが難しいのです。抽象的表現は本質を突いているのですが、具体的なことがわかっていないと抽象表現を理解するのは困難です。
ただ、概要を知っておく上で、基本情報処理試験のわかりやすい本に目を通しておくのがいいでしょう。そして1年あるいはそれ以上経験を積んでから勉強するのがいいでしょう。
コンピューターのアーキテクチャーについて学ぶ場合、次の本がお勧めです。
『CODE コードから見たコンピュータのからくり』Charles Petzold (著) 日経BPソフトプレス
電池とランプの説明からやさしく入っていき、加算回路、メモリ、カウンタと進み、ついには原始的なコンピュータへ行き着いていきます。情報処理試験の本を読むよりも、この本をじっくり読んだ方が本質的なことを理解できます。
またこの本にはコンピューターの歴史についても書かれています。現在のことだけでなく、歴史について知ると、より深く物事を理解できるし、体系的な理解が可能になります。
あとこのシリーズも結構わかりやすくていいですね。
コンピュータはなぜ動くのか〜知っておきたいハードウエア&ソフトウエアの基礎知識〜
まずはどの言語でも構いません。プログラムを作るという点では、基本的なところではどの言語でも共通しています。
その中で、
といった言語の基礎について学びます。そして、
についてもマスターします。実際、アルゴリズムについては、サーチやソートなどの問題について、実際に自分でプログラムを組んでみることです。あるいは自分の作りたいプログラムがあるならそれもいいでしょう。そうすることでプログラムを作るとはどういうものかを実感します。
この部分については、どの言語を使ってもマスターすることができます。
とはいえ、自分がどの言語で食べていくのか、ということは慎重に検討したほうがいいかもしれません。Cにするか、Javaにするか、.NETにするのか、PHPにするのか。いかに自分が興味があったとしても、趣味でない限り、仕事がなければ仕方ありません。
また、一つの言語に固まりすぎるのも問題です。普通は、一つの言語をマスターしていれば他の言語をマスターするのも難しくありませんが、やはり言語間に違いがあるため、その違いを埋められず、自分の知っている言語の思想で理解しようとするとかなり習得につまづきます。Cのポインタの理解にも壁がありますし、手続き型言語からオブジェクト指向言語への転換も壁があります。Cobolの技術者がJavaに移行するのは難しいという話もよく聞きます。
得意な言語を身につける必要もありますが、同時に一つに固まらないように複数の言語を学んでみることも頭を柔軟にするために大切なことです。
プログラマ - SEという道をたどるにしろ、ネットワークエンジニアになるにしろ、社内SEになるにしろ、コンサルタントになるにしろ、簡単なプログラムは組めるようになっていた方がいいです。特に開発経験のないコンサルタントは、優秀なコンサルタントになるのは難しいのではないでしょうか。
各言語の勉強についての紹介は後で取り上げます。
以下のページを使えば、本を買わなくても、かなり多くのことを学ぶことができます。ものによっては、下手な本よりはるかに充実しています。
まず、トップに来るのは、いわずと知れたアットマーク・アイティでしょう。入門的な内容から高度な内容まで様々な記事があり、月曜から金曜まで3〜5の新しい記事が投稿されるので毎日酔うチェックです。また知りたい内容を検索ボックスに入れて検索したり、各カテゴリーからたどっていくと、目当ての記事を読むことができます。
@IT - アットマーク・アイティ以下のページは登録が必要(無料)で、ページの使い勝手が悪いですが、ハードウエアの製品情報について詳しいレポートを読むことができます。また、ネットワーク関係の入門的なページもあるので、いろいろと勉強になります。
トップページ [キーマンズネット]以下のページも登録が必要ですが、キーマンズネット同様、いろいろと勉強になる記事があります。最新のトレンドやニュースも多いです。
IT ProIBMのdeveloperWorks。これも様々な造詣の深いライターが記事を書いていて、いろいろと勉強になります。
developerWorks稚内北星学園大学の丸山先生の講義で、Javaをはじめとして様々なトピックについて学ぶことができます。
Home Page of MaruyamaWindows絡みでわからないことはここへ。人が多く集まっているだけあって回答の速さは驚くべきものがあります。
Windows.FAQ - ウィンドウズ処方箋巨大匿名掲示板2chです。人は多く集まりますし、回答も早いですが、質は期待しないほうがいいかもしれません。まともな回答でも、言い方がきつかったり、単なる悪態・罵倒で終わったり、何のレスポンスもなく上に流れていってしまうこともあります。
プログラム技術@2ch掲示板Oracle関係の質問はここへ
Oracle Technology Network - 掲示板コンピュータ用語について調べたいときは以下のサイトが便利です。あるいはGoogleで、「○○とは」とか「○○というのは」で検索して見るのもいいでしょう。
・ネットワーク用語
・Java用語
・UNIX用語(読み方)
英語の略字で書かれた言葉は何と読むか難しいものです。単に一文字ずつアルファベットで続けて読めばいいのか、それとも英語的に読めばいいのか、あるいはそのミックスか、現場依存のところもありますが、読み方を知っていないと意思の疎通に支障をきたします。
UNIX 用語 由来-読み方辞書 version 1.6 (Feb 13 1995)
C言語について長いこと業務で触っていませんが、一応紹介しておきます。
私はこの本で最初勉強しましたが、もっとわかりやすい本もあるでしょう。入門の場合は、できるだけわかりやすい本を選びましょう。
超有名なカーニハンの名著です。容易とは言えないですが、Cプログラマになるのなら、知っていることが必須でしょう。
『プログラミング言語C』B.W.カーニハン (著),共立出版
この本は本当にお勧めします。C言語で最も重要でまたつまづきやすいポインタについて理解することができます。他の入門書で学び、ある程度慣れてからこの本を読むといいでしょう。
著者のページです。いろいろと参考になります。
そのほかいくつかのサイトを上げておきます。
Phinloda is HERE (C MAGAZINE, @nifty FPROG)
このなかの、「初級C言語Q&A」や「Cプログラミングの秘訣」は一読の価値があります。
『パソコン初心者の館』Hirofumi Fujiwara HomePage
これまた有名な藤原博文さんのページです。この中の
は、よいプログラムを書く上で参考になるでしょう。(これでようやく「義務」を果たすことができた。ふ〜)。
JavaはCなどに比べて入りやすく、またオブジェクト指向言語で需要も高いため、身に着けておいて損はないでしょう。Javaに関連する技術は、非常に幅広い技術で、日々新しい技術が出てきます。
まずは入門書でしっかりと言語をマスターし、サンプルを動かし、また自分でもいくつかのプログラムを書いてみます。
マスターすべきことは、
□変数・配列・制御文・メソッド
□クラスとインスタンス
□継承
□インターフェース・ポリモーフィズム
□例外処理
□スレッド
□基本的なクラスライブラリ
□ファイル入出力
□ソケット
□GUI・イベントモデル
まずは言語を覚えることです。初めてプログラムを学ぶ人がオブジェクト指向とは何かを学んだところで理解できません。オブジェクト指向は、手続き型の対比概念として現れたものなので、対比する手続き型について知らなければ、オブジェクトと言われても全くピンと来ないでしょう。
Javaを使ってプログラムを書けばオブジェクト指向なのではありません。ここは誤解しないようにしましょう。Javaを使っても、たいていの人は手続き型でプログラミングしています。そのことに気づけば、手続き型言語を知らなくてもオブジェクト指向がどういうものか理解できます。その段階で、オブジェクト指向について学ぶといいでしょう。
□オブジェクト指向
□デザインパターン
さらに、サーバーサイドJavaを始めとするJ2EEやその他の技術について学びます。また、開発環境について学ぶことも必要です。以前は、いろいろな開発環境が出ていても、エディタ+コマンドラインでのコンパイルというのが大半を占めていましたが、今ではEclipseがスタンダードになっているので、Eclipseについてはぜひともマスターすべきでしょう。
□サーブレット
□JSP
□フレームワーク(Struts等)
□統合開発環境(Eclipse)
□JUnit
□Ant
□CVS
□JDBC
□JavaMail
□Application Server(Tomcat, JBoss, Weblogic, WebSphere等)
□EJB Session Bean
□EJB Entity Bean
□EJB MessageDriven Bean
□JNDI
□DI
□OR Mapping
Javaの入門書としては、
『やさしいJava』高橋 麻奈 (著)ソフトバンクパブリッシング
がいいと思います。
それから、以下の本も勉強になります。
『Java逆引き大全500の極意』高橋 和也, その他 単行本 (2002/03) 秀和システム
『Javaの鉄則―エキスパートのプログラミングテクニック』
ピーター ハガー (著), その他 単行本 (2000/08) ピアソンエデュケーション
『Javaの格言―より良いオブジェクト設計のためのパターンと定石』
ナイジェル ウォーレン (著), その他 単行本 (2000/04) ピアソンエデュケーション
『独習Java』
ジョゼフ オニール (著), その他 単行本 (2002/07) 翔泳社
私はこの本で最初勉強しましたが、はっきり言ってお勧めしません。用語の説明もないし、説明も全く不十分です。まだ勉強途中の人は他の本に切り替えたほうがいいでしょう。
Javaの基礎というよりは、Javaを使った様々な技術の最も簡単なサンプルを紹介しているページで、最初に新しい技術を学ぶときに、私も参照させてもらっています。
JavaでHello Worldトップページ
Javaのメーリングリストです。おそらくJavaのメーリングの中では最大といっていいでしょう。Javaで問題が起きたとき、Googleで検索するとだいたい、Javaのメーリングリストの投稿が引っかかって解決することが多いです。日々のメールを読み続けるのは大変ですが(^^;
Java(tm) House Mailing List Homepage (in Japanese)
JavaのFAQ メーリングリストをまとめたもの
Java FAQ よくある質問とその回答集
SunのJava技術に関するページです。
Sun Microsystems - Java Developer Connection
チュートリアルです。
Eclipseに関する情報
以下、個人あるいは企業サイトで役立つ小技等が掲載されています。
developerWorks: Java technology
入門編などもあり充実しています。
主にJavaの独学めもがき
「Java プログラミングに必要な基本的な知識を全て解説することを目的としている」とあるようにかなり気合が入っています。コンテンツの多さでは一番ではないでしょうか。
浅煎り珈琲 -Java アプリケーション入門
JavaHouseでお世話になっている風間 一洋さんのサイトです。
Java Programming Information
Your Technology Partner(ytp.ne.jp)
Sunのサイト
java.sun.com - The Source for Java(TM) Technology
Java自体のバグについてのレポートが掲載されています。自分で発見したバグを送ることもできます。
Javaの言語規定:かなり難解です。
Jakartaのサイト
The Jakarta Site - The Jakarta Project
@ITの記事で、sunで出しているpetshop storeを使ったEJBの説明が掲載されています。
WebLogicのサイトですが、詳細なマニュアルを提供しているため、J2EEの基本的な技術についても学ぶことができます。バージョンは随時アップしてその都度内部構造は変わっていますが、J2EEについては、EJBのバージョンが上がらない限り変わりません。
BEA WebLogic Server リリース 6.1 マニュアル
JBossに関するサイトです。
ボーランドのサイトですが、EJBのサンプルを入手することができます。
EJB ( Enterprise Java Beans ), CORBA, JSP, Servlet samples
EJBについてのSunのページです。
Enterprise JavaBeans(TM) Technology
サンのサイトでJNDIについてのチュートリアルです。
@IT:Spring Frameworkで理解するDI(1)
コンポーネントについて学びたい場合に
IT Pro 技術の広場 先輩教えて!プログラミングのabc(オブジェクト指向編)---コンポーネントって,どうなってるの(上)
Excel Word Access VBA! MOUG.Net
Hi.Ro.Ponのおうち(VB,Access,Excel,VBA,VBS,ASP,同人ソフト情報満載)
Perl入門
手ごろなcgiスクリプトを探すには
Windows上でのPerl実行ファイルの取得先
ActiveState - ActiveState ActivePerl free Perl open source binary language distribution
レファレンスサイト
HTMLのチェック
gifアニメ
素材のリンク
わかりやすいXML, XSLTのページです。
XMLの仕様書
データベースについては、以下のマスターすべきことがあります。
1. SQL
2. 論理設計
3. 物理設計とチューニング
4. ストアドプロシージャ
1、3、4については、本から多くのことを学ぶことができます。SQLはアルゴリズムを組むときのようなパズル的な要素があり、正しく効率的なSQLを組むには訓練が必要です。2の論理設計については、RDB理論について学んだ上で、実際の開発経験の中でDBの役割について学んでいく中でマスターしていくことです。
RDBの理論やデータモデリングについては以下の本がわかりやすくて参考になります。
以下は、Oracleについてですが、役に立つリンクです。Oracleは開発者にとっては非常に優しい会社です。インターネット上で全マニュアルを無料で手に入れることができ、サポートサイトもしっかりしています。
Oracle Technology Network Japan
Oracle Technology Network - 掲示板
アイ ラブ SQL (I love SQL)など、ちょっとした小技について学べる。
『図解でわかるLinuxのすべて』西村めぐみ 日本実業出版社
Sunのサイトです。Solaris関係のドキュメントを探すのにどうぞ。
ネットワークについてマスターするには、まず何冊かの本に目を通すことです。TCP/IP、各種プロトコル、スイッチについては少なくとも押さえておきたいところです。あとはEtherealを使いこなし、実際のプロトコルの様子を観察します。
@IT:Windows TIPS -- Tips:netstatコマンドを使いこなす
WIDE University
・OS
Linuxサーバーの設定に関する様々なトピック
ディストリビューションと含まれるアプリケーションのバージョンの対応リスト
DistroWatch.com Put the fun back into computing. Use Linux.
・サーバ構築全般
・Web Server
Apache + PHP + PostgreSQL laboratory
・Ethernet
・QMAIL
・Postfix
メールサーバ( Postfix ) - Linux で自宅サーバ [ Home Server Technical. ]
Postfixの運用・管理 1.はじめに・Postfixの構造
・ProFTPD
ProFTPD - Professional FTP Daemon
・RealVNC
ゼロ円でできるXサーバ WindowsでLinuxをリモート操作・前編(2-3)
・ログ関係
daemontoolsによるロギングとプロセス監視(1-3)
・ログ解析
・パスワードクラック対策
John the Ripper password cracker
・改ざん防止
エンタープライズ:第3回 rootkit検出ツールによる検査 (1-6)
・ツール
・Security
IT Pro 技術の広場 先輩教えて!プログラミングのabc(オブジェクト指向編)---オブジェクトって,何がすごいの(上)
羽生田栄一の「オブジェクト論」【前編】(上) IT Pro 技術の広場
以下のサイトもオブジェクト指向について知る上で参考になります。カプセル化やメッセージパーシング、再利用について、私も疑問に思いました。
オブジェクト指向を哲学的な視点から分析しています。
オブジェクト指向システム分析設計入門
Introduction to Object-Oriented System Analysis and Design
『ゼロから学ぶオブジェクト指向設計』 日経ソフトウエアムック
特に、
これならわかるオブジェクト指向
Part4 構造化プログラミングには限界がある
では、手続き型とオブジェクト指向によるプログラミングの違いがよくわかります。実際のソースコードで見ると、どう違っているのかはっきりします。ソースコードはここからもダウンロードできます。
オブジェクト指向プログラミングにおける最も注目したい唱道者マーチン・ファウラーのページ
Martin Fowler's Bliki in Japanese - パターンは新しいもんじゃない
結城 浩 The Essence of Programming
故まさーるさんのページです。JUnitを使ったテストについて詳しく述べられています。そのほかのページも参考になります。
JUnit, Testing Resources for Extreme Programming
技術以外にも重要なこととして、ツールを使いこなすことが挙げられます。
コードの作成にしろ、ドキュメントの作成にしろ、そこでは何らかのアプリケーションを利用することになります。便利な道具を知っていれば、それだけ仕事の効率は上ります。スキルの高い人間は例外なく、文書処理が早いものです。
・IDE(統合開発環境)
・文書Editor
・文書整形
・表計算ソフト
・コマンド
Javaのところでも述べましたが、エディタでゴリゴリ書くよりもIDEを使った方が効率的です。とはいっても使いこなしていないと、十分な力を発揮できません。使うツールに精通し、便利な機能を使いこなすことです。
例えばeclipseを使えば、
など便利な機能が豊富にあり、プラグインで様々な機能を追加できるのも魅力です。
一通りの機能を知り、右クリックやショートカットを覚え、カスタマイズをしたり、マクロの使い方を覚えます。
文字列を処理する必要が出てきたときには、エディタの機能を使ったり、あるいはsedやawk等のコマンドや、シェルスクリプトやperlなどを使って、効率化します。
ドキュメントを作成したり、集計処理をする際にはExcelが良く使われますが、これも使いこなしているのとないのとでは全然スピードが違います。Wordも、クセがあり嫌いな人が多いですが、文書作成のデファクトスタンダードになっているのでマスターしておいたほうがいいでしょう。ただし他人に見せる文書ではない場合は、エディタを使った方が、検索、置換、コピー&ペーストなどの速度は断然速いです。
お勧めのツールとしては
Javaクラスサーチ どのjarに目的のクラスが含まれているかを検索します。
めもりーくりーなー CPUやメモリの使用状況をリアルタイムに表示します。
Tail for Windows tailコマンドのWindows版です。
簡単ファイル日時変更 EzFileAge 右クリックに入れてファイルのタイムスタンプを統一するときに便利です。
VMWare 簡単に複数のOS環境をテストできるため便利です。これからの時代マスターするのは必須でしょう。
そのほかエディタですが、私はWZEditorを使っていますが、使い慣れたものが一番でしょう。キーボードショートカット、マクロ、GREP、アウトラインプロセッサ(メモ)など重宝して使っています。