Se ha denunciado esta presentación.
Se está descargando tu SlideShare. ×

ジャストシステムJava100本ノックのご紹介

ジャストシステムJava100本ノックのご紹介

Descargar para leer sin conexión

東北大学で公開されている「言語処理100本ノック」をヒントに、Javaの実力が身につく問題を作成しました。作成者から、作問のねらいや裏話などをご紹介いたします。

東北大学で公開されている「言語処理100本ノック」をヒントに、Javaの実力が身につく問題を作成しました。作成者から、作問のねらいや裏話などをご紹介いたします。

Más Contenido Relacionado

Más de JustSystems Corporation

Audiolibros relacionados

Gratis con una prueba de 30 días de Scribd

Ver todo

ジャストシステムJava100本ノックのご紹介

  1. 1. 0 ジャストシステムで作った Java100本ノックのご紹介 JustTechTalk#07 2016/09/02 Twitterハッシュタグ #Java100
  2. 2. 1 自己紹介 株式会社ジャストシステム 福嶋 航    @fukushiw JavaでWebサービスを作っています Javaを使って早20年近く。Javaは1.0から使い始め、仕事では 1.1から使っています。 若い頃はひたすらコアSDKのソースを読みまくって勉強(遠い目)
  3. 3. 2 背景
  4. 4. 3 背景 素早いサービス立ち上げが重要 期間が短いとどうしても作りが「エイヤー」になりがち・・・
  5. 5. 4 背景 素早いサービス立ち上げが重要 期間が短いとどうしても作りが「エイヤー」になりがち・・・ リファクタリングフェーズは・・・ え?なにそれおいしいの? それよりも集客力アップのためにXX機能追加ね
  6. 6. 5 背景 素早いサービス立ち上げが重要 期間が短いとどうしても作りが「エイヤー」になりがち・・・ リファクタリングフェーズは・・・ え?なにそれおいしいの? それよりも集客力アップのためにXX機能追加ね プロジェクトへのフレキシブルなメンバーアサイン ここの部分はYYさんに聞かないと・・・え?忘れた?
  7. 7. 6 背景 素早いサービス立ち上げが重要 期間が短いとどうしても作りが「エイヤー」になりがち・・・ リファクタリングフェーズは・・・ え?なにそれおいしいの? それよりも集客力アップのためにXX機能追加ね プロジェクトへのフレキシブルなメンバーアサイン ここの部分はYYさんに聞かないと・・・え?忘れた? 将来を見据えた設計で、ちゃんとしたコーディングを 最初にしておかないとメンテナンスが困難に
  8. 8. 7 どうやったら最初からいいコードがチームで書けるか 社内の複数プロジェクトで、「あそこがイクナイ」「ここがイクナイ」という事例がたまっ てきていて、これをバネに各開発チームのスキルアップが必要と感じていました。
  9. 9. 8 どうやったら最初からいいコードがチームで書けるか 社内の複数プロジェクトで、「あそこがイクナイ」「ここがイクナイ」という事例がたまっ てきていて、これをバネに各開発チームのスキルアップが必要と感じていました。 そんな折、「SQLアンチパターン」の社内読書会に @t̲wada さんにお越し頂く 機会がありました。そこで、      アンチパターンには名前をつけるとよいです というお言葉を頂きました。
  10. 10. 9 どうやったら最初からいいコードがチームで書けるか 社内の複数プロジェクトで、「あそこがイクナイ」「ここがイクナイ」という事例がたまっ てきていて、これをバネに各開発チームのスキルアップが必要と感じていました。 そんな折、「SQLアンチパターン」の社内読書会に @t̲wada さんにお越し頂く 機会がありました。そこで、      アンチパターンには名前をつけるとよいです というお言葉を頂きました。 これ、使えるんじゃないだろうか?
  11. 11. 10 アンチパターン書いてみた
  12. 12. 11 本当にあった怖い話
  13. 13. 12 本当にあった怖い話 ログ監視システムからアラートメールが到着。肝心のメッセージ部分には       java.lang.NullPointerException: null とだけ書かれている
  14. 14. 13 本当にあった怖い話 ログ監視システムからアラートメールが到着。肝心のメッセージ部分には       java.lang.NullPointerException: null とだけ書かれている !? ユーザーへの影響は? 何が起きているのかサッパリ分からん・・・
  15. 15. 14 本当にあった怖い話 ログ監視システムからアラートメールが到着。肝心のメッセージ部分には       java.lang.NullPointerException: null とだけ書かれている !? ユーザーへの影響は? 何が起きているのかサッパリ分からん・・・ 運用環境に乗り込んでログを確認・・・(初動調査に遅れ)
  16. 16. 15 アンチパターンにして共有
  17. 17. 16 それを繰り返して現在14パターン
  18. 18. 17 でもアンチパターンだけでは足りない 社内Qiitaでいいねはつく。ストックもつく。
  19. 19. 18 でもアンチパターンだけでは足りない 社内Qiitaでいいねはつく。ストックもつく。 でも、見るだけだと「へ~」で終わり。やはり手を動かさないと。
  20. 20. 19 でもアンチパターンだけでは足りない 社内Qiitaでいいねはつく。ストックもつく。 でも、見るだけだと「へ~」で終わり。やはり手を動かさないと。 社内で相談してみたら、東北大学に「言語処理100本ノック」というのがあると…
  21. 21. 20 でもアンチパターンだけでは足りない 社内Qiitaでいいねはつく。ストックもつく。 でも、見るだけだと「へ~」で終わり。やはり手を動かさないと。 社内で相談してみたら、東北大学に「言語処理100本ノック」というのがあると… これ、使えるんじゃないだろうか?
  22. 22. 21 Java 100本ノック書いてみた
  23. 23. 22 Java 100本ノックとは プログラミング言語 Java に関するスキル向上を目的とした問題集です。 具体的には、運用環境で安定稼働でき、かつ、保守性・拡張性に優れたコード がより多く生産できるようになることを目指しています。
  24. 24. 23 Java 100本ノック 作問の狙い(1) 001-010:はじめの一歩 EclipseなどのIDEに慣れきった体に今一度標準コマンドをたたき込むことで、環境適 応能力を補完する
  25. 25. 24 Java 100本ノック 作問の狙い(1) 001-010:はじめの一歩 EclipseなどのIDEに慣れきった体に今一度標準コマンドをたたき込むことで、環境適 応能力を補完する あるEclipseユーザーに言われた衝撃の一言 「えーと、シェルからJava実行するのってどうするんでしたっけ?」
  26. 26. 25 Java 100本ノック 作問の狙い(1) 001-010:はじめの一歩 EclipseなどのIDEに慣れきった体に今一度標準コマンドをたたき込むことで、環境適 応能力を補完する あるEclipseユーザーに言われた衝撃の一言 「えーと、シェルからJava実行するのってどうするんでしたっけ?」 (゚Д゚)ハァ?
  27. 27. 26 Java 100本ノック例えばこんなの(1)
  28. 28. 27 Java 100本ノック例えばこんなの(1):解答例 errorcheck() { if [ $1 -ne 0 ]; then exit $1 fi } CLASSES=classes JARFILE=answer010.jar if [ ! -d ${CLASSES} ]; then mkdir ${CLASSES} errorcheck $? fi javac -sourcepath src -d ${CLASSES} -encoding UTF-8 src/Answer010.java errorcheck $? jar cfe ${JARFILE} Answer010 -C ${CLASSES} Answer010.class errorcheck $? java -jar ${JARFILE} errorcheck $? answer010.sh
  29. 29. 28 Java 100本ノック 作問の狙い(2) 011-040:言語仕様 Javaのソースコードはどう書くべきか、言語仕様を押さえて正しいプログラムを効率的 に書けるようにしたい
  30. 30. 29 Java 100本ノック 作問の狙い(2) 011-040:言語仕様 Javaのソースコードはどう書くべきか、言語仕様を押さえて正しいプログラムを効率的 に書けるようにしたい あるミドル年齢エンジニアのつぶやき 「どうも最近のJavaには慣れてなくて・・・」
  31. 31. 30 Java 100本ノック 作問の狙い(2) 011-040:言語仕様 Javaのソースコードはどう書くべきか、言語仕様を押さえて正しいプログラムを効率的 に書けるようにしたい あるミドル年齢エンジニアのつぶやき 「どうも最近のJavaには慣れてなくて・・・」 ガ━(゚Д゚;)━ ン !!!
  32. 32. 31 Java 100本ノック例えばこんなの(2)
  33. 33. 32 Java 100本ノック例えばこんなの(2):解答例 medals.forEach(System.out::println);
  34. 34. 33 Java 100本ノック 作問の狙い(3) 041-060:コアAPI APIを呼び出すときの作用を正しく把握し、説明のできないコードを後世に残さない。
  35. 35. 34 Java 100本ノック 作問の狙い(3) 041-060:コアAPI APIを呼び出すときの作用を正しく把握し、説明のできないコードを後世に残さない。 あるレビューでの驚愕の説明 「このAPI呼び出しの意図は?」 「いや、参考にしたソースがこうなっていたので同じように呼び出しました」
  36. 36. 35 Java 100本ノック 作問の狙い(3) 041-060:コアAPI APIを呼び出すときの作用を正しく把握し、説明のできないコードを後世に残さない。 あるレビューでの驚愕の説明 「このAPI呼び出しの意図は?」 「いや、参考にしたソースがこうなっていたので同じように呼び出しました」 あら(゚Д゚)そう
  37. 37. 36 Java 100本ノック例えばこんなの(3)
  38. 38. 37 Java 100本ノック例えばこんなの(3) 「等価なオブジェクトは等価なハッシュ・コードを保持する必要がある」という hashCodeメソッドの汎用規約に従う必要があるため java.lang.Object#equals() java.lang.Object#hashCode() のAPIドキュメント参照
  39. 39. 38 Java 100本ノック 作問の狙い(4) 061-080:複合・Java EE 「~しといて」と仕事を任されたときに今あるものを鵜呑みにせず臨機応変に対応でき るようにする
  40. 40. 39 Java 100本ノック例えばこんなの(4)
  41. 41. 40 Java 100本ノック例えばこんなの(4):解答ヒント
  42. 42. 41 Java 100本ノック 作問の狙い(5) 081-090:ライブラリ 091-099:フレームワーク 100:Webアプリケーションの作成 基本は押さえた上で、どのプロジェクトでもよく使われるライブラリやフレームワークの使 い方を習得し、応用できるようにする
  43. 43. 42 Java 100本ノック例えばこんなの(5)
  44. 44. 43 Java 100本ノックはGitHubで公開しています https://github.com/JustSystems/java-100practices Twitterハッシュタグ #Java100
  45. 45. We are Hiring!!

×