Null Pointer Exception

プログラミングや技術的な記事を綴っていきます。

中学生の将来なりたい職業ランキングがまさかの・・・

f:id:haruki_uehara:20170504093225j:plain

 

みなさんこんにちは。
haruki_ueharaです。

GW如何お過ごしでしょうか。

私は日頃お世話になっているPaizaさんでプログラミングゲームをしております!
解答コードの掲載OKみたいなのでブログ後半で一部を紹介させていただきます。

さて、今朝のニュース番組で最近の中学生の「将来なりたい職業ランキング」が発表されていました。

なかなか興味深い結果が出ております。

 

 

結果はこちらです。

f:id:haruki_uehara:20170504093419p:plain

いろいろ驚きました。

一昔前までは、公務員とか医者とかもう少し上位だと思いましたが、
男子中学生の1位がITエンジニア、プログラマーなんですね。

ITエンジニアやプログラマーという職業に中学生の子たちがどんな
思いを抱いているのか。
すごく興味があるところです。

正直泥臭いことも多いですし、
技術はすぐに移り変わりますし、
自分のスキル外のことを強いられるときもあれば、
理不尽なことを飲み込まないといけないこともあり、
案件によっては炎上することもあります。
常に勉強が必要であり、
帰宅の時間も遅く、
デスマーチという名が生まれ、
毎日が納期との闘い。

ここを踏まえてもなりたいのでしょうか。

なんだかデメリットみたいなことをたくさん書いてしまいましたが、

しかし無事納品できたときや、
お客様に喜んでいただけたときの感動は
何ものにも変えがたいものがあると断言できます。

世のため人のためにシステムを作っている訳ですからね。
社会貢献度はかなり高いと思います。

今はエンジニア不足と言われていますが、
将来この業界がもっと賑わってくれるのはすごく嬉しいことですね。 

 

見てみると全体的にゲームクリエイターなども多いんですね。

ニュースでは主にユーチューバーについて取り上げられていました。

中学生だけではなく、私の周りの友人でもなりたいという方が多いので、
やはり現代ではかなり人気の職業のひとつなのでしょう。

以前は動画投稿は趣味の領域であったと言えますが、
今や職業として認知されているんですね。

年間で2億稼ぐプレイヤーが存在するくらいなので、
成功すればまさしく一攫千金!!
誰にでも狙える夢がある職業だと思います!

 

 

さて、私現在Paizaさんのゲームをやってまして、
どうやら解答の掲載大歓迎のようです。

ネットではPHPPerlはあったのですが
javaの解答がなかったので私が解いた一部を下記に掲載しておきます。
変数名など細かなところは全く配慮しておりません。
簡単な問題ではありますが、
もっと良いコードのアドバイスなんかも是非いただけましたら嬉しいです!

芦屋川雛乃からのヘルプ依頼.java

 

 乃梨子とピンチを乗り越えろ.java


水無瀬朋の一大事.java

 

ではみなさん、残りの連休有意義にお過ごしください^^

血ヘドが出るほど面白い!競技プログラミングとは!!

f:id:haruki_uehara:20170413204116j:plain

みなさんこんにちは。
haruki_ueharaです。

私最近プレステ3を購入しました。
※4ではありません。
友達とオンラインゲームを満喫しているわけですが、

そんな中、ゲームよりも面白いものにどっぷり浸かっております。

 

それは

競技プログラミング

 

略して競プロと呼ばれるものです。

 

エンジニアの方やプログラマーの方ならお耳にしたことが
あるのではないでしょうか。

実際にどんなものなのか、
Wikiさんの解説によると・・・

 

概要[編集]

競技プログラミングでは、参加者全員に同一の課題が出題され、より早く、与えられた要求を満足するプログラムを正確に記述することを競う。コンピュータサイエンスや数学の知識を必要とする問題が多い。新卒学生の採用活動などに使われることもある[7][8]。多くのコンテストでオンラインジャッジが採用されている。

また、競技プログラミングに参加する人を「競技プログラマ」または「競プロer」と呼ぶことがある。

競技プログラミング - Wikipedia

 

 

だそうです。

実際には定番の

 

100以下の素数を全て表示するプログラムをつくってください。

 

素数を求める問題や

 

1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。

 

などのネット上で度々議論されている(この問題が解けないプロのプラグラマーがいると話題の)FizzBuzz問題

のようなアルゴリズム系統の問題が標準入力有りで渡されるのです。

例えば下記の

 

問題文

整数Nが与えられます。整数Nを出力してください。 ただし、入力は10進数表記で与えられますが、出力は7進数表記としてください。

入力

N

入力N0N(109)10を満たす。

出力

N

最後に改行してください。

 

 

 

問題文

 

5 000 000 005は、109+1の倍数かつ回文である。

整数Nが与えられる。1以上N以下の整数で、109+1の倍数かつ回文の数の個数を求めなさい。

ただし、回文数とは、"969"、"3223"、"1"のように右から読んでも左から読んでも同じになる数である。

 

入力

N

 

1行目に整数N(1N1018)が与えられる。

 

出力

1以上N以下の整数の中で、109+1の倍数かつ回文の数の個数を1行に出力してください。 最後に改行してください。

 

 

 

のような問題です。

プログラミングコンテストでは主に解答までのスピード、
メモリ使用量、バグの無い正確なコーディング力で点数が決まります。

 

私は

解くのが面白すぎてご飯を食べるのも寝るのも忘れてしまっているのです!!

レイトン教授という謎解きゲームが流行りましたが、
そんな感じなのでしょうか。

同じ問題、同じ答えでも人によりコードは全く違いますので、


自分の考えたロジックで思い通りの出力結果が得られたときの快感がものすごく中毒になります。

 

私は競技プログラミングではライブラリの豊富さと情報量の多さからJava言語を扱っているのですが、

メモリの使用量を極力抑えるためにコレクションではなく配列をつかったり、
出来るだけ処理を簡素化したりなどの工夫も考慮しながら実践しています。

 

しかし実際の業務では、アルゴリズムの理解がなくとも
コードが組めることがほとんどなので、
競技プログラミングの存在も賛否両論あります。

しかし私の思う競技プログラミングのメリットは
・正確なアルゴリズム、データ構造を理解できるため地力がつく。
・仕様を読み解きコーディングするまでのスピードが向上する。
・問題に対してどのように実現するか。考える力が身につく。
・バグの少ないメモリにも優しいプログラムが組める。
・プログラムとアルゴリズムは切っても切れない関係。そもそも基本。

など、数え切れないほどのメリットを感じています。


無駄の無い美しいコードが完成したときの酔いしれ感。

みなさんも是非ご一緒にいかがでしょうか。

 

 

 

WBS作成入門

f:id:haruki_uehara:20170227025028j:plain

どうもこんにちは。
haruki_ueharaです。

突然ですが皆さん、カレーライスは好きですか?
私は大好きです。

特にカレーに納豆をかけて食べるのが好きなのですが、
いつも周りの方には「ありえない」と言われてしまいます・・・

しかし騙されと思ってやってみることをオススメすると
必ずと言って良いほど皆さん美味しさに頷いていただけるんですよ。

ぜひチャレンジしてみてください!
本当に美味しいので!!

 

さて、皆さんはこんな表を見たことはありますでしょうか?

f:id:haruki_uehara:20170227031423p:plain

そう、WBSです。
こちらはガントチャートで表示されていますね。

このWBS、プロジェクト管理には欠かせない存在です。
特に作成に関しては上流工程を始められる方には必須のスキルとも言えると思います。

しかし割とWBSの定義が会社やプロジェクトによってあいまいだったり、
意味合いが異なっていることも多いのが実態です。

実際のところは一体どんなものなのか。
と合わせて、どのように作成していくのか。

そこのところを今回少し深掘りしてお伝えしていきますので、
この機会にぜひ覚えていただけたら幸いです。

今回は、入門編ということで、
皆さんの大好きなカレーの作り方を例に作成の手順を見ていきましょう。

もし良ければ前置きとして、皆さんならどのような過程でカレーを作るのか。
レシピを一度紙に書き出してみてください。

 

それでは、Let's go!!

 

■目次

 

WBSとは

WBS(Work Breakdown Structure)
・プロジェクトの作業成果物を分解し構造化した図表

まずWBSとは何か。
正式名称はワークブレイクダウンストラクチャー。
ワーク(作業)をブレイクダウン(上位の目標を下位に展開)し、
ストラクチャー(構造化)していくことを言います。
もうそのままの意味ですね。

 

WBSの目的

1.正確な見積もりを作る
2.作業のモレ・ヌケ・重複を無くす
3.スケジュールを作る
4.リスクを予測する
5.利害関係者との情報共有

WBSを作成する目的です。
実際には様々ありますが、大きく分けて上記のポイントが挙げられます。
下記ではその点を、カレー作りの観点から少し紐解いてみましょう。

 

カレー作りから見るWBSの目的

1.正確な見積もりを作る
具体的には・・・
カレーを作るのにどれだけの作業が必要か
カレーを作るのにどれだけの時間が必要か

2.作業のモレ・ヌケ・重複を無くす
具体的には・・・
手順に過不足は無いか
材料は揃っているか
必要なものが正しく作れるか

3.スケジュールを作る
具体的には・・・
手順に前後の誤りは無いか
どれだけの作業時間が必要か
指定した時間までに作れるか
いつからスタートすべきか

4.リスクを予測する
具体的には・・・
どこに不安要素があるか
どこで問題が発生しそうか
問題が発生した場合の解決法はあるか

5.利害関係者との情報共有
具体的には・・・
カレーを提供する人に出来上がり時間を伝える
どのようなカレーが出来上がるのか

大まかに具体化した例です。
目的を明確化して具体的に取り組めるようにしましょう。
次は、まず基本用語を抑えます。

 

WBSの基本用語

・要素
分解されたプロジェクトの部品
・レベル
要素を構造化したときの階層の深さ
・ワークパッケージ
最下層のレベルの要素

f:id:haruki_uehara:20170227214149p:plain

簡単にお伝えすると要素とは作業の名前みたいなものです。
レベルは「大分類」、「中分類」、「小分類」などの階層を表しています。
ワークパッケージとは主に直接作業にあたるものですね。
今の段階ではそういうものがあるんだくらいに簡単に覚えておいてください。

そしてなんとWBSには
・作業WBS
・成果物WBS
があります。
それは一体なんなのか。
を作業WBSから下記でお伝えしましょう。

 

作業WBS

プロジェクトにおいて必要なすべての作業を要素にして
時系列に沿って作業を分解します

例:

f:id:haruki_uehara:20170227215440p:plain

例としてカレー作りの作業項目を見てみましょう。

カレー作りの作業項目の分類

1.レシピの作成
・具材を決める
・分量を決める
・盛り付けを決める

2.ルーの作成
・調味料を決める
・市販を購入する

3.具材の準備
・購入する
野菜

・加工する(皮を剥く、切るなど)
たまねぎを加工する
じゃがいもを加工する
にんじんを加工する
肉を加工する

4.ご飯の準備
・お米を購入する

5.調理
・具材を炒める
・具材を煮込む
・味付けをする
・米を研ぐ
・米を炊く

6.盛り付け
・皿にごはんを入れる
・ごはんにカレールーをかける

7.感想の収集
・アンケートの配布
・アンケートの記入

※大分類を基に中分類、小分類と3階層まで作業を分解

7.感想の収集は今回皆さんに美味しいカレーを食べていただくという程なので
盛り込んでいます。

主に作業WBSでは必要な作業を明確化します。
「カレーを作る」という目的を達成するためにどんな準備が必要なのか、
具材やお米はどうするのか、どう加工するのか、どう完成まで持っていくのか。
しっかり階層にして分解していきましょう。
続いては成果物WBSです。

 

成果物WBS

プロジェクトにおいて必要なすべての成果物(納品物)を要素にして、
成果物ごとに構成要素を分解します

例:

f:id:haruki_uehara:20170227222621p:plain

※I/O(インプット・アウトプット)→入出力のこと
CRUD(クラッド)→生成、読み取り、更新、削除のこと

では、こちらも例としてカレー作りの成果物を見てみましょう。

カレー作りの成果物

1.カレーのレシピ
・具材の種類
・調味料の分量
・調理手順
・盛り付け例
・調理器具
・食器

2.カレーの具
・野菜
たまねぎの加工物
じゃがいもの加工物
にんじんの加工物
・肉
牛肉の加工物

3.カレーのルー
・ルー
・調理器具

4.炊きたてごはん
・ごはん
・調理器具

5.カレーの盛り付け
・カレーライス

6.感想文
・アンケート用紙

※大きな成果物の枠組みから成果物を構成するものへ分解して順次成果物を作成

こちらは成果そのものです。
例として野菜であれば皮を剥いたり切ったあとのもの、
肉であれば下ごしらえをしたもの、
ごはんであれば炊けたものなど、
得ることができた成果物を分解して階層にしていきます。

 

もっとわかりやすく例えると(男性目線)・・・

f:id:haruki_uehara:20170227231416j:plain


今日はやっとの思いで誘うことができた大好きな女性があなたの家にやってきます。
夜、なんとかよろしくしたいと思ったあなたはいろんな準備をするために思考する訳です。

料理を出そうか、お酒を飲もうか、部屋には飾り付けをしようか、プレゼントも用意しようか、
などなど・・・

まさしくその思考を階層化し分解したものこそが、

 

作業WBS!!なのです。

 

そこで料理はステーキを、お酒はワインを、部屋には花の飾り付けを、プレゼントはネックレスにすることが決まりました。

ただ料理を出す、お酒を用意する、部屋の飾り付けやプレゼントまで決まったのはいいですが、
どんなステーキを出すのか?具材は?
お酒はワインと決めましたがそのブランドは?赤か白はどっち?
花を飾りますが何の花?
プレゼントはネックレスにしますがどんなネックレス?

そうです。まさしくそこを決めて成果として作り上げていくものこそが

 

成果物WBS!!なのです。

 

如何でしょう。
なんとなくイメージが湧いてきましたでしょうか。

しかし安心してはいけません。
この2つのWBS、実はそれぞれメリットとデメリットがあります。
それを下記でご紹介しましょう。

 

メリットとデメリット

・作業WBS
メリット:
作業のモレを避けることができる
デメリット:
必要な成果物のモレがある可能性がある
想定外の作業が紛れ込む可能性がある 

・成果物WBS
メリット:
必要な成果物のモレを避けることができる
デメリット:
すべての成果物の識別が必要
作業にモレが生まれる可能性がある

 

主に以上の点が挙げられます。
そのため・・・

作業WBSを基本にしてワークパッケージに紐付く成果物を関連付けることが必要であると言えます。

両方のWBSを使ってデメリットを相殺して、相互補完によりモレ、ヌケがないWBSを作成しましょう!

 

こうして出来上がったカレー作りのWBSがこちらです。

カレー作りのWBS

f:id:haruki_uehara:20170228012253p:plain

 

では最後に、WBS作成時のルールをまとめましょう。

 

WBSの作成ルール

1.100%ルール
2.1ワークパッケージに、1成果物、1担当者を割り当てる
3.レベルは3階層、1レベルに7要素まで

 

100%ルールとは「子要素をすべて足し合わせると親要素と等しくなる」
ということです。
上記のカレーでいうと、子要素をすべて足し合わせるとカレーが出来上がるということですね。

そして1つのワークパッケージに対しては複数ではなく1担当者を割り当てます。

最後にレベル、要素の上限を決めることで完結で分かりやすいWBSが出来上がるという訳です。

 

 

今回はWBSの基本の触りの部分だけをお伝えしました。

もし冒頭で、カレーのレシピを紙に書き出していただいた方がいましたら、
それを周りの方に見せ、そのレシピ通りに作業を進めたら本当にカレーが出来上がるのか聞いてみてください。

もし、足りない点がありましたら、今回お伝えしたことを踏まえて改めて作ってみましょう。

「階層にし分解する」という点においてはUMLなどのモデリング技法にも活かせる方法です。
私たちエンジニアはクラス図のモデル化やデータベースのテーブルを作成する際にも物事を分解して考える機会が多くあります。

 

ぜひ、少しずつ練習してマスターしていきましょう。

 

それではまた次回に!

プログラミング

f:id:haruki_uehara:20170224031654p:plain
どうもこんにちは。
haruki_ueharaです。

皆さんプログラミング楽しんでますか?
また、これから始めようと思っている方、
そうでない方はどんな印象をお持ちでしょうか。


今日は私がプログラミングに対して受けた最初の印象と、
楽しさについてお話ししたいと思います。

私はもっぱら理数系でもなければ、
学校の勉強だって出来る方ではありません。

プログラムも興味で触ってみたいと思ったところからが始まりでした。

最初は書籍を購入し読んでみる訳ですが、
率直な感想は

只々...


意味が分からない。

でした。

この意味の分からなさというのは、
「型」や「変数」や「代入」、「演算子」、「真偽値」などの単語的な意味ももちろんあるのですが、

一番は、

なぜこんな回りくどいことをするのかということ。


細かい説明は省きますが例えばC#では、
コンソール(黒い画面)に文字や文字列を出力するときに
--------------------------------------
Console.Write("こんにちは");
--------------------------------------
と入力します。

これでコンソールには
「こんにちは」
と表示される訳です。
こんにちはと出すだけならこれだけでいいんです。

しかし
プログラム上では、文字や数字をわざわざ箱のようなものに格納する
「型」と「変数」という概念があり、

文字列を格納できるのは「string」という型になります。

 

例えば
string s = "こんにちは";

と入力すると、stringの後ろにあるsに”こんにちは”という文字列が格納されます。

この「s」、どんな名前でもいいのですがstringのような型の後ろにつけることで箱の役割をしています。
この箱が「変数」と呼ばれるものです。

いわゆるこの動作が、文字列”こんにちは”を変数sに「代入」する。
という訳です。

そして先ほど出てきた
Console.Write("こんにちは");
でコンソールに出力できることをお話ししましたが、
下記のような方法でも全く同じ結果が出てきます。

--------------------------------------
string s = "こんにちは";
Console.Write(s);
--------------------------------------

sの中身には”こんにちは”が入っているので、
Console.Write
の後ろにsを入れることで、
sの中身に入っている”こんにちは”という文字列がコンソールに出力されるのです。

ここで私は思います。





え・・・・・?





意味あるの!!?

 

こんな面倒なことしなくてもConsole.Writeの後ろにそのまま”こんにちは”って入れて出力すりゃあ良いじゃないか!!


真っ先に思いました。


他にも、
文字と文字列は異なるものです。

文字列は複数文字入力できますが、
文字は1文字しか入力できません。

文字列が先ほどご紹介した「string」という型に対し
文字が「char」という型になります。

--------------------------------------
char c = 'あ';
--------------------------------------

 

のように変数cには1文字しか入りません。
2文字目を入れるとエラーになるのです。






ん・・・・・?





チャー・・・お前、必要か!!!?


1文字しか格納できないなら

charいらないじゃん!!


全部stringにすりゃ良く無い!!?





そんなことを思い、

なぜその型が必要なのか、
なぜわざわざ変数に値を代入するのか、
結局のところこれをしたことで何ができるのか!!

一切分からないスタートを切りました。

その意味が分からない内容は
数多く出ている初心者用の書籍の中でも、
さも、こんな一般常識分からない奴いないだろうと言わんばかりに
普通に書かれており、困惑しかありませんでした。





しかし、不思議なことに変数の意味や使い方を少しずつ覚えてくると・・・

これ考えた人天才!!

って思えるようになってくるのです。


ロジックを組んだ通りにプログラムが動く快感というのは
言い表せられないものがあります。

これは、組んだことがある人にしか分からないと言っても過言ではありません。


よくプラグラミングは「錬金術」とも言われています。

コンピュータはもともと0か1かの2進法しか読み取れません。
プログラミング言語は人が理解しやすい言葉で記述し、
コンピュータには0か1の信号に変換して命令を送ります。
いわゆる人とコンピュータの橋渡しをしているのがプログラミング言語であり、
最近のjavaC#などはより人間の言葉に近いことから
高級言語」と言われています。

コンピュータに0と1の信号を送るだけで、「無」から「有」を生み出せる。

確かに、錬金術なのかも知れませんね。

ありとあらゆるものを作ることができれば、
自分の時間をもっと効率化させることができたり、
日常の生活も豊かにしてくれます。

そんな実用的な良さが、プログラミングにはあるのです。

よく自分には適正が無いのでは・・・
と言われる方がいますが、
私が思うに・・・

モノを作ることが好きであれば必ずハマる!!

と、思っています。

例えばプラモデルであったり、家具の組み立てなどでもです。


が、実は適正を見極めるための、有名な問題もあります。
最後にご紹介させていただきますので良かったらチャレンジしてみてください。


----------------------------------------------------------------------------

問題

9枚のコインがある。そのうち偽物が1枚だけある。偽物は本物のコインより軽い。このとき天秤を二回だけ使って偽物を見つけ出せ。

----------------------------------------------------------------------------

 

 

正解できるできないに関わらず、
このような問題に時間を掛けても考えることが出来る方は、
よく適正があるというふうに言われています。

如何でしたでしょう。
何にせよ作りたいものがもしあればそれが一番ですが、
最近ではプログラミングも始めるにあたって敷居が低くなってきていますので、
ぜひ機会があれば触れてみてほしいです。

自分の書いたコードでコンピュータが動くのは、たった少しの動作でも楽しいものですよ!

また、このブログで少しずつプログラミングの楽しさなんかももっとお伝えできればとも思っています。
(今日はネガティブな内容ばかりでしたが・・・)



下記に問題の解答をご用意していますので、
ギブアップという方は見てみてください。


ではまた次回に。

 

 

 

 

 

----------------------------------------------------------------------------

解答

一回目は,左の皿に3枚,右の皿に3枚のせる

  • 左が高くなった場合:左の3枚の中に偽物あり
  • 右が高くなった場合:右の3枚の中に偽物あり
  • つりあった場合:残った3枚の中に偽物あり

いずれにせよ偽物の候補を3つに絞れる。

二回目は偽物の候補3枚のうち左の皿に1枚,右の皿に1枚のせる

  • 左が高くなった場合:左に載せたのが偽物
  • 右が高くなった場合:右に載せたのが偽物
  • つりあった場合:残った1枚が偽物



これだけは覚えておけ!新人エンジニアが知っておくべきツール!!

どうもこんにちは。
haruki_ueharaです。

もうすぐ春がやってきますね。
これから新人SEやPGとして活躍される方もいらっしゃるのではないでしょうか。

そんな方々のために!
今回は新人エンジニアが働き始める前に
知っておいて損はないツールの数々をご紹介したいと思います。

・・・見られなくても備忘録の意味を込めて書いておきます。
・・・既に知っているというのも無しでお願いします。

 

現代ではあらゆるオープンソースのツールも増え、
更には無償で環境を構築できる時代となってきました。
実際のプロジェクトでも無償の環境でシステムやアプリを開発することも多くなってきています。

 

そんな時代なのでもしかすると入社したときに先輩から紙切れ一枚渡されて・・・

 

先輩「インストール方法書いてあるからこれ見てローカルに保存しておいて」

 

はい??

 

なんてこともあり得る訳です。
ローカルって何?電車??地元のテレビ放送???


とまではさすがに優秀な皆様は無いと思いますが、
実際に自分のPCで触れるもの、使ってみることができるものがほとんどですので
この機会にインストールして使ってみて周りと差をつけてしまいましょう!!

今回は私が実際にプロジェクトにアサインしたときに使われていたツールたちが中心です。

 

では、代表的なものをpickup!

 

1・開発環境

言語:java      
ソフトウェア:Eclipse
URL:Eclipse 日本語化 | MergeDoc Project

ご存知の方も多いjava!!
javaと言えばEclipseEclipseと言えばjava!!

 

言語:.NET(VBC#C++)etc
ソフトウェア:VisualStudio    
URL:Microsoft Visual Studio ホームページ - Visual Studio
Windowsのみ

我らがMicrosoft.NET!!
.NETFrameworkによる圧倒的な恩恵を受けることができ、

且つすぐに開発に入ることができるので一番のオススメ!

 

言語:PHP          
ソフトウェア:MAMP(XAMPP)
URL:

www.mamp.info

有名な像さんです。
なぜ像のキャラクターなのかというと
実はPHPという文字が横を向いた像に見えるところからきているみたいですよ。
javaに次いで業界ニーズのある言語の一つです。

 

言語:swift、Objective-C
ソフトウェア:Xcode   

URL:Xcode - Apple Developer
Macのみ

私もiPhoneアプリの開発時に使いました。
iPhoneエミュレータで実際に起動確認が行えるほか、

最近のアップデードで無償で自分のiPhoneにアプリを入れて
実行できるようになりました。

 

他にもAndroidアプリ開発ならAndroidstudio、
MacならXamarin、などとにかく開発ツールはたくさんあります。
扱う言語に合わせて使ってみましょう。

次は開発には切っても切れないDBです。

 

2・データベース(DB)

PostgreSQL
URL:

www.postgresql.org

 

SQL Server
URL:SQL Server 2016 | Microsoft

 

MySQL
URL:MySQL

 

DBは種類も多く、他にもOracle DatabaseやDB2など色々ありますが、
一部関数は違えどDMLDDLなどの基本的な構文は変わらないものがほとんどです。
個人として使うにはこのあたりがオススメでしょう。

次はWeb開発に欠かせない良く使われているアプリケーションサーバーです!

 

3・アプリケーションサーバ

TOMCAT
URL:Apache Tomcat® - Welcome!

javaサーブレットを動かすときに必要です。

 

WebLogic

URL:Oracle WebLogic Server

こちらもスタメンです。

 

Websphere
URL:

www-01.ibm.com

IBMの有名なソフトウェアです。

 

アプリケーションサーバーについてはまた今後の記事で説明していきます。
次は何かと使う機会の多いエディタです!!

 

4・エディタ

サクラエディタ
URL:サクラエディタ Download

率直な感想はとにかく使いやすい。
メモ帳代わりに使うもよし。
ガリガリとコードを書くもよし。

 

Sublime Text
URL:Sublime Text - Download

私も愛用しています。
WindowsMacLinuxなどのクロスプラットフォームに対応!
見やすいし軽いです。 

 

ATOM
URL:

atom.io

多くの方に愛されているエディタ。
GitHubが作っています。
私は少し重たいと感じました。
が、HTMLやCSSのみならず、あらゆる言語に対応した
ハイパフォーマンスな動きを見せてくれることでしょう。

 

エディタも本当にたくさんあります。
無償のものから有償のもの、有志で作られたものなど様々です。
まずは無償のものを使ってみて、必要な機能が出てきたときに有償のものを検討するのが良いのではないでしょうか。

次は良く現場で使われるTOOLたちです。

 

5・TOOLS

Redmine
URL:インストール — Redmine.JP

多くのプロジェクトで使われています。
開発の工程管理をするツールです。
チケット切っといて〜と言われて意味を理解できるくらいにはしておきましょう。

 

TortoiseSVN
URL:

tortoisesvn.net

亀さんの愛称で親しまれています。
様々なプロジェクトに引っ張りだこです。
自分の書いたコードをサーバーへアップするときに、
他の人が同じタイミングで同じ箇所を更新したとしたらどうなるのでしょう・・・
いわゆる「競合」状態となったときに、どちらの更新を適用するかなどを管理してくれる無償なのが考えられないツールです。
似たようなものでGitというものがありますが、管理できる機能が異なりますので用途によって選びます。

 

WinShot
URL:WinShot

開発に欠かせないのはテストです!
単体テスト結合テストを実施するときに迫りくるエビデンス地獄。
通常のスクリーンショットでは補えない大部分をカバーしてくれます。
エビデンスの取得がとにかくラクチンに!
これでスクリーンショットが楽になればテストにも集中できますね。

 

WinMerge
URL:WinMerge 日本語版

こちらも優れもの!
画像と画像を比較して差異などを自動で識別してくれます。
主に新旧テストのときなど大いに活躍してくれることでしょう。

 

Thunderbird
URL:

www.mozilla.org

Firefoxでおなじみのmozillaの電子メールツール!
無償でここまでできるのはすごい。

 

IP Messenger
URL:

ipmsg.org

いつもこの絵が何か分からない。
月と・・・何!!?
フリーのメッセンジャーアプリ。
社内でのやりとりに使われることも多いですが、
気になるあの子とプライベートなやりとりを・・・
とか考えているとしっかりログが取られているので注意!

 

Skype
URL:

www.skype.com

もはや説明無用ですね。
IT業界だけではなくチャットやテレビ会議などで使われることも多いです。

 

 

如何でしたでしょうか。
もう既に使ったことのあるソフトもあったかも知れませんね。

余談ですが、サーバー構築の知識なども多少あった方が良いです。
ぜひ、仮想環境でCentOSなどを使って構築してみましょう。

そのためにはコマンドプロントやターミナルの知識も必要になってきます。

しかし一度身につければGUI無しでも操作できますので、
怖いものがなくなります!いや、少なくなります。
GUI(グラフィカルユーザーインターフェイス)
メニューバー、プルダウンメニュー、チェックボックス、選択ボタン、テキストボックスなど、グラッフィクを指す

 

いろんな経験を事前に積んでスタートダッシュを切りましょう!
私も頑張ります!!

ではまた!

 

 

Null Pointer Exceptonとは

はじめまして。

haruki_ueharaです。

本日からブログを始めます。

初心者向けの記事にしていこうと考えています。

何故かというと私が初心者なので・・・

 

言語は主にC#メインで、

勉強したことを含め、

その他興味のある技術のことなどを綴っていきます。

 

不定期更新ですが、よろしくお願いします。

 

ブログのタイトルである

「Null Pointer Excepton」

は、実はjavaで扱われているエラーの名称です。

 

どんなエラーかと言いますと・・・(イメージなので抽象的な内容です)

Aくんはその日、誕生日でした。

家族で楽しく誕生日パーティ。

両親から箱に入った誕生日プレゼントを貰いました。

どんなプレゼントかワクワクしながら箱を開けてみると、

なんと中身は空っぽだったのです。

 

この両親から軽くイジメを受けたAくんは

「Null Pointer Excepton!!!!」

と叫び、驚きからか気絶してしまいます。

 

誕生日という型でプレゼントという箱の中身を参照しようとしたとき、

当然ならあるはずのプレゼントが入っていない。

このように、Aくんがプレゼントの中身を見るというプログラムが動いている最中に、

予期せぬ想定外のエラーが発生することを、「例外」といいます。

例外が発生すると気絶したAくんのようにプログラムがそこで終了してしまい

それ以降処理してくれません。 「落ちる」という状態です。

 

そんなことあってはならないのです。

※厳密に言うとNullは空という意味ではありません。

NullはNullでありNull以外の何者でもないのです。

さて、ショックのあまり突然Aくんが気絶し、プログラム上では「落ちる」ことになったとき、どうすれば良かったのでしょう。

 

当然回避する方法はあります。

 

それは

try〜catch

です。

 

どう使うかといいますと…

まず事前準備として、何も入ってない誕生日プレゼントをAくんに渡したらどういう反応をするだろう。ショックで気絶するかも…

 

と考えるところから始まります。

 

父親が言います。

「じゃあ、もしAが気絶したら僕が倒れる前に受け止めてやるからちょっくら試してみよう。」

try{

Aくんに空の誕プレの箱を渡す

catch(気絶){

Aくんを受け止めて

気絶したことを家族に伝える

tryが例外の発生する可能性のある動き(処理)で catchはもし、例外(気絶)が発生したらそれを受け止め、どんな状態なのかを伝えることなどができます。

 

これで大混乱の強制終了という事態は免れる訳です。

 

他にもfinallyという、catchした後に必ず実行できる処理もあれば、

誕プレの箱の中身が入っているか入っていないかの2択であれば、

ifという条件分岐を使って処理することもできます。

かなり余談が多くなりました。

あくまで全て一例とイメージです。

ニュアンスであることをお許しください。

話を戻しますと

 

ネット用語では俗に「ぬるぽ」と言われています。

意味を成さない、などの意味です。

 

C#ですと正しくは

「Null Reference Exception」

です。

意味はjavaと全く同じです。

 

前者の方が知名度が高い?のでタイトルに採用しました。

タイトルはぬるぽですが、

ぬるぽとは言わせないブログを目指す意味を込めて命名しています。

 

これから何卒、よろしくお願いします!