- 1. 要素数の取得
- 2. Scanner クラス
- 3. Javaの組合せ最適化ソルバー「Timefold」をさわってみる
- 4. GWT 最初の画面は何か?
- 5. TimeSlotTrackerで作業時間を計測集計する
- 6. 【 Java 】Javaとは/基本文法
- 7. 【はじめてのJava Silver】試験概要や申込方法について解説
- 8. ProcessingでオリジナルClassのソートの方法
- 9. Javaのcloneメソッドとシャローコピー
- 10. JavaでAESWrapアルゴリズムを試してみる
- 11. 日時を扱うクラス
- 12. [Google Sheets API] セルに書式を設定する
- 13. [Google Sheets API] セルにピボットテーブルを設定する
- 14. [Google Sheets API] セルに入力規則を設定する
- 15. [Google Sheets API] セルの内容(値、メモ、リッチテキスト、表示形式(書式)、ピボットテーブル、入力規則)を設定する
- 16. [Google Sheets API] スプレットシートのシートを別のスプレットシートにコピーする
- 17. [Google Sheets API] Google Sheets API v4をJavaで操作する
- 18. ガベージコレクションとは
- 19. GWT+Eclipseでサンプルプロジェクトを動かす
- 20. androidでwebviewを使う
要素数の取得
# .length
配列名や文字列変数名の後ろに.lengthと続けることで該当の配列・文字列の要素数を取得する事が出来ます。この時、半角・全角どちらも同じ1文字として扱われます。
.lengthの表記方法はプログラム内のマジックナンバーを減らす事が出来ます。
Scanner クラス
# Scannerクラス
* キーボードやファイルから入力された情報を取り込む。
* Javaで入力処理を行うクラス。入力処理は、キーボードから入力を行う場合や、ファイルから入力を行う場合などに使う。
* 入力処理は、ユーザーによる任意の情報をjavaのプログラムで扱う場合に必要。## Scannerクラスのメソッド一覧
| メソッド | 用途 |
|:-:|:-:|
| next | 区切り文字までの入力を取得する(デフォルトの区切り文字は空白) |
| nextLine | 改行までの入力を取得する |
| nextInt | 整数の入力を取得する |
| nextDouble | 小数点を含む数値の入力を取得する |
| nextBoolean | 真偽値の入力を取得する |
| useDelimiter | 区切り文字を指定する |
| hasNext | 入力の読み込みが続くか判定する |### next,nextLine,nextInt,nextDoubleの4つを実装してみる
## next()
“`java
ackage text_
Javaの組合せ最適化ソルバー「Timefold」をさわってみる
本記事では、OSSの組合せ最適化ソルバーであるTimefoldを紹介していきます。
## Timefoldとは
Javaで実装されたOSSの組合せ最適化ソルバー(以下、ソルバー)です。
ソルバーとは、組合せ最適化問題を解く目的で利用できるツールのことです。組合せ最適化問題とは、様々な制約の下で多くの選択肢の中から、定義されたスコアによる評価が最も高くなる組合せを求める問題のことです。
巡回セールスマン問題などが広く知られております。Javaで作られたソルバーとしては、Optaplannerなどが有名です。
今回紹介するTimefoldはOptaplannerをforkしたもので、もともとOptaplannerのコミッターであったエンジニアの方々が開発に携わっています。## サンプルアプリ
Timefoldを使って、簡単な組合せ最適化問題を解いていきます。
サンプルアプリのコード全量はGithubにアップしています。https://github.com/Hami1ton/study_or/tree/main/solver/timefold/shift-schedul
GWT 最初の画面は何か?
# GWTの最初の画面はEntryPoint インターフェースを継承したクラス
通常、サンプルの画面から改造していけば、できます。図は新規プロジェクトから、ローカルで立上げまで再現しています。
![GIF 2024-02-17 5-11-18.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132663/e55f2b55-0600-0785-52ae-0e43f6d113b8.gif)
TimeSlotTrackerで作業時間を計測集計する
# 目的
大量の小さいタスクを抱えている。タスクごとの作業時間を把握管理したい。
# 制約
お客様環境で利用したい。
個人契約ウェブアプリ利用や個人購入アプリの持込みは不可。
但し、githubなど禁止されていないサイトからライセンス上問題のないアプリであれば利用可能。
# (参考)いままで
フリーランス時代は、PerlでWebアプリを自作して、まぁまぁ機能していた。(今でも個人タスクでは利用してる)
しかし上記の制約で、お客様環境では利用不可。
現環境では、Excelベースの作業時間表をつくって枠ごとに集計したりしてた。
ただ、タスク増えすぎて限界に達していたのと、単軸ではなく「いろんな切り口」での数字報告を求められるようになった。
さすがに限界に達し、なにか探し始めた、というのが今回の経緯。# 候補さがし
[SourceForge](https://sourceforge.net/)の[Time Tracking Software](https://sourceforge.net/directory/time-tracking/)から、[Window
【 Java 】Javaとは/基本文法
# Javaとは
Javaは、オブジェクト指向プログラミング言語のひとつ。1995年にSun Microsystemsのエンジニアチームによって開発・初公開された。※後にSun Microsystemsは、Oracle Corporationによって買収された。
## 特徴
### オブジェクト指向
クラスとオブジェクトの概念を重視しているため、プログラムのモジュール化、再利用性、保守性が高い。### プラットフォーム
JVM上で実行されるため、ソースコードを再コンパイルせずにさまざまなプラットフォームで動作する。そのため、ポータビリティが高い。### 豊富な標準ライブラリ
豊富な標ライブラリが付属しており、データ構造、入出力、ネットワーキング、GUIなど多くの機能をサポートしている。### セキュリティ
セキュリティを重視しているため、安全なコンピュータプログラムの開発をサポート。Java仮想マシンは、サンドボックス環境を提供し、不正な癖すやメモリの競合を防止。### マルチスレッドサポート
複数のスレッドを同時に実行することができるため、並行処理を行うアプリ
【はじめてのJava Silver】試験概要や申込方法について解説
はじめに
Softbankのテックブログで記事を書いたので紹介します!![JavaSilverサムネイル.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2980561/33684a88-ca9e-7e64-55f5-3a93abb199fd.png)
本記事では私が2023年5月に取得したJava Silver(Oracle Certified Java Programmer, Silver SE 11 )の試験概要と申込方法について紹介しました!
特にJava Silverは申込方法が複雑で、資格の認定機関であるOracle・資格情報を管理するCertview・試験を主催しているピアソンVUEといった3つのサイトを経由して申し込むというわかりにくい構図になっているので、丁寧に解説しました!!### この記事について
– この記事では、Java Silverの試験概要と申込方法を中心に解説しています!
– 申込方法が複雑で困っている方には特におすすめの記事です!ぜひ読んでみてください!
ProcessingでオリジナルClassのソートの方法
# ArrayListを使う
まずは基本になるコードです。ソートの例としては人事データや在庫とかが多いですが、もうちょっと楽しそうなグラフィカルな例にしたいと思います。画面に多数の円を表示するサンプルにします。このような例では配列を使うことが多いですが、配列は事前に使う個数を指定して宣言する必要があります。実現したい内容によっては不便です。ArrayListを使うと可変長にできるので、ArrayListを使います。
次のサンプルではBallというクラスを作成し、クラスの中で位置、ballのサイズを持っています。
setupの中でランダムで座標と円のサイズを決めballList.add()でArrayListに追加していきます。追加した後はballList.size()で個数が確認できるのでforループで簡単に処理することができます。
“`arrayListSample.java
import java.util.Arrays;public class Ball {
float x;
float y;
float r;public Ball(float xPo
Javaのcloneメソッドとシャローコピー
## はじめに
新卒1年目の時、Java Silverの問題集に掲載されていたある問題にかなり悩まされた。その際Javaの仕様とコンピュータのメモリについて勉強できたので、自分なりに記しておく。# 目次
問題設定
前提知識
コピーの方法
解答
感想# 問題設定
**問題:A~Dのコードを実行したとき、`True`になるのはどれか**
“`定義.java
char[][] array1 = {{‘a’, ‘b’}, {‘c’, ‘d’}};
char[][] array2 = array1.clone();
char[] array3 = array1[1].clone();
“`
– **A**:`array1[1] == array3`
– **B**:`array1[1] == array3[1]`
– **C**:`array1[1] == array2[1]`
– **D**:`array1.equals(array2)``clone`メソッドの詳細がよくわからなくても、Bは次元が異なるので不正解(`False`になる)であることがわかる。残りの3つについて以
JavaでAESWrapアルゴリズムを試してみる
今更ながらJavaでAESWrapアルゴリズムを試してみた
“` java
// Java Version
System.out.println(“Java Version: ” + System.getProperty(“java.version”));// キーを初期化(例として16バイトの0で初期化)
byte[] keyBytes = new byte[16];
SecretKey key = new SecretKeySpec(keyBytes, “AES”);// Cipherインスタンスを初期化
Cipher cipher = Cipher.getInstance(“AESWrap”);// アルゴリズムの確認
System.out.println(“Algorithm: ” + cipher.getAlgorithm());// 両方のCipherインスタンスで同じキーを使用して暗号化し、結果を比較
cipher.init(Cipher.WRAP_MODE, key);// テスト用のデー
日時を扱うクラス
# Dateクラス
* 現在日時の取得。
* クラスのなのでDateクラスのオブジェクトを生成する`import java.util.Date;`が必要。
(コレクション作成時も`java.util.ArrayList;`した)
“`java
package text.section_21;import java.util.Date;
public class DateTime_Test1 {
public static void main(String[] args) {
// 現在日時の取得
Date date = new Date();// 出力
System.out.println(date);}
}
“`
実行結果
“`Java
Fri Feb 16 09:32:23 JST 2024
“`
曜日、月、日、時間:分:秒 日本時間 年
上記の順で出力される。# Calenderクラス
* 任意の日時を設定、取得できる。
* クラスのなのでDateクラスのオブジェクトを生成する
* Calendarクラ
[Google Sheets API] セルに書式を設定する
Google Sheets API v4(Java)を使用して、
スプレットシートのセルに書式を設定する場合、設定可能な内容
についてご紹介します。セルの書式はCellFormatクラスで指定できますが、
ここでは指定可能な内容のみを記事にしています。実際に使用したい場合は下記の記事と合わせてご覧ください。
[⧉[Google Sheets API] セルの内容(値、メモ、リッチテキスト、表示形式(書式)、ピボットテーブル、入力規則)を設定する](https://qiita.com/doran/items/d4e048fc41b4132a4b44)|No|目次|
|—|—|
|0|[設定できる内容](#0-設定できる内容)|
|1|[塗りつぶしの色](#1-塗りつぶしの色)|
|2|[枠線](#2-枠線)|
|3|[表示形式 数字](#3-表示形式–数字)|
|4|[表示形式 テキスト](#4-表示形式–テキスト)|
|5|[表示形式 水平方向配置](#5-表示形式–水平方向配置)|
|6|[表示形式 垂直方向配置](#6-表示形式–垂直方向配置)|
[Google Sheets API] セルにピボットテーブルを設定する
Google Sheets API v4(Java)を使用して、
スプレットシートのセルにピボットテーブルを設定する方法
についてご紹介します。**ピボットテーブルとは**
セル内のデータを見たい項目を軸に分析・集計できる表を作成する機能です。ピボットテーブルはPivotTableクラスで指定できますが、
ここでは指定可能な内容のみを記事にしています。実際に使用したい場合は下記の記事と合わせてご覧ください。
[⧉[Google Sheets API] セルの内容(値、メモ、リッチテキスト、表示形式(書式)、ピボットテーブル、入力規則)を設定する](https://qiita.com/doran/items/d4e048fc41b4132a4b44)|No|||目次|
|—|—|—|—|
|1|||[リストの方向の設定](#1-リストの方向の設定)|
|2|||[範囲の設定](#2-範囲の設定)|
|3|||[行、列の設定](#3-行列の設定)|
||1||[グループルールの設定](#31-グループルールの設定)|
||1|1|[DateTimeルール](
[Google Sheets API] セルに入力規則を設定する
Google Sheets API v4(Java)を使用して、
スプレットシートのセルに入力規則を設定する場合、設定可能な内容
についてご紹介します。**セルの入力規則とは**
セルに入力するデータを制限したり、設定したルールとは違う入力をしたときに
警告を表示したりできる機能です。セルの入力規制はDataValidationRuleクラスで指定できますが、
ここでは指定可能な内容のみを記事にしています。実際に使用したい場合は下記の記事と合わせてご覧ください。
[⧉[Google Sheets API] セルの内容(値、メモ、リッチテキスト、表示形式(書式)、ピボットテーブル、入力規則)を設定する](https://qiita.com/doran/items/d4e048fc41b4132a4b44)|No|目次|
|—|—|
|1|[選択したセルのヘルプオプションを表示](#1-選択したセルのヘルプオプションを表示)|
|2|[データが無効の場合の挙動](#2-データが無効の場合の挙動)|
|3|[表示スタイル(プルダウンのみ)](#3-表示スタイルプルダウ
[Google Sheets API] セルの内容(値、メモ、リッチテキスト、表示形式(書式)、ピボットテーブル、入力規則)を設定する
Google Sheets API v4(Java)を使用して、
スプレットシートのセルに内容を設定する方法
についてご紹介します。セルに内容を設定します。設定できる内容は下記になります。
・値
・メモ
・リッチテキスト
・表示形式(書式)
・ピボットテーブル
・入力規則コードを実行する際は、
[⧉[Google Sheets API] Google Sheets API v4をJavaで操作する](https://qiita.com/doran/items/3d43f776188b2281044c)
を参照ください。
“`
例:requests.add(moveDimension(sheetId)); //実行したいリクエストのMethodを指定
“`
|No||目次|
|—|—|—|
|1||[指定したセルに設定](#1-指定したセルに設定)|
||1|[値 を設定する場合](#11-値-を設定する場合)|
||2|[メモ を設定する場合](#12-メモ-を設定する場合)|
||3|[リッチテキスト を設定する場合](#13-リッチテキスト-を設定する場合)
[Google Sheets API] スプレットシートのシートを別のスプレットシートにコピーする
Google Sheets API v4(Java)を使用して、
スプレットシートのシートを別のスプレットシートにコピーする方法
についてご紹介します。コードを実行する準備は、
[⧉[Google Sheets API] Google Sheets API v4をJavaで操作する](https://qiita.com/doran/items/3d43f776188b2281044c)
を参照ください。**サンプル コード**
コピー元のスプレットシートIDとシートIDを指定して、
コピー先のスプレットシートにコピーします。**実行**
“`
public static void main(String[] args) throws Exception {
String fileId = “”; //コピー元のスプレットシートID
Integer sheetId = 0; //コピー元のシートID”;
String destFileId = “”; //コピー先のスプレットシートID//コピー先のスプレットシートIDを設定
[Google Sheets API] Google Sheets API v4をJavaで操作する
Google Sheets API V4を使用してJavaでスプレットシートを操作する方法を
ご紹介します。
APIの呼び出しは、Googleのサービスアカウントを作成して実行します。***Google Sheets APIとは***
Googleが提供しているAPIで、スプレットシートを操作することを目的としています。
無料で使用できます。
1分単位の制限をクリアしていれば1日の使用量の制限もありません。読み取り・書き込みリクエスト制限
・プロジェクトごと、300回/分
・プロジェクトごと、ユーザーごと、60回/分|No||目次|
|—|—|—|
|1||[Google Sheets APIを使用するための準備](#1-google-sheets-apiを使用するための準備)|
||1|[プロジェクトの作成](#11-プロジェクトの作成)|
||2|[Google Sheets APIの設定](#12-google-sheets-apiの設定)|
||3|[Googleサービスアカウントの作成](#13-googleサービスアカウントの作成)|
||4|[
ガベージコレクションとは
Javaにはガベージコレクションがあります。
ブロックの終了と共に変数は消滅しますが、newなどで確保されたデータはブロックが終了してもメモリに残る場合があります。
ガベージコレクションはそのような参照されないのにメモリに残っているデータを自動的に削除してくれます。
GWT+Eclipseでサンプルプロジェクトを動かす
# GWTはEclipseプラグインがありプロジェクト作成時にサンプルが提供されます
・メチャ簡単
・サーバ不要
・デプロイしなくても動かして確認できる
![GIF 2024-02-16 5-59-33.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132663/25744016-7a66-63bf-dd9c-c87066fbba8e.gif)
androidでwebviewを使う
# はじめに
業務でWebViewを用いたアプリ開発に携わっており、ネイティブ側の仕組みを理解したかったので実際に触ってみました。## WebViewとは
スマホアプリを開発する際に、「ネイティブ開発」と「WebView開発」の2つを耳にしたことがあると思います。
ネイティブ開発であれば、Android OS向けのJavaやKotlin、iOS向けのSwiftなどの言語を用いて開発を行います。
対してwbviewは、HTMLやJavaScriptなどWeb開発用の言語を用いて開発を行います。### メリット
WebViewを使用するメリットとしては、以下を上げることができます。
* 開発/運用コストを減らす
* リリースサイクルを短縮化できるAndroidとiOSの両方に対応するアプリを全てネイティブ開発する場合、中身は同じアプリでも複数の言語を用いて開発を行う必要がでてきます。
もちろん保守する際も、2倍の労力がことになります。その点、WebViewを用いることで、各OSに依存しない開発を行うことができます。
また、ネイティブ側のアプリリリースを行う際、「Go