Enviar pesquisa
Carregar
勉強会用資料:Javaアプリ作成
•
Transferir como PPTX, PDF
•
0 gostou
•
1,974 visualizações
S
ssuser331f24
Seguir
JavaでGUIを持ったアプリケーションを作る勉強会の資料。
Leia menos
Leia mais
Engenharia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 30
Baixar agora
Recomendados
初歩から始めるJava勉強会 プレゼンテーション資料
初歩から始めるJava勉強会 プレゼンテーション資料
Terumi Tamura
Windowsアプリテスト自動化 [Friendly+delphi]
Windowsアプリテスト自動化 [Friendly+delphi]
Tatsuya Ishikawa
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
Hiroshi Toda
大規模Perl初心者研修を支える技術
大規模Perl初心者研修を支える技術
Daisuke Tamada
他言語との連携(ネイティブから動的言語まで)
他言語との連携(ネイティブから動的言語まで)
Tatsuya Ishikawa
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
Hiroshi Toda
メタプログラミングでExcel仕様書よさらば
メタプログラミングでExcel仕様書よさらば
Kouji Matsui
Nespのコード生成
Nespのコード生成
Kouji Matsui
Recomendados
初歩から始めるJava勉強会 プレゼンテーション資料
初歩から始めるJava勉強会 プレゼンテーション資料
Terumi Tamura
Windowsアプリテスト自動化 [Friendly+delphi]
Windowsアプリテスト自動化 [Friendly+delphi]
Tatsuya Ishikawa
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
Hiroshi Toda
大規模Perl初心者研修を支える技術
大規模Perl初心者研修を支える技術
Daisuke Tamada
他言語との連携(ネイティブから動的言語まで)
他言語との連携(ネイティブから動的言語まで)
Tatsuya Ishikawa
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
Hiroshi Toda
メタプログラミングでExcel仕様書よさらば
メタプログラミングでExcel仕様書よさらば
Kouji Matsui
Nespのコード生成
Nespのコード生成
Kouji Matsui
式の体を成して無い式を式の体を成すように式と式木で何とかする式
式の体を成して無い式を式の体を成すように式と式木で何とかする式
Kouji Matsui
IDEALIZE YOU
IDEALIZE YOU
佑介 九岡
The evolution of c#
The evolution of c#
leverages_event
Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」
Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」
Fujio Kojima
WebStormでできること
WebStormでできること
kamiyam .
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
慎一 古賀
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
慎一 古賀
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
Yahoo!デベロッパーネットワーク
Async deepdive before de:code
Async deepdive before de:code
Kouji Matsui
大人の基礎C#【Niigat.NET 2015-10】
大人の基礎C#【Niigat.NET 2015-10】
Mitsuhito Ishino
PHPUnitでリファクタリング
PHPUnitでリファクタリング
Takako Miyagawa
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
Daisuke Tamada
プログラミング言語とシステムデザイン
プログラミング言語とシステムデザイン
Tsutomu Yano
Html5fun 20150123 JavaScript効率化
Html5fun 20150123 JavaScript効率化
Katsushiro Koizumi
第八回カーネル/VM d-kami 没スライド
第八回カーネル/VM d-kami 没スライド
Daisuke Kamikawa
React componentのコンストラクタを追いかけて
React componentのコンストラクタを追いかけて
Hoso michi
Bindingからframework elementを見つける
Bindingからframework elementを見つける
Tatsuya Ishikawa
Friendlyを使ったwindowsアプリテスト自動化
Friendlyを使ったwindowsアプリテスト自動化
Tatsuya Ishikawa
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門
Narami Kiyokura
jQuery 対応ライブラリと TypeScript
jQuery 対応ライブラリと TypeScript
インフラジスティックス・ジャパン株式会社
20120927 findjob4 dev_ops
20120927 findjob4 dev_ops
ume3_
AngularJSを通してDockerと触れ合った
AngularJSを通してDockerと触れ合った
pastelInc
Mais conteúdo relacionado
Mais procurados
式の体を成して無い式を式の体を成すように式と式木で何とかする式
式の体を成して無い式を式の体を成すように式と式木で何とかする式
Kouji Matsui
IDEALIZE YOU
IDEALIZE YOU
佑介 九岡
The evolution of c#
The evolution of c#
leverages_event
Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」
Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」
Fujio Kojima
WebStormでできること
WebStormでできること
kamiyam .
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
慎一 古賀
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
慎一 古賀
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
Yahoo!デベロッパーネットワーク
Async deepdive before de:code
Async deepdive before de:code
Kouji Matsui
大人の基礎C#【Niigat.NET 2015-10】
大人の基礎C#【Niigat.NET 2015-10】
Mitsuhito Ishino
PHPUnitでリファクタリング
PHPUnitでリファクタリング
Takako Miyagawa
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
Daisuke Tamada
プログラミング言語とシステムデザイン
プログラミング言語とシステムデザイン
Tsutomu Yano
Html5fun 20150123 JavaScript効率化
Html5fun 20150123 JavaScript効率化
Katsushiro Koizumi
第八回カーネル/VM d-kami 没スライド
第八回カーネル/VM d-kami 没スライド
Daisuke Kamikawa
React componentのコンストラクタを追いかけて
React componentのコンストラクタを追いかけて
Hoso michi
Bindingからframework elementを見つける
Bindingからframework elementを見つける
Tatsuya Ishikawa
Friendlyを使ったwindowsアプリテスト自動化
Friendlyを使ったwindowsアプリテスト自動化
Tatsuya Ishikawa
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門
Narami Kiyokura
jQuery 対応ライブラリと TypeScript
jQuery 対応ライブラリと TypeScript
インフラジスティックス・ジャパン株式会社
Mais procurados
(20)
式の体を成して無い式を式の体を成すように式と式木で何とかする式
式の体を成して無い式を式の体を成すように式と式木で何とかする式
IDEALIZE YOU
IDEALIZE YOU
The evolution of c#
The evolution of c#
Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」
Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」
WebStormでできること
WebStormでできること
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
Async deepdive before de:code
Async deepdive before de:code
大人の基礎C#【Niigat.NET 2015-10】
大人の基礎C#【Niigat.NET 2015-10】
PHPUnitでリファクタリング
PHPUnitでリファクタリング
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
プログラミング言語とシステムデザイン
プログラミング言語とシステムデザイン
Html5fun 20150123 JavaScript効率化
Html5fun 20150123 JavaScript効率化
第八回カーネル/VM d-kami 没スライド
第八回カーネル/VM d-kami 没スライド
React componentのコンストラクタを追いかけて
React componentのコンストラクタを追いかけて
Bindingからframework elementを見つける
Bindingからframework elementを見つける
Friendlyを使ったwindowsアプリテスト自動化
Friendlyを使ったwindowsアプリテスト自動化
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門
jQuery 対応ライブラリと TypeScript
jQuery 対応ライブラリと TypeScript
Semelhante a 勉強会用資料:Javaアプリ作成
20120927 findjob4 dev_ops
20120927 findjob4 dev_ops
ume3_
AngularJSを通してDockerと触れ合った
AngularJSを通してDockerと触れ合った
pastelInc
The seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurug
SAKURUG co.
自己紹介とC# Devkitについて.pptx
自己紹介とC# Devkitについて.pptx
hkharu0803
Spring.project
Spring.project
広平 田村
遅いクエリと向き合う仕組み #CybozuMeetup
遅いクエリと向き合う仕組み #CybozuMeetup
S Akai
ネイティブアプリ開発を加速する、モダンバックエンドとのタイアップ手法
ネイティブアプリ開発を加速する、モダンバックエンドとのタイアップ手法
Akira Hatsune
Google Product
Google Product
Daisuke Sugai
HTML5ハイブリッドアプリ開発のベストプラクティス
HTML5ハイブリッドアプリ開発のベストプラクティス
アシアル株式会社
Intalio japan special cloud workshop
Intalio japan special cloud workshop
Daisuke Sugai
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
keroyonn
JavaScriptトレンド総括(2014)
JavaScriptトレンド総括(2014)
VOYAGE GROUP
JavaScriptと共に歩いて行く決意をした君へ
JavaScriptと共に歩いて行く決意をした君へ
Muyuu Fujita
WikiWikiアジャイル
WikiWikiアジャイル
Fumio Kawakami
2014.11.01 Dockerことはじめ
2014.11.01 Dockerことはじめ
xyzplus_net
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
fd0
Kaleidox
Kaleidox
Tomoharu ASAMI
Uwpアプリケーション開発入門
Uwpアプリケーション開発入門
Makoto Nishimura
これから始めるSpringのwebアプリケーション
これから始めるSpringのwebアプリケーション
土岐 孝平
スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向
Tsutomu Ogasawara
Semelhante a 勉強会用資料:Javaアプリ作成
(20)
20120927 findjob4 dev_ops
20120927 findjob4 dev_ops
AngularJSを通してDockerと触れ合った
AngularJSを通してDockerと触れ合った
The seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurug
自己紹介とC# Devkitについて.pptx
自己紹介とC# Devkitについて.pptx
Spring.project
Spring.project
遅いクエリと向き合う仕組み #CybozuMeetup
遅いクエリと向き合う仕組み #CybozuMeetup
ネイティブアプリ開発を加速する、モダンバックエンドとのタイアップ手法
ネイティブアプリ開発を加速する、モダンバックエンドとのタイアップ手法
Google Product
Google Product
HTML5ハイブリッドアプリ開発のベストプラクティス
HTML5ハイブリッドアプリ開発のベストプラクティス
Intalio japan special cloud workshop
Intalio japan special cloud workshop
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
JavaScriptトレンド総括(2014)
JavaScriptトレンド総括(2014)
JavaScriptと共に歩いて行く決意をした君へ
JavaScriptと共に歩いて行く決意をした君へ
WikiWikiアジャイル
WikiWikiアジャイル
2014.11.01 Dockerことはじめ
2014.11.01 Dockerことはじめ
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
Kaleidox
Kaleidox
Uwpアプリケーション開発入門
Uwpアプリケーション開発入門
これから始めるSpringのwebアプリケーション
これから始めるSpringのwebアプリケーション
スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向
勉強会用資料:Javaアプリ作成
1.
JAVAプログラムの練習 SWINGを使ったGUIの作成 2021/09/15
2.
JAVAでアプリを開発する
3.
目次 • 基礎知識 • 開発環境の構築 •
課題 • ストレッチゴール • 参考文献
4.
基礎知識 • Java言語とは • なんで「オブジェクト指向」? •
プログラム複雑化の例:ポケモン
5.
JAVA言語とは • 現在メジャーな開発言語の一つ • 有名ドコロだとMinecraftとかで使われている。 •
OSや環境にとらわれないソフトが作れる。 • ただしOSの標準に合わせた統一感のあるUIは難しい。 • C++をベースにオブジェクト指向の考え方でプログラムを作 る。 • JavaScriptとは関係ない 文法については各自で参考図書などで勉強してみてくだ さい。 確か社内にも参考書があったはずです。
6.
なんでオブジェクト指向? オブジェクト指向のメリット • プログラムが複雑になっても管理しやすくなる • 考えなくて良い部分を増やせばそれだけ管理が楽になる •
新しい機能の作成が楽になる • 「複雑になる」例は? • ポケモン • 赤緑(25年前)とソード・シールド(2年前)を比較する
7.
ポケモンで見るプログラムの複雑さ 初代ポケモン ポケモンのステータス • 種族値 • 個体値 •
努力値 ポケモンのわざ • 威力 • 命中 • PP • 特殊効果(一撃必殺、ステータス変化etc…)
8.
現在のポケモン ポケモンのステータス • 種族値 • 個体値 •
努力値 • なつき値 • 性別 • 特性 • 性格 • もちもの • メガシンカ先 • キョダイマックス先 • …… ポケモンのわざ • 威力 • 命中 • PP • 特殊効果(一撃必殺、ステータス変化 etc…) • Z技化 • 大マックス技化 • キョダイマックス技化 • ……
9.
開発環境の構築 手順 • 開発環境の選定 • GUI作成ツールの選択 •
Eclipseの環境構築 • Eclipse本体のインストール • Swingのインストール
10.
利用可能な開発環境の選定 ECLIPSE(選択) • 無料 • 20年前に開発が始まったソフ トのため、過去を引きずって使 いづらいこともある •
インストーラが巨大 • 一応デファクトスタンダード • 日本語化情報も豊富 • どれだけスペックが高くても動 作が重い(気がする) INTELLIJ IDEA • 本格的に使おうとしたら 有料 • 比較的新しいIDEのため、 使いやすい • 無料版で日本語化できる かは不明 VISUAL STUDIO COMMUNITY EDITION(参考) • 個人利用であれば無料 • IDE周りもある程度洗練さ れている。 • 日本語も対応 • そもそも使える言語がJava じゃなくてC# • 個人的にはC#の方が使い やすいと思う。
11.
GUI作成ツールの選択 JavaのGUI作成ツール候補 • Java FX •
Swing Swingを選択 • 古いフレームワークではあるが、 GUIの動作がわかりやすいため • オブジェクト指向とイベントでGUIを作る • .Net FrameworkやAndroidのネイティブアプリでも 同様の考え方がされる
12.
ECLIPS本体のインストール All in Oneをインストールしよう •
下記アドレスにアクセスしてダウ ンロード • https://mergedoc.osdn.jp/ • 最新版→Full Edition→Ultimateを 選択すればOK • TODO:Chrome OSでの開発 環境構築方法調査 • 適当な場所に展開して起動する • pleiadeseclipseeclips e.exe
13.
全部入りをダウンロード
14.
SWINGのインストール インストール方法 • eclipseを起動したらヘ ルプ→新規ソフトウェア のインストールを選択 • 作業対象から一番新し い月のアドレス(多分画 面と一緒)を選択 •
swingと書かれたツール (両方)をインストール
15.
課題
16.
電卓を作ってみよう 電卓とは? • ユーザがボタンから数 値を入力し、計算する システム • ……説明いる? •
WindowsならWindows キーとRキーを押して、 calcって入力してEnter を押せばいいと思う。
17.
選べる難易度 いくつか難易度を用意してみました。 • 超初心者級 • 初心者級 •
中級者級 • オブジェクト指向プログラマ級 • 無駄に全力級
18.
要求仕様 今回の要求事項 • 整数4桁の四則演算ができる(~初心者) • 整数9桁の四則演算ができる(中級者~) •
小数の四則演算ができる(追加ゴール) • 2つの数値だけ考えれば良いので四則演算の優先度は考え ない • 適切なエラー処理を考えること(何がエラーになるか考え てみよう)
19.
超初級者用スターターキット githubにスターターキットを用意 • ボタンとテキストボックスを準 備 • ボタンを押すとテキストボック スに文字を表示 ある程度自分で頑張りたい人はUI の設計から自分でやってみよう
20.
スターターキットのダウンロード 方法 gitを使ったダウンロード • ファイルからインポートを選択 • Gitからプロジェクトを選択 •
クローンURIを選択し、 https://github.com/mickie895/swing_calc_for_educ ation.gitを記入 • ※ユーザ名やパスワードは入れなくてOK • swing_calc_for_educationを選択してインポートする
21.
22.
スターターキットの動作 ボタンとイベント • Swingは「イベントドリブン」という考え方でGUIの部品を実装す る。 • スターターキットのボタンは次のような考え方で実装している。 1.ウィンドウを作るクラスに「ボタンを押したときの動作 (ActionListener)」を実装する 2.ボタンを作り、「ボタンを押したときに発生させるイベント一覧」にウ ィンドウを登録する 3.ボタンを押したとき、登録されているイベントリスナでイベントの処理 を行う •
ウィンドウクラスで実装したactionPerformedメソッド
23.
イベントドリブン? なんでこんな作り? • ボタンが覚えているのは、「メインウィンドウ」ではなく、 「イベントを受け取ってくれるオブジェクト」 • ボタン自体は「イベントの送り先のクラス名やウィンドウのレイアウト 」などの余計な情報は知っていない •
不要な情報を与えないことがプログラムを強くする • 逆に不要な情報を知っていると、「キッチンのコンロの火を止めるスイ ッチが隣の家にある」ような不安定な構造になりやすい • 例:データベースから値を読み取りファイルに書き込むプログラムに 値チェックの処理を追加したら、値を読み込むクラスとファイルに書 き込むクラスとGUIを変更しなければいけなくなる
24.
ActionListenerを登録してる ActionListenerが 必ず実装するメソッド 情報は「コマンド」 として渡す
25.
現状わかっている詰まりポイント 何故かプログラムを実行できない • プログラムを実行しようとすると 右のようなエラーメッセージが出 る • 環境依存と考えられるが原因はわ かっていない •
JDKを変更すれば対処できるみた い # # A fatal error has been detected by the Java Runtime Environment: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ffb293402ae, pid=25700, tid=15364 # # JRE version: OpenJDK Runtime Environment (15.0.2+7) (build 15.0.2+7-27) # Java VM: OpenJDK 64-Bit Server VM (15.0.2+7-27, mixed mode, tiered, compressed oops, g1 gc, windows-amd64) # Problematic frame: # C [awt.dll+0x902ae]
26.
追加ゴール及びヒント1 整数9桁の四則演算(中級者用) • 要は「例外を起こさずにint型を表示できるようにする」が 目標 • 掛け算の処理に注意 小数点の計算について •
数値をそのままテキストボックスに出力することができなく なる • 0.0000…を入力したときの挙動を考えよう • 小数点を使う場合の有効数字はどれぐらいになるだろうか?
27.
追加ゴール及びヒント2 オブジェクト指向を意識してみる • 「計算部分をそのままにWebアプリ化したい」って言わ れたときにどうする? • どのように設計してある必要があるかを考えよう
28.
追加ゴール及びヒント3 せっかくだし、もっと全力を出してみる • エラー処理の確かさをテストケースとして単体テスト化できないだろうか • せっかくだし計算部分をTDD(テスト駆動開発)で開発してみる •
「オブジェクト指向エクササイズ」をやってみる • 一つのメソッドにインデントは一個まで • elseを使わない • 文字列、数値をクラスにラップして使用する • 一行に使えるドットは一つ • 名前は省略しない • 1クラス100行未満 • 一つクラスの変数は2つまで • 配列・リストもクラスにラップして使用する • getter・setterを使用しない
29.
できればやらないでほしいこと 講師のコードを参考にする • 自分も実装例を作成中 • 今までの情報から、自分の実装例を見る方法がある •
この資料は参加できなかった人や内容を忘れた人のため にインターネットにアップロード予定 • 実装方法も日記形式で書く予定なのでできれば見ないでね
30.
参考文献 現場で役立つシステム設計の原則 • 「オブジェクト指向エクササイズ」の出典 • プログラムを作るときの基本が分かる本 •
この内容を知っていても実際に行動に移せない人が大半なため、実践できるだけで価値がある テスト駆動開発 • プログラムが持つ「振る舞い」に焦点を当てた開発方法 • 取り上げられている例が今回の電卓と似ているからわかりやすいかも? • 四則演算のボタンを複数回押したときやCやCEを押したときの挙動をテスト駆動開発で書けるかな? 達人プログラマー ―熟達に向けたあなたの旅― 第2版 • 直接は関係ないが読もう • このスライドもこの本の考え方に従い、markdown言語で書き、gitで管理している
Baixar agora