Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
サブ資料⑦Javaに関する補足
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Recruit
PRO
August 10, 2023
Technology
1.1k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
サブ資料⑦Javaに関する補足
2023年度リクルート エンジニアコース新人研修の講義資料です
Recruit
PRO
August 10, 2023
More Decks by Recruit
See All by Recruit
双方向推薦システムにおける長期的マッチング最大化に向けた代理目的関数の設計と実証
recruitengineers
PRO
0
47
就職⽀援サービスにおけるキャリアアドバイザーのシフトスケジューリング
recruitengineers
PRO
1
140
Model Routerを使った逐次LLM選択による毀損低減効果の検証
recruitengineers
PRO
1
38
ストリーム処理基盤のFlink移行検証と適材適所の実践
recruitengineers
PRO
2
66
AI 時代の Platform Engineering
recruitengineers
PRO
2
390
巨大プラットフォームを進化させる「第3のROI」
recruitengineers
PRO
2
3.3k
データ戦略を加速させる プラットフォーム エンジニアリングと進化的アーキテクチャ
recruitengineers
PRO
2
88
まなび領域における生成AI活用事例
recruitengineers
PRO
2
290
AI時代にエンジニアはどう成長すれば良いのか?
recruitengineers
PRO
1
520
Other Decks in Technology
See All in Technology
Chainlitで作るお手軽チャットUI
ynt0485
0
210
EventBridge Connection
_kensh
5
700
自律型AIエージェントは何を破壊するのか
kojira
0
150
フロンティアAIのゲート化と地政学リスク
nagatsu
0
130
2026TECHFRESH畢業分享會 - Lightning Talk - 打造精準高效的 MCP 設計模式與測試實務
line_developers_tw
PRO
0
870
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
2.9k
AI駆動開発を通して感じた、 AI時代のデザイナーの役割変化
whisaiyo
1
1.1k
2026TECHFRESH畢業分享會 - 葬送的通靈師:化系統與用戶雜訊成行動訊號
line_developers_tw
PRO
0
860
LLMにもCAP定理があるという話
harukasakihara
0
310
MCP Appsを作ってみよう
iwamot
PRO
4
560
[モダンアプリ勉強会]今更聞けないGit/GitHub入門
tsukuboshi
0
370
SIer20年! 培ったスキルがスタートアップで輝く時
shucho0103
0
840
Featured
See All Featured
Odyssey Design
rkendrick25
PRO
2
690
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
How to make the Groovebox
asonas
2
2.2k
New Earth Scene 8
popppiees
3
2.3k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
23k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
270
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
480
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Claude Code のすすめ
schroneko
67
230k
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
360
Transcript
1 ページ サブ資料⑦:Javaに関する補⾜ Javaプロジェクトにおけるパッケージ名の付け⽅ パッケージ名の命名規則としては、まずインターネットのドメインを反対にした⽅式(会社や組 織のインターネットドメイン名を使⽤する)が⼀般的 https://www.recruit.co.jp/ の場合 jp.co.recruit.[サービス名(プロジェクト名)].[モジュール名]... ※"www"は省くことが多い
その他サービスのドメインを使⽤する場合 Coin+ https://coinplus.jp/ の場合 jp.coinplus.[モジュール名]... リクルートエージェント https://www.r-agent.com/ の場合 com.r-agent.[モジュール名]... 他のプロジェクトのソースコードをライブラリやフレームワークとして参照するような場合、 パッケージ名が他のプロジェクトのパッケージ名と重複するのを避けるため ⼀般的な規則 サービス名のドメインを使⽤する場合 命名規則の理由 JavaBeanとは JavaBeanは、Javaの特定のルールに従って書かれたオブジェクトを指し、 データをカプセル化し、⼀貫性のある⽅法でアクセスするための⽅法を提供する JavaBeanクラスは、以下のルールに従って設計される ・クラスはパブリックであり、引数を持たないデフォルトコンストラクタを持つ必要がある。 ・クラスのフィールド(プロパティ)はプライベートである必要がある ・フィールドにアクセスするための公開されたゲッター(getter)およびセッター(setter)メ ソッドを提供する必要がある。なお、ゲッターは"get"または"is"で始まる命名規則に従い、セッ ターは"set"で始まる命名規則に従う JVMとは JVM(Java Virtual Machine)は、Javaプログラミング⾔語の実⾏環境を提供する仮想マシンで Javaプログラムがコンパイルされたバイトコードを実⾏し、プラットフォームやOSに依存せ ずに動作する
2 ページ アノテーションとは アノテーション(Annotation)は、Javaプログラミング⾔語において、プログラムにメタ データを追加するための仕組みでコンパイラや実⾏時の環境に対して情報を提供し、特定の 動作や処理を実現するために使⽤される。 アノテーションは「@」記号を使って宣⾔し、プログラムの要素(クラス、メソッド、 フィールドなど)に直接付与される。アノテーションはJVMに認識され、コンパイル時や実 ⾏時にその情報を利⽤することができる。 Javaでデフォルトで定義されているものに加えて、カスタムで定義できるため、多くのフ
レームワークでさまざまなアノテーションが作られ、使⽤されている 例: @Bean @Service POJO 【Plain Old Java Object】とは 読み⽅は(ポジョ)。何でもない普通のJavaオブジェクトを意味する⽤語 キャメルケースとスネークケース Javaのコードでは⼀般にキャメルケースが採⽤されるのに対し、MySQLやPostgreSQLなどの 多くのRDBではスネークケースが⽤いられることが多い。そのため、両⽅に変換しても違和 感の無い(なるべく簡潔な)命名が望ましい キャメルケース:fictPay スネークケース:fict_pay 定数の作法 Javaの定数はstatic finalで全て⼤⽂字でアンダースコア(_)で区切って、書く static final String FICT_PAY = "Fict PAY";
3 ページ 可変⻑引数 引数の型の直後に「...」(ピリオド3つ)を付けると、そのメソッドを呼び出す側はその型 の引数をいくつでも書けるようになる。ただし、可変引数は各メソッドにつき1つだけ、そ のメソッドの最後の引数にだけ、指定可能。 Optionalクラス Optionalクラス(java.utilパッケージ)は、nullチェックを簡単化し、NullPointerExceptionの発 ⽣を未然に防ぐためのクラス 例)
例)void func(String... s) {} func("xxxx", "yyyy", "zzzz"); メソッド定義側で型と引数名の間に…を⼊れて書く メソッド呼び出し側は引数を通常通りカンマ区切りで定義する 異なる複数の型の引数を指定したい場合は、最後の引数として可変⻑引数を定義することができる 例)void func(int i, byte b, String... s) {} 可変⻑引の後に別の引数を定義することはできない(コンパイルエラー) 例)void func(String... s, int i ) {} ※コンパイルエラー import java.util.Optional; ...中略... Optional<String> name = hoge.getNameById("A001"); System.out.println(name.orElse("存在しません").trim()); Optional<String>は、nullであるかもしれないStringを意味し、Optional<String>オブジェクトか ら値を取得するには、orElseメソッドを利⽤する。orElseメソッドの引数には値がnullの場合 に採⽤するデフォルト値を指定する(ここでは「存在しません」の⽂字列)。 Optionalを使⽤すると以下のようなnullチェックを省略できる if(name == null) { System.out.println("存在しません"); } else { System.out.println(name.trim()); }