sixty-life

還暦を迎えた今、独学でプログラミング学習をする日々の記録

プログラムに引数を渡す

基礎からのJava 改訂版

Part 02 Chapter 05

プログラムの引数を使って具体的な値は実行時に外から渡す方法

こうすることで値を変えて計算する時、いちいちソースコードを書き換えないでいいので便利。ここではJava標準クラスライブラリのクラスを利用します。

Javaコマンドに引数を渡すには、ターミナルで実行するときに

java <クラス名>  <引数1>  <引数2>・・・

// javaコマンドに引数を渡す

public class Sample {
public static void main(String args) {
System.out.println("args0=" + args[0]);
System.out.println("args1=" + args[1]);
}
}

➜  javac Sample.java

➜  java Sample aaa bbb
args0=aaa
args1=bbb

 

プログラム中で続けて利用するような場合の一例

String s0 = args[0];
String s1 = args[1];
// プログラム中で続けて利用する

public class Sample_b {
public static void main(String args) {
String s0 = args[0];
String s1 = args[1];

System.out.println("s0=" + args[0]);
System.out.println("s1=" + args[1]);
}
}

// この args[数字] というような<変数名>[<数字>]という書き方は
//「配列」というデータ構造の書き方です

➜  java Sample_b aaa bbb
s0=aaa
s1=bbb

続きを読む

鶴亀算(つるかめざん)

<Chapter 04 数字の計算>の章の終わりのまとめの練習問題

問題3(P.64)

 

鶴亀算という算数の計算問題があります。こんな問題です。

鶴と亀が合わせて8匹、足の数が合わせて26本のとき、鶴と亀はそれぞれ何匹いるか?ただし、鶴の足は2本、亀の足は4本である。

この問題は、鶴の数をx、亀の数をy、頭の数をa、足の数をbとすると、次のようんな方程式が作れます。

x + y = a

2x + 4y = b

ここから、鶴と亀の数は次のように計算できます。

で、ここからが問題

次のプログラムは、この鶴亀算を解くプログラムです。次の空欄に入るコードを答えてください。

回答は

① (4 * a - b) / 2

② b / 2 - a

この回答自体は計算式が示されているので難しくはないのですが、

この式で計算できることがわからないので、AI先生に聞いたところ、

と、丁寧に解説してくれました。すごいですね。

ところが、よく見るとテキストの

似ているが、なんか違う...。

結局、この違いは計算の導き方の違いに過ぎず、どちらも間違いではないことがわかりました。

  • 鶴と亀の足の数の合計から亀の足の数の合計を差し引き、残った足の数が鶴の足の数であると考える場合
  • 鶴と亀の足の数の合計から亀の足の数の2倍を引き、残った足の数を2で割ることで鶴の数を直接計算する場合

というわけで、基礎からのJava、数字の計算の章、まとめの鶴亀算の問題でした。

続きを読む

難解な「環境構築」はあとでいい!

確かに、最初のプログラミング学習で最初に大きく立ちはだかる「環境構築」。

多くのチャレンジャーがここで「挫折」してしまうのもよくわかります。

<はやたす|永久保存版 Python入門完全攻略>では超初心者がPythonを実際に体験することが最も大切であると語っています。確かにその通りだと思います。

【永久保存版】Python入門完全攻略 - YouTube

グーグルのアカウントさえあれば Google Colabratory(グーグルコラボ)を使うことで、すぐにPythonが始められるってすごい!

続きを読む

パッケージ宣言って何?

あれ?コンパイルがうまくいかない。

1行目の' Package part2.ope; '

見慣れない記述が自動で挿入された。おそらく拡張機能によるものだと思うが、これまで出てきた記憶はなんだけど。

ま、そのままコンパイルしてみると、

エラー: メイン・クラスSampleを検出およびロードできませんでした

原因: java.lang.NoClassDefFoundError: Sample (wrong name: part2/ope/Sample)

AI:

ChatGPT

このエラーメッセージは、Javaでプログラムを実行しようとした際に発生する典型的な問題を示しています。具体的には、メイン・クラスSampleを検出およびロードできませんでした というメッセージと、java.lang.NoClassDefFoundError: Sample (wrong name: part2/ope/Sample) という原因が示されています。

なので1行目の' Package part2.ope; 'をコメントアウトしてみると問題なく動作しました。

あなたが示した状況から、エラーの原因と解決策が明らかになります。package part2.ope;コメントアウトして正常に実行できたことは、ディレクトリ構造とパッケージ宣言の不一致が問題の原因であったことを示しています。

原因

  • ソースコードpackage part2.ope; という宣言が含まれている場合、JavaSample クラスが part2/ope ディレクトリ内にあることを期待します。つまり、このクラスファイルは part2/ope フォルダ内に存在し、そのフォルダ構造がクラスパスに含まれている必要があります。

実行方法

解決策

あなたがコメントアウトした後にプログラムが正常に動作したのは、パッケージ宣言を除外したことで、JavaSample クラスを現在のディレクトリ(ope)で直接検索し、見つけることができたからです。パッケージ宣言を使用する場合は、適切なディレクトリ構造を確保し、適切な場所からコンパイルと実行を行う必要があります。

親切に教えてくれます。

最初にVS Code拡張機能をよくわからないままインストールしたせいで「パッケージ宣言」が勝手に生成されたようです。

おかげで、「パッケージ宣言」がどういうものか何となくわかりました。

この拡張機能をオフにしようとしたのですが、この中のどれが該当するのかわかりません...。

なんか、いつの間にかこんなたくさんになっています!!

本来、必要なものだけインストールすればいいのだろうけど、どれが自分に必要でどれが必要でないのかハッキリ言ってわからない。

この件は、今すぐは解決しようとしない方がいいと思い(手に負えそうもないので)とりあえずこのままで進んでいこうと思います。

続きを読む

Pythonの初学習に最適なYouTubeチャンネルに出会った!

独学でプログラミングを学んで行くため、情報収集していて巡り会ったのが「はたやす」さんのこの動画です。

www.youtube.com

はたやす公式サイト

 

いや〜素晴らしい!完全初心者でもとてもわかりやすく、一から環境構築を含め丁寧に導いてくれる解説が「神」です!

 

まだ、視聴しはじめたばかりですが、このような動画を作れるってめちゃくちゃすごいな〜と思います。テンポもイイし、ボクのような超初心者に対する気配りもバッチリ行き届いているんですよ。感謝です。

 

Pythonとは...

ライブラリが豊富なスクリプト言語

だから初心者でも理解しやすく色々なことに使える

 

目下、Javaの基礎を独学し始めているところですが、「Python」という言語にも以前からとても興味があり、並行して学習していこうと思います。

「一つの言語をとことん極めて別の言語にチャレンジ」するのが良いとは思っていたのですが、この動画に出会ったら、Python やっぱりほっとけないです!

 

といいうわけで、Pythonも自分の独学の記録として今後綴っていこうと思います。

「class」と「public class」の違いは何?

プログラムの最初の1行目に「class 」から始まる場合と「public class」で始まる場合の違いは何?

AIに尋ねたら...

Javaにおいてclasspublic classの違いは、主にクラスの可視性(アクセス修飾子)に関係しています。ここでの重要な点は、クラスが他のクラスやパッケージからどのようにアクセスされるかということです。

  1. class (デフォルトアクセス修飾子): 修飾子を指定しない場合、クラスはデフォルトのアクセスレベルを持ちます。この場合、そのクラスは自身が定義されているパッケージ内のクラスからのみアクセス可能です。つまり、他のパッケージからはアクセスできません。

    java
    class MyClass { // ... }

    上記の例では、MyClassはデフォルトアクセス修飾子を使用しており、同じパッケージ内の他のクラスからのみアクセス可能です。

  2. public class: public修飾子を使用すると、クラスは公開され、どのパッケージからもアクセス可能になります。これは、ライブラリやフレームワークなど、広範な使用が意図されているクラスにとって重要です。

    java
    public class MyPublicClass { // ... }

    この例では、MyPublicClasspublicとして定義されており、どのパッケージからもアクセスできます。

また、Javaのソースファイルには、publicクラスが含まれている場合、そのファイル名はpublicクラスの名前と一致しなければなりません。たとえば、public class MyPublicClassMyPublicClass.javaという名前のファイルに保存する必要があります。

これらの違いを理解することは、Javaでのパッケージとアクセス制御の基本的な側面を理解する上で重要です。

 

 

なるほど。

じゃ、お決まりの「public static void main(String[] args)」を書く意味は何ですか?

ChatGPT

public static void main(String[] args)Javaプログラムにおける非常に重要な部分で、アプリケーションのエントリーポイント、つまりプログラム実行時に最初に呼ばれるメソッドを表しています。このメソッドの各部分には特定の意味があります:

  1. public: このアクセス修飾子は、メソッドがどこからでもアクセス可能であることを意味します。mainメソッドはJavaランタイムによって呼び出されるため、公開されている必要があります。

  2. static: このキーワードは、メソッドがクラスのインスタンスではなく、クラス自体に属していることを意味します。これにより、オブジェクトを生成せずに直接メソッドを呼び出すことができます。Javaがプログラムを開始する際には、まだどのオブジェクトも存在していないため、mainメソッドはstaticでなければなりません。

  3. void: これは戻り値の型です。voidはメソッドが何も返さないことを意味します。

  4. main: これはメソッドの名前で、Javaランタイムがプログラムを実行する際に探す特定の名前です。

  5. (String[] args): これはメソッドのパラメータです。argsは文字列型の配列で、コマンドライン引数を表します。つまり、プログラム実行時にユーザーが提供する任意の数の引数を受け取ることができます。

要するに、public static void main(String[] args) は、Javaアプリケーションの開始点であり、Javaランタイムによって最初に呼び出されるメソッドです。これがないと、Javaプログラムは実行を開始することができません。

ふ〜ん、そういう意味があるんですね。なんか複雑...。

 

デフォルトのシェル 'zsh' のカスタマイズ

デフォルトのシェルを 'bash' から 'zsh' (Z Shell)に変更したけど、さらにこれには 'oh-my-zsh' というフレームワークがあるらしい。

ChatGPTによると、

oh-my-zshは、zsh(Z Shell)をカスタマイズして使いやすくするための人気のあるフレームワークです。zsh自体が標準のシェル機能に多くの改善と拡張を提供する一方で、oh-my-zshはその機能をさらに拡大し、使い勝手を向上させます。以下はoh-my-zshの主な特徴です:

1.テーマの豊富さ

    • oh-my-zshには200以上の異なるテーマがあります。これらのテーマはプロンプトの外観をカスタマイズし、カラースキーム、プロンプトのレイアウト、表示される情報などを変更できます。
  1. 2.プラグインのサポート

    • 275以上のプラグインがあり、これらを使用すると、git、npm、docker、Pythonなど様々なツールとの連携が容易になります。また、自動補完、シンタックスハイライティング、コマンド履歴の管理などの機能が強化されます。
  2. 3.カスタマイズの容易さ

    • oh-my-zshは非常にカスタマイズが容易です。.zshrc設定ファイルを編集することで、テーマやプラグインの選択、シェルの動作のカスタマイズが行えます。
  3. 4.コミュニティとの連携

    • oh-my-zshオープンソースであり、大きなコミュニティによってサポートされています。これにより、新しいテーマやプラグインが定期的に追加され、ユーザーからのフィードバックや提案が取り入れられます。
  4. 5.インストールとアップデートの簡単さ

    • インストールは一行のコマンドで行え、アップデートも簡単に実行できます。

oh-my-zshを使用することで、コマンドラインの経験が大きく向上し、日々の作業がより効率的で楽しいものになります。プログラマー、システム管理者、コマンドライン愛用者など、多くのユーザーにとって有用なツールです。

だそうです。

そんなにいいものなら使ってみたいと思います。

まず、oh-my-zshをインストールするには、まず、インストールにはcurlまたはwgetが必要なので、これらのどちらかがシステムにインストールされていることを確認することから始めます。

その手順は...

 

oh-my-zshをインストールするには、以下の簡単な手順に従ってください。まず、インストールにはcurlまたはwgetが必要です。これらのどちらかがシステムにインストールされていることを確認してください。その後、以下の手順を実行します:

  1. 1.ターミナルを開く

    • oh-my-zshのインストールはターミナルを通じて行います。Macであれば、Spotlight検索(Command + Space)で「Terminal」と入力して起動できます。
  2. 2.インストールスクリプトを実行する

    • curlを使う場合は、以下のコマンドをターミナルに入力します:
      bash
      sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
    • wgetを使う場合は、以下のコマンドを使用します:
      bash
      sh -c "$(wget -O- https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
  3. 3.インストールプロセスの完了

    • 上記のいずれかのコマンドを実行すると、インストールプロセスが始まります。プロセスが完了すると、zshが自動的にoh-my-zshに設定され、新しいプロンプトが表示されます。
  4. 4.設定ファイル(.zshrc)の編集

    • oh-my-zsh.zshrcファイルを通じてカスタマイズします。テーマを変更したり、プラグインを有効にしたりするには、このファイルを編集します。エディタで.zshrcファイルを開いて編集できます:
      arduino
      open ~/.zshrc
  5. 5.ターミナルの再起動または新しいセッション

    • 変更を有効にするには、ターミナルを再起動するか、新しいセッションを開始します。を開始します。

 

では、実際にやってみます。

Agreeing to the Xcode and Apple SDKs license requires admin privileges, please accept the Xcode license as the root user (e.g. 'sudo xcodebuild -license').

Error: git clone of oh-my-zsh repo failed

エラー発生です。

このエラーメッセージは、XcodeおよびAppleSDKライセンスに同意するために管理者権限が必要であることを示していますまた、oh-my-zshリポジトリgit cloneが失敗したことも示唆しています。

これを解決するには、Xcodeライセンスに同意する必要があるようです。

 

コマンド

sudo xcodebuild -license

入力するとなが〜いライセンス文が表示されます。

最後までスクロールし、

By typing 'agree' you are agreeing to the terms of the software license agreements. Any other response will cancel. [agree, cancel]

訳:

同意する」と入力すると、ソフトウェア使用許諾契約の条項に同意したことになります。それ以外の回答はキャンセルされます。[同意する、キャンセルする]

agreeと入力

agree

You can review the license in Xcode’s About window, or at: /Applications/Xcode.app/Contents/Resources/en.lproj/License.rtf

訳:

Xcodeの[バージョン情報]ウィンドウ、または下記でライセンスを確認することができます: /Applications/Xcode.app/Contents/Resources/ja.lproj/License.rtf

 

次は、Gitがインストールされているかの確認

git --version

Gitのバージョンが表示されました。

git version 2.39.3 (Apple Git-145)

 

Xcodeをインストールしているので、Xcodeコマンドラインツールに含まれるGitを使用することもできるようです。

すでにXcodeはインストール済み(15.0.1)ですが、

Xcodeコマンドラインツールが正しくセットアップされているかを確認する必要があります。以下の手順で確認とセットアップを行ってください

とのことなので コマンドラインツールをインストールしてみます。

xcode-select --install

xcode-select: note: install requested for command line developer tools

--instl

コマンドラインツールのパスを確認

xcode-select -p

/Applications/Xcode.app/Contents/Developer

 

Gitのバージョンを再度確認

git --version

git version 2.39.3 (Apple Git-145)

 

再度、oh-my-zshのインストールを試みる

 

sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

 

 

Cloning Oh My Zsh...

remote: Enumerating objects: 1378, done.

remote: Counting objects: 100% (1378/1378), done.

remote: Compressing objects: 100% (1325/1325), done.

remote: Total 1378 (delta 30), reused 1135 (delta 27), pack-reused 0

Receiving objects: 100% (1378/1378), 3.19 MiB | 9.55 MiB/s, done.

Resolving deltas: 100% (30/30), done.

From https://github.com/ohmyzsh/ohmyzsh

 * [new branch]      master     -> origin/master

branch 'master' set up to track 'origin/master'.

Switched to a new branch 'master'

/Users/00000000

 

Looking for an existing zsh config...

Found /Users/shin2019/.zshrc. Backing up to /Users/00000000/.zshrc.pre-oh-my-zsh

Using the Oh My Zsh template file and adding it to /Users/00000000/.zshrc.

 

         __                                     __   

  ____  / /_     ____ ___  __  __   ____  _____/ /_  

 / __ \/ __ \   / __ `__ \/ / / /  /_  / / ___/ __ \ 

/ /_/ / / / /  / / / / / / /_/ /    / /_(__  ) / / / 

\____/_/ /_/  /_/ /_/ /_/\__, /    /___/____/_/ /_/  

                        /____/                       ....is now installed!

 

 

Before you scream Oh My Zsh! look over the `.zshrc` file to select plugins, themes, and options.

 

• Follow us on Twitter: https://twitter.com/ohmyzsh

• Join our Discord community: https://discord.gg/ohmyzsh

• Get stickers, t-shirts, coffee mugs and more: https://shop.planetargon.com/collections/oh-my-zsh

 

インストール成功!

open ~/.zshrc コマンドを使用してファイルを開き、設定をカスタマイズできます。

最後に、AIからのメッセージ

はい、これでoh-my-zshのインストールは完了です。インストールプロセスが成功裏に終了し、oh-my-zshがあなたのシステムにインストールされました。以下はインストール完了後に行うべきことです:

  1. 1..zshrcファイルを確認する

    • インストールプロセス中に既存の.zshrcファイルが見つかった場合、それは.zshrc.pre-oh-my-zshとしてバックアップされます。新しい.zshrcファイルにはoh-my-zshの設定が含まれています。
    • この.zshrcファイルを編集して、好みのテーマやプラグインを設定できます。ファイルを開くには、ターミナルでopen ~/.zshrcと入力します。
  2.  
  3. 2.テーマとプラグインを選択する

    • oh-my-zshには多数のテーマとプラグインが含まれています。.zshrcファイルを編集して、使用するテーマや有効にしたいプラグインを選択します。
  4.  
  5. 3.変更を適用する

    • .zshrcファイルを編集した後、変更を適用するためにターミナルを再起動するか、source ~/.zshrcコマンドを実行します。
  6.  
  7. 4.リソースをチェックする

    • oh-my-zshTwitterアカウント、Discordコミュニティ、公式グッズショップへのリンクが提供されています。これらのリソースをチェックして、コミュニティに参加したり、追加情報を得たりすることができます。

これでoh-my-zshの基本的なセットアップが完了し、カスタマイズを開始することができます。oh-my-zshは非常にカスタマイズ性が高く、シェルの使用体験を大きく向上させることができます。