hpprc/jawiki-books huggingface dataset:
Visual Basic for Applications/基本的な文法

まず、LibreOffice でもマクロを立ち上げた時点では、コードには、下記のように書いてある。(Excel の場合、1行目の「REM ***** BASIC *****」が無い場合もあるが、あとは初期状態は同じである。)
なお、2023年の時点での新しいexcel(office 2021準拠)には、rem文などは書いておらず、空白であった。
だが、windowsの office2021用 EXCEL でも引き続き REM を使えるので、初期状態のちがいは気にしなくていい。

とりあえず、初心者プログラマーは通常、行「Sub Main」から行「End Sub」のあいだに、追加したい処理を記述すればいい。
「End Sub」はプログラムの終了を意味するので、この後ろに命令を記述する必要は無い。それどころか、「End Sub」以降にコードを書くと、基本的にエラーになる。
では、とりあえず「 Hello, World! 」と文章を表示するプログラムを書いてみよう。office 2021 excel でも libreoffice でも、下記コードは実行できる。

とは、新規の専用のメッセージウィンドウを表示し、そのウィンドウにコードで指定した、表示したい文字列が書かれる命令のことである。Visual Basic にも同様の命令がある。
MsgBox("Hello, World!")の左のスペースは、必ず半角英数スペースのこと。全角だとエラーになる。
VBAにかぎらず、一般的なプログラミング言語では、引用符 " " の内部以外で、コード中に全角を使うとエラーになる。

さて、上記のコードを書いただけでは、まだ何も実行しない。一般にプログラミング言語では、コードを書いただけでは、まだ何も実行されない。別途、実行命令をコンピュータに与える必要がある。
マクロBasicの行動を実行するには、マクロ編集画面のウィンドウ内から実行(run)命令をする必要がある。
再生ボタン ▶ みたいな右向きの三角形ボタンがあるバージョンなら、それがマクロの実行コマンドなので、それを押せばマクロが実行される。
ファンクションの F5 キーでも、マクロを実行できる。

LibreOFfcieの場合、ウィンドウ内のメニューバーにある「実行」メニューから、
をクリックすれば、上記コマンドを実行できる。Windows版でもLinux版でも、操作は同じである。

Apache OpenOffice の場合、サポート状況が悪いので、そのままの設定では動作しない。
設定が完了したと仮定して説明と、Linux における Apache OpenOffice の場合、
メニューバーの2段下あたりにあるアイコンをよく見ると、再生ボタン(右向きの緑色のヤツ ▷ )みたいなのがあるので、それを押すと、実行できる。
あるいはキーボードの「F5」ファンクションキーを押しても実行できる。
さて、メッセージボックスでは英語だけでなく、日本語なども同様に表示できる。例えば、下記のようにMsgBox(" ") の中の文字列を単に日本語にするだけで、日本語の表示が出来る。
MsgBox のその他の機能は WindowsのVisual Basic にある同等の機能に準じたものなので、本ページではMsgBoxについてはこれ以上は深入りしない。
REM は、プログラミング用語で一般的に「コメント」というもので、REMのある行の行末までの実行を無視します。このため、REMの行には、メモ書きなどを書くことができます。REMのある行だけなら、日本語の使用もOKです。
MsgBpx について、他人が一目見てコードの構造を把握しやすいように、上述のコードでは字下げ(「インデント」ともいう)をしてあります。
※ 再掲
実は、字下げはしなくても、コードが実行可能です。
つまり、
でも、同じ結果が得られます。
つまり、マクロBasicでは、BASIC系の言語を仕様するモードでの利用である限りは、字下げの有無によって結果は変わりません。
しかし、字下げをしないと、コードが長くなってきた時に、第三者が読みづらくなるので、なるべく字下げをするのが、プログラミング一般のマナーとして好ましいとされます。
会社などで仕事をする際は、あなただけでなく、あなたの後輩なども、あなたの書いたコードを読むので、第三者が読みやすいようにコードを書くことが望ましいとされます。
プログラミング一般のマナーについては、当wikiには他に専用のページがいくつかあるので、本ページではこれ以上は深入りしません。

一般のexcel の保存コマンドと同様に保存すればいい。
手順そのものは
または
である。
そもそも、その一般のexcelの保存の手順は、最近(2023年に確認)のexcel2021は下記の画像のようになっている。
ショートカットキーなどを使わない場合、面倒かもしれないが、毎回、「ファイル」で、この緑色のサイドバーが左にある状態にしてから、保存する。
保存ファイルにつける「ファイル名」の入力および「ファイルの種類」の選択のさい、
ファイルの種類を選択し、「マクロ有効ブック」(拡張子 .xlsm)にしてから「保存」をクリックすれば、保存できる。(なお、一般のブック(拡張子 .xlsx )ではvbaマクロを保存できない。)
Visual Basic for Applications/シートからの読み書き

※ エクセルのシートの見方については、後半で付録として別記。本書では、すでにシートの読み方を知っていることを前提に説明を始める。
では、まずマクロの練習用に、数値データを下記のように(マクロ側ではなく)excel・calc本体のシートに入れよう。
次に、このシートを読み取りましょう。当然ですが、読めない問題を計算することは人間もコンピュータも不可能です。
Microsoft Excel の場合、シートの読み取りのために、Cells(行番号, 列番号).Value を使います。ただしExcel では、左上のセルA1を、(1行目、1列目) だとして位置を数えることに注意してください。
LibreOffice および OpenOffice の場合、シートの読み取りのために、下記コードのようにThisComponent.Sheets(シート番号).getCellByPosition(列番号, 行番号).Value を使います。Office の場合、左上A1セルを(0,0) としており、また (列,行) の順番です。(※ Microsoft Excel とは、関数名および位置の数え方が違います。)
また、読み取った値を格納するために、変数を定義します。ここは Excel も LibreOffice なども基本的に同じです。どちらも
で定義できます。整数の型(「整数型」という)を定義する必要がありますので、整数型を意味する Integer (なおインテジャーと読む)で下記のように定義します。

新規ダイアログウィンドウに「
」と表示される。
それをOKすると、次に別の新規ウィンドウが現れ、「
」と表示される。

シート番号は、LibreOfficeを立ち上げた初期のままの状態では「0」です。
(列番号, 行番号)という順序については、これは数学のx-y座標の (x, y) という並びと同じだと考えてください。
「列」も x軸 も、横の並びです。
「行」も y軸 も、縦の並びです。
シート側では行は1を起点に数え始めますが、しかしLibreOfice マクロのコード側では0を起点に数え始めます。
また、列「A」は、y座表の「0」に相当します。要するにLibreOffice では一番左上のシートは (0, 0) です。
新規ダイアログウィンドウに「
」と表示される。
それをOKすると、次に別の新規ウィンドウが現れ、「
」と表示される。

x = Cells(1, 2).Value のようにCells 以下を右辺にすれば、それは読み取りです。
一般的に、プログラミングにおいて イコール記号 = の意味は、「代入」(だいにゅう)という意味です。
イコール記号「 = 」は、 「右辺の計算結果の値を、左辺に代入しろ」という意味です。
「Value」とは「値」という意味の英単語です。
「Cells(1, 2).Value」の意味は、「1行2列目のセル(B1) に格納されている値」という意味です。
上記のような読み取り加算の処理をしたい場合、「Cells」 や「Value」の部分は、この名前でないと、いけません。
ただし、小文字で「cells」や「value」と入力しても動作しますが、Excel VBA のエディタが自動的に「Cells」や「Value」の表記に修正します。
シートからの読み込みでは、
のようにThisComponentが右辺に来ました。
シートへの書き込みは、単に
のように、ThisComponentを左辺にするだけで可能です。
これを実行して、ダイアログ「A3 (0, 2) の値は 8」が表示されたのを確認してOKした後、シート側を見に行ってください。
A3の位置のセルに、加算の結果の数値「8」が書き込みされているはずです。
エクセルなどは、入力値が数値データか文字列データかを区別する。読み取りの際、
これから計算の読み書きに使いたいセルが文字列データとして判定されてしまっていると、マクロ操作の失敗の原因になる。
文字列データに判定されたセルを数値データにするには、
LibreOffice での読み書きのセル位置の指定の方法は、getCellByPosition 以外の方法もあります。
たとえば getCellRangeByName( ) を使うと、セル名("A1"とか"A2"とかのこと)で読み書きの位置指定ができます。
ByPosition ではなく RangeByName に変わっていることに注意してください。
セル名と言っても、別にmyFavoriteCellとかの命名はできないので、誤解なきよう。

変数の宣言では、下記のように、カンマ( , )で区切ることで、まとめて宣言することも可能です。
Excel
確認のため、B3のセル値「34」を消して空白にしておき(B1 = 14 と B2 = 20 はそのまま)、上記コードを実行してみましょう。
LibreOffice
確認のため、A3のセル値「8」を消して空白にしておき(A1 = 5 と A2 = 3 はそのまま)、上記コードを実行してみましょう。
8がまたA3に書き込みされているはずです。
さらに、
と短くまとめる事も可能です。(結果の紹介は省略する。)
※ 知っていれば、下記は読む必要なし。
さて、表計算ソフト中のシートと、VBAのコードとの、データの読み書きを勉強しよう。これが出来ないとVBAを使い意味が無い。(もし単にWindowsでVisual Studioを使わずにプログラミングしたいだけなら、PowerShell という別の機能がある。)
ともかく、表計算ソフトとVBAによる読み書き話をする。
まず、エクセルの画面は一般に下記のように、行と列に番号がついている。
「行」とは、A,B,C、・・・ のように横の並びである。漢字の「行」の右上の部分が横2本の棒になっているので、関連付けて覚えよう。
「列」とは、1,2,3,・・・ のように、縦の並びである。漢字の列の右側が、縦2本の棒になっているので、関連づけて覚えよう。
エクセルの復習になるが、
のように、それぞれのセルの位置は、行と列の組み合わせで指定される。
Pythonマクロ

予備知識として Visual Basic for Applications/シートからの読み書き があることを前提とする。つまり、VBAまたはLibreOffice Basicの操作が一通りできることを前提とする。
LibreOffice は、現状(2022年に確認)、Pythonマクロを作成できる。
一方、Microsoft Excel では現状(2023年8月)ではPythonマクロは不可能である。よって、Excel との互換性を重視するなら、Pythonマクロは控えるべきである。また、マクロ独自の命令があるので、独自命令の部分には当然ながら一般のPythonインタプリタとの互換性は無いはずである。
なお、2023年8月現在、Microsoft社が将来的にExcelでPython関数を使える新機能を宣言したが、ただしこれは現状ではマクロではなくワークシート関数である。またなお、現状ではクラウド上に限定された microsoft365 系の環境での実行のようである(名称を見るかぎり、「365」などの字句が入っているので。詳細は不明)。
LibreOfficeにPythonマクロ を編集するエディタは無い。つまり、VBAのようにcalc内のアプリで編集する機能は無い。
なので、外部のテキストエディタなどでマクロ用のPythonファイルを編集する。
マクロ用といえどもPythonファイルなので、ファイル名には拡張子「.py」をつける事になる。
詳しくは Libreoffice 公式サイト Pythonスクリプトの管理(2022年6月11日に確認.) にある。
Windowsの場合、まず、
\AppData\Roaming\LibreOffice\4\user
を探す。
そのあと、構成が
\AppData\Roaming\LibreOffice\4\user\Scripts\python
となるように、フォルダ Scripts および フォルダ python を自作する。
これは、こうと仕様が決まっている。
なお、フォルダ「4」は、単にLibreOfficeがバージョン4台になったときに仕様が大きく変更されて、その系統が2022年の今でも続いているので、「4」という名前なだけである。なお、2022年のLibreOfficeはバージョン7台である。
今後のマクロファイル書き換えの際にアクセスしやすくため、ショートカットを作っておこう。
読み取りたいセルに事前に値を入れておく。
下記コード例では、A1とA2を読み取って加算するので、そこに数値を入れておく。
たとえばFedora36の場合、
という構成になるように、フォルダ Scrits と フォルダpython をそれぞれの位置に作る。
隠しフォルダ .config を表示するには、単にファイルブラウザ上のホームフォルダで、右上にあるメニューボタン(ハンバーガー杖の形状なのでハンバーガーメニューという)から、「隠しファイルを表示」にチェックを入れればいい。
そのあと、Linuxのショートカット(Linux用語では「シンボリックリンク」という)は下記コマンドで作れる。
ln -s /home/ユーザー名/.config/libreoffice/4/user/Scripts
なお、既存の「\libreoffice」ディレクトリや \user ディレクトリへのショートカットをつくろうとしても、失敗し、コマンドライン上に「作成に失敗しました: ファイルが存在します」と表示される。
どうやら「\libreoffice」などの実態がショートカットのようである。

そのあと、下記コードを書いたpythonファイル(拡張子.py)を、Windowsの場合なら作成しておいた \AppData\Roaming\LibreOffice\4\user\Scripts\python にある pythonフォルダに入れる(pythonという名前のフォルダは1個のみ)。
Linuxの場合なら同様に、 /.config/libreoffice/4/user/Scripts/python にあるpythonフォルダに下記コードを入れる(pythonという名前のフォルダは1個のみ)。

Libreoffice では上記コードのように uno というパッケージをインポートすることで、Pythonマクロが使える。
uno を指定しているのは、別にwiki編集者の好みではなく、windowsの場合、windowsにインストールしたLibreofficeのフォルダ構成を調べると既に uno という名前のフォルダがある。このように、Libreoffice では uno が指定されている。
同様にLinuxでも、すでに /.config/libreoffice/4/user/uno_packages がインストール時点で存在している。
さて、ネット検索でpythonマクロの uno について調べる際は PyUNO などの名前で調べると区別しやすい。
さて、上記のフォルダに上記ファイルを入れると、Libreoffice Calc での
ツール > マクロ > マクロの管理
の操作により現れるウィンドウ「マクロセレクター」で、アクセスできる。
画面左下「ライブラリ」のマイマクロをクリックして展開すると、
右側「マクロ名」にコード中の関数名「my_first_macro_calc」が表示される。
コードにエラーがある場合は表示されないので、コードを修正する。
セルA3 に セルA1とセルA2の和が表示されていれば成功である。
マクロ独自の部分の解説だけをする。
再掲
関数名(my_first_macro_calcの部分)は、キーワード・組込み関数・組込みクラスと衝突しなければ、有効な識別名なら何でもよく、上記コード例では、慣用的によく使われる関数名をつけておいた。
XSCRIPTCONTEXT.getDocument() は、Pythonマクロ関数の最初に書き、これは呼び出したシートと当Pythonファイルとのアクセスの命令である。
これを、doc = XSCRIPTCONTEXT.getDocument() のように任意の変数に代入する。別に doc でなくとも aaaa とか何でも良いのだが、わざわざ分かりづらい変数名をつける必要も無いので、慣用的によく使われる変数名 doc などをつけると良いだろう。
セルの値を読み取る際、Visual Basicのように変数をdimなどで宣言する必要は無い。そもそもPythonの文法では、変数を宣言しない。
doc.Sheets[0]['A1'].Value
のように、プロパティにより、読み取らせるセルの指定(.Sheets[0]['A1'])と、値を読み取らせることの指定(.Value)をする。
再掲になるが、Sheets や Value は大文字と小文字を区別するので、必ずこの表記の通りに入力すること。
Valueプロパティの代わりに、メソッド的なgetValue()関数 および setValue()関数 を用いてもいい。
getValue()はセルを読み取る関数(メソッド)である。
setValue()はセルに書き込む関数(メソッド)である。
大文字と小文字を区別するので、この通りにコードを書かないといけない。
C Sharp/インストール方法

いくつかの方法がある。
これらをインストールすれば、基本的にC#の実行環境はついてくるはずである。
2020年11月、マイクロソフトは.NET 5.0をリリースした。Windows専用製品の .NET Frameworkとの混同を避けるため、「Core」ブランドは削除され、バージョン4.0はスキップされた。 本ページでは区別のため「.NET Core」と呼ぶことにする。
なお、.NET Core のほうが新しく、将来的にマイクロソフトは .NET Core に一本化する予定なので、最新版のC#を使いたければ .NET Core を選ぶと良い。
C#8 以降は、.NET Core になる。
.NET Framework はバージョンが .NET Framework 4.8で打ち止めであり、これはC#7.3台までしか対応していない。いちおう、2029年くらいまでは.NET Framework の新しめのバージョンのどれかがサポート予定である。
Visual Studioにインストールする場合、Visual Studio 2002にインストールするのと Visual Studio 2019にインストールするのとでは別々のインストールとして扱われるので注意。つまり、もし2つのバージョンのVisual Studio を使っているなら、2つのVisual Studio のバージョンで使えるようにするには、インストールに必要な容量は約2倍になる。
ダウンロードの仕方およびインストール先も、公式サイトから個別にダウンロードするのか、それともマイクロソフトの統合開発環境 Visual Studio から上記のものをインストールするのか、方法が分かれる。
なお、Visual Studio の利用にはアカウント登録が必要。
Visual Studio の起動には時間が掛かるし、もしインストールしていなければインストールに長い時間が掛かるので、単にC#をコマンドラインで勉強するだけなら、.NET Core を公式サイトからダウンロードするほうが早い。
Visual Studio のアカウント登録をしなくても、テキストエディタから. net core を起動してビルドする方法もある。
インストールの確認まで
.NET Coreとコマンドラインによる方法でも、いわゆる「プロジェクト」的な関連ファイルが多く自動的に作られる。
なので、コマンドラインから実行する場合は、まずプロジェクト用のフォルダを作成しないとマズい。でないと、デスクトップなりホームフォルダなどに、関連ファイルが大量に作成され、管理が面倒になる。(というか、作り直し)プロジェクト用のフォルダの作成自体は、マウスで普通に作成して大丈夫である。sampleとかtestとか気軽に命名したフォルダ名で構わない。
コマンド
で作成してもいい。
とりあえず、「test」という名前のフォルダを作成したとしよう。
C#9以降だと、Program.cs は下記のような短いコードになっている。これでもビルドすれば実行できる。
以上の準備がすべて成功すれば、
と表示される。
従来はWindows用のGUIアプリを作るのは非常に困難ないし不可能と考えられていましたが、2019年にリリースされた .NET Core 3がWindows Forms、WPF、UWPをサポートされ道がひらけました。
また、mono というオープンソース版の.NetFramewark 利用環境があり、C#プログラムも実行できます。
.net core のSDKについても、 dotnet-sdk-バージョン番号 が公開されている。
mono 開発環境のインストール方法は Fedora Linux の場合、コマンド
でインストールされます。
作成したプログラムのソースコードには、拡張子はウィンドウズ同様、「.cs」をつけます。
コンパイルは、コマンド
でコンパイルできます。
すると
の形式のファイルが作成されるので (Linuxでも、拡張子.exeのファイルが作成されます)、
で実行できます。
終了するにはリターンキー(エンターキー)を押す。
なお、monoがサポートして実行できるC#の言語仕様のバージョンは、C#7台までの対応であり、やや古めのバージョンです。monoが準拠している.net Framework 自体、対応するC#がC# 7.3 くらいまでのバージョンだと一般に言われています(マイクロソフトが詳細なバージョンを公表してないので正確な対応バージョンは不明)。
C#8 以降の新しいC#を使うには、 .net core をインストールしましょう。
マイクロソフトの公式サイトに、Fedora の場合のインストール方法がずばり書いてあるので参照せよ『Fedora に .NET SDK または .NET ランタイムをインストールする』 2022/04/06 (なお、リンク先は機械翻訳)。
念のためコマンドを控えておくと、
である。
末尾の数字は必要。数字がないと、dnf検索でヒットしない。
C Sharp/変数

C#における変数の宣言にはいくつかの方法があります。主な方法としては以下の通りです:
これらの方法を組み合わせて、C#で様々な型の変数を宣言することができます。 それぞれの方法には使いどころがありますので、状況に応じて最適なものを選択することが重要です。
変数の型の種類については、詳しくはMicrsoft Doc の公式サイトにあります。
変数の型のうち、初心者がよく使いそうなものをあげると、
数値の型には、
があります。
『浮動小数点数値型 (C# リファレンス)』2022/04/06
float と double の違いは、有効桁数です。 double のほうが桁数が多いのでリッチです。
decimal は、精度を重視した小数点型です。結果的にdecimal の有効桁数もfloat やdouble よりも多いですが(Microsoft Doc 公式より)、それは派生的な結果です。
文字列の型には、主に
文字列型 string
があります。
下記にコード例を示す。
上記のように、string型の変数は、二重引用符 " で囲まれた文字列をあつかう。
文字表示などの際には、単に Console.WriteLine(変数名); とすればいいだけである。
writeLineにおける文字列と数値変数との連結の方法については、別のページで紹介しているので、そちらを参照せよ。ネット検索などを探す場合は「フォーマット指定」などの語句で探せば見つかるだろう。

C#に於いて等号=は「代入(だいにゅう)」の意味であり、「右辺のものを左辺に代入せよ」の意味です。
なので、たとえばa = a + 1のようなものも可能です。たとえばaの初期値が4なら、「4を+1した結果である5を、aに代入しろ」という意味です。
コード例
C# にかぎらず、プログラミング一般では、整数型に対する算術演算子は、下記のとおりです。
+ は 足し算(加算)
- は 引き算(減算)
* は 掛け算(積)
/ は 割り算の商
% は 割り算の余り
なお、文字列に対しては、演算子の結果が違ってきます。上記の説明はあくまで整数変数の場合です。
コード例
C Sharp/条件分岐

C#において if 文は、他のCファミリーのプログラミング言語と同様の構文を持っていますが、重要な違いの1つは条件式が必ず bool 型である点です。条件式は真偽値を評価し、条件を満たすかどうかを判定するため、必ず真偽値を返す式でなければなりません。これはC#における if 文の特性の一部であり、条件式の結果が真か偽かを明確にするために bool 型が必須とされています。
C#の switch 文は、他のCファミリーの言語と似たような構文を持っていますが、整数だけでなく文字列などの式を使うこともできます。これにより、さまざまな条件に基づいて処理を分岐させることができます。
C# 8 で、switch式が追加されました。
初期化済みの辞書を使用して同じ機能を実装してみましょう。
このコードでは、Dictionaryを使用して季節とそれに対応する英語名を格納し、TryGetValueメソッドを使用して選択された季節の英語名を取得しています。
switch 式やswitch文と、enumを組合わせると、enumの定義するメンバーを網羅いていることの検証「網羅性の担保」が可能になります。
高等学校福祉 社会福祉基礎

社会福祉は社会福祉制度や社会福祉の歴史、コニュニケーション、地域福祉を学んでいく科目です。 この科目を、教科書として発行されているのは実教出版株式会社だけです。
本章は、最後のセーフティー・ネットとして貧困を救済する生活保護制度の仕組み、現状と課題、近年の政府の取り組みなどを説明します。
Scala

Scalaは、静的型付けのオブジェクト指向プログラミング言語であり、関数型プログラミングの機能も備えています。Scalaは、Java仮想マシン(JVM)上で動作するため、Javaのライブラリとの互換性があります。また、Scalaは、Javaに比べてシンプルな構文を持ち、プログラミングの生産性を高めることができます。
本書では、Scalaの基本的な構文や概念、そしてよく使われるライブラリやフレームワークについて学ぶことができます。具体的には、以下の内容が含まれます。
本書を読むことで、Scalaの基本的な構文やオブジェクト指向プログラミング、関数型プログラミングの概念を理解し、実際にライブラリやフレームワークを使ってアプリケーションを開発することができるようになるでしょう。また、Scalaの特徴や利点を理解し、Javaに比べた生産性の向上を体感することができます。
他の多くのチュートリアルがそうであるように、私たちもまずはScalaの世界にあいさつすることから始めましょう。 hello.scalaというファイルを作り(Scalaではソースファイルに.scalaという拡張子を付けることが通例となっています)、次のように書いて保存して下さい。
Scalaのコメントの構文は2つあります
Scalaでは、JavaScriptやGoの様に ; が自動挿入されます。
❌
⭕
Scalaは、関数型プログラミング言語ですが、純粋関数言語ではないので変数があります。
Scalaで変数を使うためには、宣言が必要です。
変数宣言にもパターンマッチングが使えます。
lazy var は出来ません。
先の例では、変数を型を指定して宣言していました。 Scalaには、型推論機構があるので、初期値が与えられる変数宣言では初期値から変数の型が推論され型名を明示する必要はなくなります。
Javaの数値はオブジェクトではなくプリミティブ型ですが、Scalaでは数値もオブジェクトです。 また型名にも違いがあるので、対照表にしてみました。
Scalaでは、カーリーブラケット構文を使ってブロックを表します。 ブロックの最後の式の値が、ブロックの値になります。
Scalaでは、「0個以上のパラメータを受取ることの出来る式」を関数と呼びます。 他の言語では、アロー関数やラムダ式と呼ばれる概念です。
パイプラインスタイルは、JavaScriptなどでよく使うメソッドチェインですが、イテレータメソッドが演算子の様に見える書き方です。
for と Range と ifの例をパイプラインスタイルで置換えてみます。
関数合成ではないので、(0 to 10) filter { _ % 2 != 0 } が先に評価され、そのオブジェクトに .foreach({ println(_) }) が提供されるので、場合によっては要素数の多いコレクション・オブジェクトが中間結果として生成されるので注意してください。
メソッドは、コードを再利用する仕組みで、関数と似ていますが、両者は別個のものです。 メソッドはclass、object、trait内でキーワードdefを使って定義します。
これまで、頻繁に使ってきた println() も、Predefオブジェクトのメソッドで、Predefオブジェクトは暗黙に import されるので特別な準備なく使えました。
Scalaでは、メソッドや関数の引数は値渡しですが、遅延評価にすることが出来ます。 これによって、制御構造を関数定義する道が開きます。
メインメソッドは、プログラムのエントリーポイントです。
Scalaも、多くのプログラミング言語と同じく、「逐次」「分岐」「反復」の 3 種類の制御構造を持ちます。 Scalaの制御構造は、全て値を持ちます。この事は、Scalaの If式 は、C言語の三項演算子と等価であることを示します。
Scala 3 では、括弧() を使わない新しい構文が追加されました。 新構文の登場で、旧構文が使えなくなることはないので、Scala 2の為に書かれたプログラムが使えなくなるような事はありません。
if式は、条件式に基づいて分岐し分岐先の式を評価します。 if式の値は、分岐先の式の値です。
C言語のswicth文は、式と一致するリテラルのラベルへの多方向GOTO文ですが、Scalaのmatch式はパターンマッチングに基づいています。
while式は、条件式が true の間、式を評価しつづけます。 while式の値は、評価した式の値です。
Scala 3 で、do - while は廃止になりました。 while の条件式に繰返し部分と続行条件を書き、ループ本体は空にすることで do - while を模倣できます。
Scalaのfor式は、ジェネレータに対してイテレーションを行います。
ジェネレータに、if で修飾することができます(Guardといいます)。Pythonのジェネレータ式に似た表現です。
2つのジェネレーターを ; で区切ると多重ループを構成出来ます。
for式と yeild の組合せでfor式は値を返すことが出来ます。
ブロックからの脱出には、return を使います。 break や continue はありません。
ScalaにはJavaのthrows節がありません。 すべての例外はメソッドの外側に投げることができます。
Scalaは、関数型プログラミング言語であると同時に、オブジェクト指向プログラミング言語です。 より厳密に言うと、(プロトタイプベースではなく)クラスベースのオブジェクト指向プログラミング言語です。 クラス(class)は、オブジェクトを作る雛形で、クラスから new 演算子を使ってオブジェクトを作ることをインスタンス化、出来たオブジェクトの事をインスタンスと呼びます。
Ruby#ユーザー定義クラスの都市間の大圏距離を求めるメソッドを追加した例を、Scalaに移植。
object は、たった1つのインスタンスを持つクラス(=シングルトン)です。 これは、lazy valのように、参照されたときに(遅延して)生成されます。
object は、トップレベルの値としてはシングルトンであり、 クラスのメンバやローカルな値としては、lazy val と全く同じ振る舞いをします。
シングルトン・オブジェクトは値です。シングルトン・オブジェクトの定義はクラスのように見えますが、object というキーワードを使用します。
シンプルなシングルトン
トレイト(trait)は、Javaのインターフェースと抽象クラスの中間的な存在です。 実装を持ったインターフェースで、コンストラクタのパラメータを持つことができませんが、ミックスイン( mix-in )することが出来ます。
高等学校公共

高等学校「公民」の科目の一つです。当科目は必修科目です。
以下の見出しは清水書院の新課程教科書『高等学校 公共』【公共705】に従っています。
〈移動予定〉
〈移動予定〉
〈移動予定〉
資料出所・読書案内
高等学校公共/青年期の心理と課題Ⅰ

小学校・中学校・高等学校の学習 > 高等学校の学習 > 高等学校公共 > 青年期
青年期は思春期(中学生~高校生)にあたる時期と大学生に当たる時期をまとめていった時期をいいます。
以下、青年期について心理学者は次の用語に置き換えています。
高等学校公共/国会

小学校・中学校・高等学校の学習 > 高等学校の学習 > 高等学校公共 > 国会
本節は、中学の公民分野の内容も入りますが、高校生の分野の内容も加えて解説します。
国会法や日本国憲法の条文などをもとに教科書も内容を記述しています。
・ 国会 ・・・ 国民の選挙によって選ばれた代表者で構成される議会で、立法権をつかさどります。日本の国会は二院制で、衆議院と参議院があります。
・ 二院制 ・・・ 国会が衆議院と参議院から成るように、議会が2つの議院から成り立ちます。メリットは、決議を慎重にし国民の意思をより正確に反映できること。もし、衆議院と参議院が、全く同じ構成だと、同じ議論を衆議院と参議院で2回繰り返すだけになってしまいます。このため、日本では衆議院と参議院の選挙区や任期などに、違いを設けています。 ・ 議会の運営 ・・・両議院の会議は公開が原則です。
(2022/6現在)
衆議院の任期が短く、衆議院にだけ解散があります。 → 衆議院には国民の意思を反映させる機会が参議院に比べて多いことを表しています。これによって衆議院には、いくつかの点で参議院より強い権限が与えられています。これを衆議院の優越といいます。 議員定数・選挙権・被選挙権は公職選挙法で決められています。
下の表は国会法の条文で決まっている事項なので覚えておかないといけません。

国会の仕事はいくつかありますが、最大の仕事は法律の制定や法律の改廃などの、立法です。
国会の仕事の中で最も重要。毎回、数十から数百を超える法律が作られます。内閣もしくは議員が法律案を提出します。図では、衆議院が先ですが、参議院に先に提出することもあります。もし衆参での議決が異なる時は、両院協議会を開きます。両院協議会でも一致しない時は、衆議院で再び審議を行い、衆議院の出席議員の3分の2以上の賛成があれば法案は通ります。
実例
衆議院が内閣不信任案を決議した場合、内閣は10日以内に、衆議院を解散するか、内閣を総辞職しなければなりません。
国会には、衆議院・参議院ともに、議員全員が出席する本会議と、議員が分かれて参加する、少数の議員からなる委員会があります。
国会に出された法律案などの議案は、まず、専門の委員会で審議され、その結果が本会議に報告され、本会議に議案が回されます。
委員会では、必要に応じて外部から議案に関係ある知識に詳しい専門家を呼んできて、専門家の意見を聞く、公聴会を開く場合もあります。
本会議では、委員会での審議を参考にして、本会議で討論をして審議を行い、本会議での審議の後に多数決で採決をされます。 本会議は、公開が原則となっており、テレビ中継などもされます。
法案の可決など議案の可決などを行っているのは、本会議です。
衆参どちらかの本会議で可決された議案は、もう一方の議員に回され、同じような過程で、委員会や本会議で審議され、本会議で採決します。
もし、衆議院の本会議の意見と、参議院の本会議の意見が異なれば、両院協議会が開かれます。
「衆議院の優越」とは、衆議院の本会議の結果が、参議院の本会議よりも優越する、ということです。
高等学校 生物

新課程の生物・旧課程生物共通です。学習する順番やタイトルが入れ替わっているだけなので、以下のリンクを参照してください。
当面の間は旧生物IIから流用
科学者達は、化石を見たり、生物の形や発達、生理、行動を研究して、生物がどのように進化してきたのか、どこから来たのか、多くの情報を収集してきました。ここ数年、DNAの解析によって新しい情報が得られています。進化を実現させる要因は何か、その仕組みはどうなっているのかを調べてみましょう。
本Chapterは、遺伝子を使った最新技術を学びます。新型コロナウイルスの検査方法(PCR検査)で有名となったPCR法もここで学習します。時事問題で、しばらくの間、各大学入試で出題の増加が予想されます。そのため、かなり詳しく内容を記述しています。
生物は環境の変化を感じ取り、行動出来ます。動物は、眼や耳などの器官で外界の変化を感じ取り、神経系でその情報を処理してから、筋肉などの器官を動かして、必要な活動を行います。植物では、植物ホルモンが環境応答の中心的な役割を果たしています。このパートでは、感覚器官、神経系、筋肉の仕組みについて学びます。また、動物の反応や行動の一部として、様々な動物がどのように行動するのかを学びます。また、植物反応の一部として、植物の生殖や植物ホルモンなどについて学びます。
動物を観察していると、時と場合によって様々な行動をしている様子が見られます。それぞれの行動は、環境中の特定の刺激に対する反応なので、神経系がどのように成長し、変化していくかに大きく関係しています。動物の行動が複雑で多様なら、その神経系はより発達しています。それでは、ある動物の行動を見てみましょう。
当面の間は旧生物IIから流用
高等学校 生物/生命の起源

地球は約46億年前に誕生しました。太陽系の誕生初期に生まれた多くの微惑星が衝突・合体して誕生しました。地球の表面は非常に熱いマグマで覆われていたため、生命環境は出来ておりません。その後、隕石の衝突が少なくなり、表面が冷えてくると、大気中に含まれていた水蒸気が雨となり、海が形成されました。この海こそが、生命が誕生した鍵を握っていたと考えられています。
生命は、海が形成され、地球の環境も安定した約40億年前頃に誕生したと考えられています。紫外線の雨が降った陸地ではなく、深海で生命が誕生したという有力な説があります。
当時の地球の様子は、現在の地球の様子とは大きく違っています。生命が誕生した経緯について述べましょう。
生命は生物からしか生まれません。しかし、約40億年から38億年前の地球上で、少なくとも1回は、無生物から生物が発生したと考えられます。
生物はタンパク質や核酸などの多くの有機物から構成されています。誕生時の地球にはこれらの有機物は含まれていませんでした。無機物や簡単な有機物から新たな有機物を作るようになって、生命が誕生したと考えられています。この仕組みの解明をスタンリー・ミラーが証明しています。
隕石や彗星中には、宇宙で作られた有機物が含まれています。彗星が地球からそれたり、隕石が衝突し、宇宙から地球に有機物が持ち込まれたかもしれません。海底には、硫化水素やメタン・水素などを含む350度以上の熱水が噴出する熱水噴出孔があります。このような場所で、有機物を作り出したかもしれません。その周辺では、高い水圧がかかっており、簡単な有機物を作り出しています。さらにタンパク質や核酸など、生物を構成するのに必要な物質を作り出しました。このような準備段階を化学進化といいます。
高等学校 地学

高等学校地学のページです。
以下の項目は啓林館地学の配列に従っています。
地質学は、私達が住んでいる大地とそこで見たり感じたりしている現象を説明しようとする科学の一分野です。地球の内部を見たり触ったりするのは困難ですが、20世紀になって、科学者達は重力、地震波、熱、地磁気などを手がかりに、地球について急速に理解し始めました。一方、日本のように地質活動が盛んな地域では、地震や火山が多く、歴史の中で大きな災害を引き起こしてきました。このような「活動する地球」の仕組みや、私達の足元の地面はどうなっているのかを説明する科学的な枠組みが、「プレートテクトニクス」です。プレートテクトニクスは、20世紀後半に発表された理論です。その発展は、人々の自然に対する考え方や理解の仕方を大きく変える「科学革命」の代表例といえるでしょう。
ここでは、大地そのものである固体地球を人類がどのように観察・観測し、現在のような理解・認識に達したかについてお話しします。自然に対する人々の考え方が時代とともにどのように変化してきたかを見れば、科学がいかに進歩してきたかを理解出来ます。現在の理解の枠組みであるプレートテクトニクスは、地球が行う様々な活動を理解するのに役立ちます。
地球の表面では岩石を採取して調べられますが、地面から直接採取出来る最深部は地表から約12キロメートルしかありません。そのため、直径約6400キロメートルの地球の内部を知ろうとすると、別の方法を用いなければなりません。代表的な方法としては、重力、地震波、地殻熱流量、地磁気などを利用します。
地球が誕生してから、約46億年が経ちました。この間、地球の内側も外側も大きな変化を遂げてきました。マグマの海を経て、液体の水がある海が現れ、原始生命が誕生して、プレートが動き始め、様々な生命が現れました。地表の層は安定していないため、少なくとも2回、地表が全て凍結しました。それでも、小さな単純な生物から、大きな複雑な生物が生まれ、そして人間という知的生命体が誕生しました。このように、地球は太陽系だけでなく、銀河系の中でも非常に珍しい惑星です。
人類と地球の未来を考え、行動する前に、過去に何があったのか、今どうなっているのかを知る必要があります。46億年の地球の歴史を、科学者達はどのように解明してきたでしょうか。岩石や地層に残された様々な地球史の記録を読み解く方法を学びましょう。日本列島はユーラシア大陸の最東端に位置します。その地殻は、大陸の地殻がどのように成長し、プレートがどのように移動してきたかを示しています。私達の住む日本列島の歴史も学んでみましょう。
地球上の水は、大気、海洋、陸の間を循環しています。その際、水は地表を削って土砂を拾い上げ、下流に運んで積み上げます。土砂は積み重なり、堆積した場所の環境を示す層となります。そして、時間が経つと、この層が固まって堆積岩になります。
地層がどのように積み重なっているか、どの程度離れているかを調べて、地層の様子を調べれば、地球の歴史を理解出来ます。
地球の周りには大気があります。大気は地表を暖かく保ち、有害な紫外線から地表の生物圏を守っています。地表の約70%を占める海は、多くの熱を蓄え、気温の変化が極端にならないようにしています。気温、風、雨量などの大気中の条件は、空間的・時間的に大きく変化します。これは、低緯度と高緯度、地表付近と上空、季節によって違いがあるためです。海水の流れは、大気の流れに似ていますが、ゆっくりした流れになっています。大気と海洋はつながっており、様々な影響を与え合っています。
太陽の放射と月の万有引力は、大気と海洋を宇宙と結びつけています。地形と火山活動は、大気と海洋を固体の地球に結びつけています。地球の長い歴史の中で、これらの条件は変化してきましたが、その変化の中には、宇宙や固体の地球が原因となっているものもあるのではないでしょうか。季節や天候が変化するのは、大気や海洋の動きによるものです。そんな大気や海について、もっと調べてみましょう。
高度100kmまで、地球大気の組成はほとんど同じです。しかし、その質量の90%は、高さ16kmまでの部分にあります。これは地球の 1 400 {\displaystyle {\tfrac {1}{400}}} の大きさに過ぎません。対流圏では、水は気体から液体、そして固体に変化します。その際、水は大量のエネルギーを取り込み、放出します。また、水蒸気が赤外線を放出したり吸収したりするため、地表は暖かく保たれます。成層圏では、地球上の生物にとって有害な紫外線を取り込むオゾン層があります。
気候とは、ある地域の大気の状態を長い期間にわたって総合的に表した言葉です。地球上の気候がいつも変化している事実は、みなさんご存知の通りです。近年、人類による大気中の二酸化炭素の増加やフロンガスによるオゾン層の破壊が、気候変動を引き起こす可能性が指摘されています。その理由は、気候変動は、大気や海洋が異なる規模でどのように動き、物質がそれとともにどのように動くかに関係しているからです。
紀元前1000年頃、人々が農耕を始め、暦や時間を必要とするようになった頃、人々は空を見上げ、星を見るようになりました。つまり、最も古い分野の一つである天文学は、最も進んだ分野の一つでもあり、現在でも未知の分野が増え続けています。技術の進歩により、100億光年以上離れた宇宙の天体を見られるようになりました。太陽系の天体を調べるために送り出された探査機の中には、太陽風の範囲から外れて、星と星の間の空間にいる探査機もあります。
一方、宇宙は私達が知的好奇心で興味を持つだけの対象ではありません。宇宙の進化の過程で、星々は私達の住む地球を作り、地球上の生命を構成する炭素や酸素などの元素を作り出しました。太陽のもとで生命は進化して、人類が誕生しました。つまり、私達は星の子です。人は非常に高度な文明社会を築いてきました。私達人間は宇宙の中で生活している事実を忘れず、宇宙の姿や時間的な変化を学んでいきましょう。
約46億年前、太陽系の全ての天体はほぼ同時に誕生しました。太陽系の真ん中にある太陽は、たった1つの恒星です。太陽は太陽系全体の質量の99%以上を占めており、太陽系の天体の動きを支配しています。Chapter1では、太陽系の天体がどのような姿をしていて、どのように動いているのかを学びます。
新興出版社啓林館『地学 改訂版』(2020年)
高等学校 地学/地球の内部（地震波）

水には、木などの密度の低い物質が浮かびます。地殻は、マントルよりも小さな密度なので、地殻はマントルの上に浮かぶような浮力を受けていると見なせます。例えば、海中に氷山が浮かぶようなものです。 さてマントルに浮かぶ地殻について、ある地点の付近での、地殻が安定するためには、力学的に直感的に考えれば、標高の高い地殻は、そのぶん浮力も多く必要なので、地下深くにまで地殻が続いている必要があります。 このような地殻とマントルの、浮力と重力の釣り合いを、アイソスタシー(isostacy)といいます。 ある一定深さでは、その地点付近では、ある面にかかる圧力は同じです。 このように地殻が地下まで続いているため、ブーゲー異常については、山などの高い地形がある場所では、アイソスタシーによって地下に密度の低い地殻があるため、山の付近ではブーゲー異常が負になるのが一般です。
高等学校物理/慣性力

本節では、慣性力と遠心力を学習します。
アイザック・ニュートンの運動の第1法則(慣性の法則)によれば、物体に外力がはたらかなければ、静止している物体は静止し続け、運動している物体は等速直線運動を続けます。等速直線運動をする電車の乗客が、進行方向に力を受けなくても電車と一緒に動き続けるのは、慣性のためです。
列車内の滑らかな床の上にスーツケースの物体が置かれています。この列車が水平方向に一定の加速度で動き始めても、物体には水平方向に力がはたらかないので、慣性の法則から、駅のホームから見た人がスーツケースを見ると、物体は静止したままです。
一方、電車内の乗客からスーツケースを見ると、スーツケースは加速する方向とは反対の力がはたらいているように見えます。この力は、電車内の乗客が等加速度運動をしていることが原因となって現れる見かけの力で、慣性力とよばれます。慣性力には、作用・反作用の関係にある力が存在しません。
物体の運動方程式を立てる時、静止、もしくは等速直線運動をしている観測者の立場では、実際にはたらく力だけをもとに運動方程式を立てれば問題ありません。このような観測者の立場を慣性系といいます。一方、加速度運動をしている観測者の立場では、実際にはたらく力だけでは運動方程式が成り立ちませんから、実際にはたらく力のほかに慣性力も考慮して運動方程式を立てる必要があります。このような観測者の立場を非慣性系といいます。
共通テスト 世界史探究対策

第1問 歴史の中の女性は、全て実教出版株式会社『世界史B 新訂版』の「世界史の中のジェンダーの内容」から出題されています。その内容を知っていれば簡単に16点満点取れます。
※全体的に公務員試験の教養試験『文章理解』の内容把握問題みたいな感じでセンター試験と異なり、文章推理のスピードも求められます。この科目だけに限りませんが、文章推理も出来ないと共通テスト全科目はおそらく半分も取れないと思います。
結論から言うと、「世界史」も「日本史」、「公民」も大学入学共通テストでは、大量の知識を必要とします。
そして、1科目だけ選べばよい受験生は、大学入学共通テストの科目では「地理B」か「地理総合・地理探究」を選択しましょう。
実教出版の教科書+山川出版社の『詳説世界史研究』(教科書替わり)で必ず学習してください。この2冊の内容をぼろぼろになるまで読み込み叩き込めば、知能分野の訓練だけでほぼ共通テスト8割は取れます。
共通テストは、「世界史」用語の書き取り練習は不要です。
書き取り練習をしないと、あたかも「手抜きの駄目な受験生」っぽく聞こえるかもしれないし、高校受験の勉強法と大きく違うので罪悪感を抱くかもしれませんが、しかし、いくつかの国家試験とかでも、マークシート選択式とかで、記述問題のない国家資格もあったり、あるいはその国家資格の一次試験だけはマークシート選択式で記述問題のない場合もあります。
この共通テスト「世界史」の過去問練習ばかりの練習は、将来のそういう国家試験対策とかに向けた、高校生バージョンの練習だと思おう。
なので、とりあえず共通テスト「世界史」過去問を入手しないと、話になりません。
高等学校物理/原子核と放射線

本節では、原子核・放射線に関する性質や日常生活での使用について学習します。
元素の中には、放射線を出す性質をもつものがあり、この性質を放射能といいます。
放射能をもつ物質は放射性物質といわれます。
放射能をもつ同位体は放射性同位体といわれます。
放射線には3種類存在し、それぞれα線、β線、γ線といいます。
α崩壊は、親原子核からヘリウム原子核が放射される現象です。 このヘリウム原子核はα粒子とよばれます。 α崩壊後、親原子核の質量数は4小さくなり、原子番号は2小さくなります。
β崩壊は、親原子核の中性子が陽子と電子に変化することで、電子が放射される現象です。
(備考: このとき、反ニュートリノとよばれる微小な粒子も同時に放出されると、近年の学説では考えられています。)
なお、この電子(ベータ崩壊として放出された電子のこと)は「β粒子」ともよばれます。
β崩壊後、親原子核の質量数は変化しませんが、原子番号は1増加します。
γ崩壊は、α崩壊もしくはβ崩壊直後の高エネルギーの原子核が、低エネルギーの安定な状態に遷移するときに放射されます。 γ線の正体は光子で、X線より波長の短い電磁波です。
放射線は、工業、医療、農業などの分野で広く利用されています。
放射性同位体に含まれる割合から、遺物などの年代を推定する方法を放射年代測定といいます。生物などの年代を調べるには放射性炭素年代測定が利用されます。
空気中では、宇宙からの放射線によって作られた中性子が、大気中の窒素と衝突して、炭素が作られます。
一方炭素は半減期約5700年でβ崩壊します。大気中では、ほぼ一定に保たれていると考えられます。酸素と結びついて二酸化炭素となった炭素は、光合成で植物に取り込まれます。さらに、これらの植物を食べる動物の細胞中に炭素が取り込まれます。このように、全ての生物は、生きている間、体を構成する炭素に一定の割合で放射性同位体炭素を含んでいると考えられます。
しかし、生物が死ぬと炭素が取り込まれなくなるので、体内の炭素は崩壊していくのみとなり、炭素の割合は時間とともに減少していきます。このような性質を使って、その生物が生きていた時代を推定することが出来ます。
放射線は材料や製品の内部を分解・破壊せずに調べたりすることが出来ます。これを非破壊検査といいます。高速道路の損傷箇所などの検査が非破壊検査の代表的な例です。
ある物質を構成する元素の一部を放射性同位体で置きかえ、それから放出される放射線を測定することによって、生体内での物質のはたらきや化学反応の仕組みを調べることが出来ます。こうして用いられる放射性同位体をトレーサーといい、このような利用法をトレーサー法といいます。農学や生物学の分野では、リン32が植物の養分吸収の様子を調べるのに用いられています。
食品や農産物に放射線を照射し、殺菌、発芽の抑制、熟成の抑制、品種改良などが行われています。工業分野では、プラスチックやゴムなどの材料物質の性質を変えたり、半導体の加工をしたりするのにも放射線が利用されています。また、空港での手荷物検査でも用いられます。
放射線を用いる病気の診断と治療には、レントゲン検査などに利用されています。また、放射線の利用には物理学の知識と経験が求められるため、医療従事者などが協力して診断や治療にあたっています。
人体の特定の部位を取り囲むように、円周状や螺旋状にX線を照射し、人体の精密な断層像を作成します。
癌細胞は、正常細胞に比べてブドウ糖を多く取り込みます。よって、陽電子を放出する放射性同位体の原子核を含み、ブドウ糖と非常によく似た構造をもつ薬剤を静脈から注射すると、薬剤を取り込んだ癌細胞から陽電子が放出されます。その陽電子と電子とが対消滅する時に出る光子が放出される位置を画像化することで、癌の診断に役立てることが出来ます。PETは細胞組織のはたらきを映し出すという特徴があります。
シンチレーションカメラは、放射性同位体の原子核の崩壊によって体内で放出されたγ線をモニターに表示し、患部を特定したり状況を観察したりすることが出来ます。
放射線の電離作用を利用すれば、放射線を体内の腫瘍に照射してがん細胞を破壊することが出来ます。放射線は正常な細胞も破壊するので、その損傷を最小限に抑える努力がなされています。
高等学校公共/個人と法

小学校・中学校・高等学校の学習 > 高等学校の学習 > 高等学校公共 > 個人と法 本節では、法の性質とはたらきについてみていきます。
人は、社会の様々なルールによって、自由な行動が制限されています。これを法といいます。
例えば、お金を借りたら返すことや人を殺してはいけないといったことが法にあたります。