情報処理技術者試験のノウハウサイト

情報処理技術者試験ノウハウサイト

文系出身の私が最短で合格するためのノウハウを提供するサイト

管理人コラム(2019年02月)

2/19 Java7以前とJava8の書き方を比較しよう

◆"山田で始まる"を数えるJavaプログラム
List nameList = Arrays.asList("山田うどん", "山田優", "今夜が山田");

【Java7】
int count = 0;
for (String name : nameList) {
 if (name.startsWith("山田")) {
  count += name.length();
 }
}
【Java8】
int count = nameList.stream().filter(s -> s.startsWith("山田")).
mapToInt(s -> s.length()).sum();

Java7の方は、条件文が多く書かれている分「バグが起きやすい」「ぐるぐるループするので性能が良くない」「テストが増える」などデメリットが多くあります。
勘違いしてはいけないのは、複数行を1行で書きたいからJava8の書き方になった。というわけではありません。

今日はここまで。

2/20 Javaって何を覚えたらいいの?(概念編)

「何を勉強したらJava開発できるって言っていいのかわからん」という疑問があると思いますが、ドンドン新しいモノも出てきているし範囲が広すぎて中々私もYES-WE-CAN!!とは言い切れません。その中で大事なのに手を抜かれやすいのは「概念系」です。例えばextendとかinterfaceも概念を理解してないと正しく使えないし、デザインパターンも概念の理解がとても難しいです。

今日のお題は、Webシステム開発で必須の「MVCモデル」という概念です。簡単にどんなものかというと以下です。

  • M(model)・・・データの管理/処理
  • V(view)・・・modelを表示
  • C(controller)・・・modelとviewをコントロール

の三つに分けて設計すれば平行開発できたり保守性が高まります。

表示の仕方を修正したいだけなら、view(例えばlogin.html)だけ修正すれば良くてmodel,controllerは修正不要。であれば、MVCモデルで設計できているといえます。ただ、frameworkにMVCモデルの概念が組込まれていて、frameworkに沿って開発すれば意識しなくても結果的にMVCモデルで開発できているということがほとんどです。

今日はここまで。

20190222 聞かれたことに答えているでしょうか?

 こういう会話してしまっていることはないでしょうか。
リーダー「AAA終わったの?」
「えーと、急にBBBが発生しまして・・・BBBに関してはお客さんに・・・」
リーダー「いや、AAA終わったのか聞いてるんだけど」


面談や商談などのときにこういう会話をしてしまうと「この人大丈夫かな」「仕事しずらそうだな」と思われてYESをもらうのが難しくなってしまいます。あなたがリーダーならそういう人に、お客さんを相手に仕様調整する仕事を任せようと思うでしょうか。

人並みにコミュニケーションできている人でも、「聞かれたことに答える」ところは出来ていないという人もいるので、今一度意識してみてはいかがでしょうか。

今日はここまで。

20190226 Javaをお勉強しよう

(課題1)JsonのテストデータをJavaで出力するツールを作ろう

  • REST API(インタフェースはJson形式)のテストで使う、Json形式テストデータを出力するプログラムを書く
  • Jsonが1行で出力されたら、ネット上の整形できるサイトで見やすく整形しよう
  • 狙いは「Jsonとはを知る(xmlは古い)」「Json操作APIを使ってみよう」
  • 最近のプロジェクトでは、結構な割合でJsonテストデータを作る機会は多いので、覚えたらそのまま仕事で使える

<サンプルプログラム一部>

import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonTool {
 private ParentForm form = new ParentForm();
  
 public void testJsonPrint() throws Exception {
    
  ObjectMapper mapper = new ObjectMapper();
  String json = mapper.writeValueAsString(form);
  
  System.out.println(json);
 }
}

(課題2)課題3の準備をする

  • 1万行データが書かれているファイルを100ファイル作る(合計100万行)
  • 項目や値は適当でよいが、サロゲートキーは入れましょうか
  • mysqlをインストールして、テスト用テーブルを作る

(課題3)シングルスレッドとマルチスレッドでどのくらい処理速度が変わるのか検証しよう

  • 1万行データが書かれているファイルを100ファイル(合計100万行)を配置する
  • ファイルからを読み込んだデータをDBにinsertしていく
  • シングルスレッドとマルチスレッド2本で実行した場合の処理時間を比較する

難易度は高くないが、システム開発現場でそのまま使えるスキルが身につくと思います。
挑戦してみてはいかがでしょうか。

今日はここまで。

ご意見・ご要望はこちらへ