OmniAICreator/Qiita-1.07M huggingface dataset:
情報系専門学校に入学して1年目で得たこと

# 専門学校に入って1年目で得たこと

## はじめに

この記事では、私が専門学校に入学して1年目に得たことについて紹介します。
専門学校に入学する前に持っていた目的や、学んだ技術、取得した資格、取り組んだことなどを取り上げます。

## 専門学校に入学した目的

私が専門学校に入学した目的は、IT業界で働くための基礎知識やスキルを身につけることです。
具体的には、プログラミング言語の基礎から応用まで学び、Web開発やシステム開発の基礎を身につけたかったと思います。
それ以外でも、クラス全員がプログラミングや開発のことを知っていて互いに切磋琢磨できる環境に身を置きたかったのも大きいです。

## 取得した資格

専門学校に入学して1年目に取得した資格は、以下の通りです。

- 2021/8/16：ITパスポート
- 2021/8/26：情報セキュリティマネジメント
- 2021/9/20：Oracle Certified Java Programmer, Silver SE 11
- 2021/11/06：JDLA Deep Learning for GENERAL(G検定)
- 2021/11/13：AWS Certified Cloud Practitioner
- 2021/11/30：基本情報技術者
- 2022/2/21：LPIC-1

合計で7つの資格試験に合格することができました。
これらの資格は、今後の就職活動やスキルアップに役立てることができると考え、積極的に取得しました。
実際に専門学校に入学する前はITに関する知識が皆無だった私は今ではTwitterのIT系ネタ投稿にちゃんと笑えるようになりました笑

## 勉強した技術

専門学校に入学して1年目に勉強した技術は、以下の通りです。

- Java
- HTML
- CSS
- JavaScript
- Git/Github
- AWS

これらの技術は、Web開発やシステム開発に必要な基礎的なスキルであり、今後の学習や実務で活用することができると思います。
Javaに関しては資格でOracleのSilverを取得したこともあり授業をかなり楽に進めることができました。

勉強には[Udemy](https://www.udemy.com/)を使用することが多かったです。
HTML、CSS、JavaScriptに関しては以下の講座を参考にしました
- [ガチで学びたい人のためのWEB開発実践入門（フロントエンド編）](https://www.udemy.com/course/front-dev-tutorial/)
講師のCodemafiaさんは話し方もとても丁寧で受講していても苦ではなくとても勉強になりました。

Gitに関しては以下の講座を参考にしました。
- [Git： もう怖くないGit！チーム開発で必要なGitを完全マスター](https://www.udemy.com/course/unscared_git/)
こちらも、ハンズオン形式で進めることができてとても勉強になりました。

## 読んだ書籍
- [徹底攻略Java SE 11 Silver問題集［1Z0-815］対応 徹底攻略シリーズ](https://www.amazon.co.jp/dp/4295007625)
- [1週間でLPICの基礎が学べる本 第3版 徹底攻略シリーズ](https://www.amazon.co.jp/dp/429500636X)
- [そろそろ常識？ マンガでわかる「Linuxコマンド」](https://www.amazon.co.jp/dp/B093GD4XND)
- [そろそろ常識？ マンガでわかる「正規表現」](https://www.amazon.co.jp/gp/product/B08L4FDS86)
- [Linux教科書 LPICレベル1 Version5.0対応 ](https://www.amazon.co.jp/dp/B07P5S98SK)
- [Linux教科書 LPIC レベル1 スピードマスター問題集](https://www.amazon.co.jp/dp/B07TVTKW2C)
- [情報処理教科書 出るとこだけ！基本情報技術者［午後］第2版](https://www.amazon.co.jp/dp/B07YZ71QY8)
- [情報処理教科書 出るとこだけ！情報セキュリティマネジメント テキスト＆問題集 2021年版](https://www.amazon.co.jp/dp/4798168696)
- [深層学習教科書 ディープラーニング G検定(ジェネラリスト)公式テキスト 第2版](https://www.amazon.co.jp/dp/B08XZDJDH2)
- [最短突破 ディープラーニングG検定(ジェネラリスト) 問題集](https://www.amazon.co.jp/gp/product/429711609X)
- [一夜漬け AWS認定クラウドプラクティショナー 直前対策テキスト](https://www.amazon.co.jp/dp/B08N4RYX1B)
- [リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice) ](https://www.amazon.co.jp/dp/4873115655)
- [スクレイピング・ハッキング・ラボ　Pythonで自動化する未来型生活 (技術の泉シリーズ（NextPublishing）)](https://www.amazon.co.jp/gp/product/B08H1KBYG2)
- [Java 第3版 入門編 ゼロからはじめるプログラミング](https://www.amazon.co.jp/dp/B08PCF566J)

LPIC関連の書籍が多いですね。
最初に小豆本を手に取ったのですが全く分からず、簡単な書籍に一度移った経緯があります笑
記事で出てくるCLIのコマンドや用語など理解できるようになったのでとても勉強になりました。

## 取り組んだこと

専門学校に入学して1年目に取り組んだことは、以下の通りです。

- Androidアプリのチーム開発
    - 主に、プログラミング領域、タスクの洗い出し、割り振り等を担当しました。

これらのプロジェクトは、自分たちで課題を見つけそれらを解決するということをチームで取り組み、成果を出すことができた経験でした。


今後の学習や実務においても、プロジェクトの進め方やチームワークの重要性を学ぶことができたと感じています。

## まとめ
専門学校に入学して1年目に得たことについて、資格取得や技術習得、プロジェクトなどを紹介しました。これらの経験は、IT業界での就職活動や実務に役立てることができるだけでなく、自己成長にもつながるものでした。今後も学んでいくことで、より高いスキルや知識を身につけていきたいと思います。
Complex Driver design and integration guideline, No.622, AUTOSAR R21-11(262) CP

Complex Driver design and integration guideline, No.622, 2021-11

https://www.autosar.org/fileadmin/standards/classic/21-11/AUTOSAR_EXP_CDDDesignAndIntegrationGuideline.pdf

AUTOSAR R21-11記事一覧はこちら。

AUTOSAR 21-11,160文書読んだ。2022年5月中に全部読み。

https://qiita.com/kaizen_nagoya/items/9935c9e58bf82e1e63d2

AUTOSAR 21-11, 62文書読んだ。2022年5月中に半分到達予定。

https://qiita.com/kaizen_nagoya/items/648b32867635993410c8

AUTOSAR R21-11(0) 仕様ダウンロード一覧。単語帳。参考文献資料作成

https://qiita.com/kaizen_nagoya/items/9b3a1b9b8d1e8d7e288e

# 用語(terms)
|Term|Description|
|:--|:--|
|CDD| CDD used to be the acronym for Complex Device Driver or Complex Driver, but is not limited to drivers.
| MODULENAME| This term is defined in the document [4] AUTOSAR General Requirements on Basic Software Modules

## 英日
日本語は仮訳

T.B.D.

# 参考(reference)

[1] AUTOSAR Glossary
AUTOSAR_TR_Glossary.pdf
[2] List of Basic Software Modules
AUTOSAR_TR_BSWModuleList.pdf
[3] AUTOSAR Layered Software Architecture
AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf
[4] AUTOSAR General Requirements on Basic Software Modules
AUTOSAR_SRS_BSWGeneral.pdf
[5] General Specification on BSW modules
AUTOSAR_SWS_BSWGeneral.pdf
[6] Specification of Standard Types
AUTOSAR_SWS_StandardTypes.pdf
[7] Specification of Platform Types
AUTOSAR_SWS_PlatformTypes.pdf
[8] Specification of Communication Stack Types
AUTOSAR_SWS_CommunicationStackTypes.pdf
Templates specification documents:
[9] Specification of BSW Module Description Template
AUTOSAR_TPS_BSWModuleDescriptionTemplate.pdf
[10] Specification of ECU Configuration
AUTOSAR_TPS_ECUConfiguration.pdf
Module reference documents
[11] Specification of ECU State Manager
AUTOSAR_SWS_ECUStateManager.pdf
[12] Specification of Watchdog Manager
AUTOSAR_SWS_Watchdog Manager.pdf
[13] Specification of Operating System
AUTOSAR_SWS_OS.pdf
Complex Driver design and integration guideline
[14] Specification of Default Error Tracer
AUTOSAR_SWS_DefaultErrorTracer.pdf
[15] Specification of Diagnostic Event Manager
AUTOSAR_SWS_DiagnosticEventManager
[16] Description of the AUTOSAR standard errors
AUTOSAR_EXP_ErrorDescription.pdf
[17] Specification of Rte
AUTOSAR_SWS_RTE.pdf
[18] Specification of Memory Mapping
AUTOSAR_SWS_MemoryMapping.pdf
[19] Specification of PDU Router
AUTOSAR_SWS_PDURouter.pdf
[20] Specification of Communication
AUTOSAR_SWS_COM.pdf
[21] Specification of Communication Manager
AUTOSAR_SWS_COMManager.pdf
[22] Specification of Network Management Interface
AUTOSAR_SWS_NetworkManagementInterface.pdf
[23] Specification of TCP/IP Stack
AUTOSAR_SWS_TcpIp.pdf
[24] Specification of Synchronized Time Base Manager
AUTOSAR_SWS_SynchronizedTimeBaseManager.pdf
Specification of Compiler Abstraction, No.51, AUTOSAR R21-11(261) CP

Specification of Compiler Abstraction, No.51, 2021-11

https://www.autosar.org/fileadmin/standards/classic/21-11/AUTOSAR_SWS_CompilerAbstraction.pdf

AUTOSAR R21-11記事一覧はこちら。

AUTOSAR 21-11,160文書読んだ。2022年5月中に全部読み。

https://qiita.com/kaizen_nagoya/items/9935c9e58bf82e1e63d2

AUTOSAR 21-11, 62文書読んだ。2022年5月中に半分到達予定。

https://qiita.com/kaizen_nagoya/items/648b32867635993410c8

AUTOSAR R21-11(0) 仕様ダウンロード一覧。単語帳。参考文献資料作成

https://qiita.com/kaizen_nagoya/items/9b3a1b9b8d1e8d7e288e

# 用語(terms)
|Term|Description|
|:--|:--|
|Large, huge |Memory model configuration of the microcontroller’s compiler. By default, all access mechanisms are using extended/paged addressing. Some compilers are using the term ‘huge’ instead of ‘far’.
|Tiny, small |Memory model configuration of the microcontroller’s compiler. By default, all access mechanisms are using normal addressing. Only data and code within the addressing range of the platform’s architecture is reachable (e.g. 64k on a 16 bit architecture).
|far| Compiler keyword for extended/paged addressing scheme (for data and code that may be outside the normal addressing scheme of the platform’s architecture).
|near| Compiler keyword for normal addressing scheme (for data and code that is within the addressing range of the platform’s architecture).
## 英日
日本語は仮訳

T.B.D.

# 参考(reference)

[1] List of Basic Software Modules,
AUTOSAR_TR_BSWModuleList.pdf
[2] General Requirements on Basic Software Modules,
AUTOSAR_SRS_BSWGeneral.pdf
[3] Layered Software Architecture,
AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf
[4] Specification of ECU Configuration,
AUTOSAR_TPS_ECUConfiguration.pdf
[5] Cosmic C Cross Compiler User’s Guide for Motorola MC68HC12,V4.5
[6] ARM ADS compiler manual
[7] GreenHills MULTI for V850 V4.0.5:
Building Applications for Embedded V800, V4.0, 30.1.2004
[8] TASKING for ST10 V8.5: C166/ST10 v8.5 C Cross-Compiler User's Manual, V5.16 C166/ST10 v8.5 C Cross-Assembler, Linker/Locator, Utilities User's Manual, V5.16
[9] Wind River (Diab Data) for PowerPC Version 5.2.1:
Wind River Compiler for Power PC - Getting Started, Edition 2, 8.5.2004 Wind River Compiler for Power PC - User's Guide, Edition 2, 11.5.2004
[10] TASKING for TriCore TC1796 V2.0R1:
TriCore v2.0 C Cross-Compiler, Assembler, Linker User's Guide, V1.2
[11] Metrowerks CodeWarrior 4.0 for Freescale HC9S12X/XGATE (V5.0.25):
Motorola HC12 Assembler, 2.6.2004 Motorola HC12 Compiler, 2.6.2004
Smart Linker, 2.4.2004
[12] General Specification of Basic Software Modules
AUTOSAR_SWS_BSWGeneral.pdf
[13] Specification of Memory Mapping
AUTOSAR_SWS_MemoryMapping.pdf
General Requirements on Basic Software Modules, No.43, AUTOSAR R21-11(260) CP

General Requirements on Basic Software Modules, No.43, 2021-11

https://www.autosar.org/fileadmin/standards/classic/21-11/AUTOSAR_SRS_BSWGeneral.pdf

AUTOSAR R21-11記事一覧はこちら。

AUTOSAR 21-11,160文書読んだ。2022年5月中に全部読み。

https://qiita.com/kaizen_nagoya/items/9935c9e58bf82e1e63d2

AUTOSAR 21-11, 62文書読んだ。2022年5月中に半分到達予定。

https://qiita.com/kaizen_nagoya/items/648b32867635993410c8

AUTOSAR R21-11(0) 仕様ダウンロード一覧。単語帳。参考文献資料作成

https://qiita.com/kaizen_nagoya/items/9b3a1b9b8d1e8d7e288e

# 用語(terms)
|Term|Description|
|:--|:--|
|Interrupt frame| An interrupt frame is the code which is generated by the compiler or the assembler code for prefix and postfix of interrupt routines. This code is Microcontroller specific
|ISR |Interrupt Service Routine. Also used as a macro to declare in C a cat2 interrupt service routine.
|Cat2 |Category 2. Cat2 ISRs are supported by the OS and can make OS calls.
|Cat1| Category 1. Cat1 interrupts are not supported by the OS and are only allowed to make a very small selection of OS calls to enable and disable all interrupts.
## 英日
日本語は仮訳

T.B.D.

# 参考(reference)

[DOC_LAYERED_ARCH] Layered Software Architecture
AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf
[DOC_MOD_LIST] List of Basic Software Modules
AUTOSAR_TR_BSWModuleList.pdf
[ECU_CONF_SRS] Requirements on ECU Configuration
AUTOSAR_RS_ECUConfiguration.pdf
[ECU_CONF_SWS] Specification of ECU Configuration
AUTOSAR_TPS_ECUConfiguration.pdf
[GLOSSARY] Glossary,AUTOSAR_TR_Glossary.pdf
https://www.autosar.org/fileadmin/standards/foundation/21-11/AUTOSAR_TR_Glossary.pdf
[DOC_STDTYPE_SWS] Specification of Standard Types,
AUTOSAR_SWS_StandardTypes.pdf
[DOC_MEMMAP_SWS] Specification of Memory Mapping,
AUTOSAR_SWS_MemoryMapping.pdf
[DOC_BSWSCHED_SWS] Specification of BSW Scheduler,
AUTOSAR_SWS_BSW_Scheduler.pdf
[ARReleaseManagement] Definition of Release Management Process,
AUTOSAR_PD_ReleaseManagementProcess.pdf
[TPS_STDT_0078] Software Standardization Template
AUTOSAR_TPS_StandardizationTemplate.pdf
[STD_ ISO 17356-3_OS] ISO 17356-3: OS
http://www.iso.org
[VENDOR_ID_LIST] AUTOSAR Vendor ID List
https://www.autosar.org
12日で合格【基本情報技術者試験】

# 前提
1. PythonはAtCoderで1ヶ月前くらいから勉強し始めていました。
2. エンジニアとしての経験はあったが文系なので情報関連の知識はほとんどありませんでした。
3. 早稲田大学商学部に所属しているのでマーケティングや経営の知識が40%くらいはありました。
4. 処理能力は普通くらいです。工夫する力は人の何倍もあります。下の方に私の工夫を載せておくので真似してください。
# まず1番伝えたいこと
### 12日じゃ未経験の人は受かりません！！1ヶ月以上前から勉強始めてください！！
YouTubeやTwitterの投稿で「基本情報は簡単ｗ」という投稿が多いのでそれを信じてしまっていました。これらは無視して勉強してください。これを信じてしまったので12日前まで全く他のことに時間を使ってしまいました。しかし、勉強をいざ始めるとほとんど知らないことばかりで絶望的でした。特にテクノロジー分野は2%くらいしか知りませんでした。よくインターンとかしてたな自分。。。と思いました。





# やったこと
[午前]
### [スタディング](https://studying.jp/kihonjoho/itempage/)を1.5倍速で見ました。
全部見終わったら教科書であるPDFを全て読み直して暗記しました。3周はしました。スタディングの良い所はPDFがすごく良くまとまっていて見やすいことです。きれいにまとまっていると復習が早く終わります。あとは滝口先生の説明がそんなに悪くないことです。とても良い訳ではありませんが、淡々と話して進めてくれます。1.5倍速で聞くと効率良いです。
初めはキタミ式で勉強しようと思いましたが、ごちゃごちゃしていて自分は処理能力がそんなに高くないので諦めました。合格教本も買いましたが、最初の2ページで諦めました。どちらもメルカリで売りました。
### スッキリわかるSQL入門の付属アプリだけをやりました。
スッキリわかるSQL入門を買いましたが、公式を覚えれば良いだけなのに説明が多すぎて途中で読むのを諦めました。しかし、スッキリわかるSQL入門が出しているアプリを使うと、感覚的に公式を楽しく一気に覚えられます。１日でデータベース試験を8割取れるくらいまで伸ばせます。私は本番73%ですが、過去問では満点２回出せました。そのアプリはこちらです。⇨[dokoQL](https://dokoql.jp/libraries)
こちらの第１章から第12章までポチポチボタンを押しながら覚えました。
ちなみにスッキリわかるSQL入門は届いた日にメルカリに出しました（笑）。なのでアプリだけで十分です。

[午後]
スタディングで過去問を解く。
市販の過去問を解く。

# 工夫した事とTips
基本情報はたくさんの人が受験しているので、ググれば過去の人が作った知恵がたくさんあります。ゴロや図など良いものがたくさん出てくるので、なんか良い覚え方ねーのかよ！って思ったらググれば出てきます。

### 1.ゴロで覚える

>9000 品質マネジメントシステム
－(9)オリティを重視します
 

>14000 環境マネジメントシステム
>いよかん（１４環）
>いー世(14)の中にいたしましょう

 
>15001 個人情報保護マネジメントシステム（Pマーク）
イチゴ（15）
いちごパンツは乙女の個人情報
いちごパンツは（ピー！）マーク
（覚え方のコツ、性的なこと、過激なことを入れると強烈に記憶される。また、001の部分は覚える必要はない。15001と最後まで書く試験は無い。）
 
 
>27000 情報セキュリティマネジメントシステム ISMS
丈夫な綱(27)でセキュリティ
受難(27)を防ぐセキュリティ
(太い綱でハッカーの侵入を防いでいるイメージ)
27017  17…柔軟(17)な、構成ができるクラウドセキュリティ

>20000 ITサービスマネジメント
にんまり(20)サービス提供します
二重丸のサービス提供いたします
（笑顔のたえない良いサービスの提供）
 

>31000 リスクマネジメント
災害(31)リスクを事前にコントロール
サイ(31)コロをコントロール
(リスクをコントロールする)

### 2.図で覚える
![raid図.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1007371/fddb4137-b3ce-99d4-e3ff-ad508a4ecb4a.jpeg)
https://www.ino-inc.com/raid/raid5.php

### 3.アプリを使う
アルゴリズムを覚える時に文字で読んでも頭が悪いのでよくわかりませんでした。ですが、
こちらのアプリを使ったら自分の手でサクサク動かしながら覚えられたので一瞬で覚えられました。
300か400円くらいかかりましたが、それでアルゴリズム覚えられるならokです。こちらは本の付属アプリらしいですが、本は見たことないです。アプリだけで十分というかアプリの方が良いと思います多分。

![スクリーンショット 2022-05-29 20.13.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1007371/a9e57aaf-7295-f689-8c2f-f7c071a694d5.png)
https://apps.apple.com/jp/app/%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E5%9B%B3%E9%91%91/id1047532631

### 4.表計算じゃなくていい
YouTubeやTwitterを見ると「基本情報は簡単w」と言いつつ、「表計算を解くべきだ！そしてマクロを捨てるべきだ!」という意見が多いです。私もそれを信じて表計算をやってみたのですが、練習では手応えは悪く、翌日が午後試験本番だったので間に合わないと思って、ホームページに載ってるPythonのサンプル問題を解いてみたところ、2ミスでした。また、応用情報技術者試験の過去問のPython問題も解いてみましたが、満点でした。なのでPythonを選択しました。
私はPythonを始めて1ヶ月も経っていないです。
ちなみにPythonはスッキリわかるPython入門とQiitaの記事とAtCoderとで勉強しました。

# 最後に
#### 最低１ヶ月以上前から勉強した方が良いと思います!!
CBTになってから合格率が上がっていますが、問題が優しくなった訳ではありません。受験者のレベルが上がっているだけです。私は午後の本番の問題がとても難しかったです。問題ガチャ運もかなりあると思います。
TypeScriptのタイプ定義のTips1

```typescript
type Keys = 'option1' | 'option2';
type Flags1 = { [K in Keys]: boolean };
// Flags1はFlags2と等しい
type Flags2 = { option1: boolean; option2: boolean;}

let key = 'name'
let obj={key:'jack'} =>{key:jack}
// [key]:変数keyの値を読み取る
let obj={[key]:'jack'} =>{name:jack}
```
C#でGitLabApiClientを使ってGitLab上のファイル内容を取得する

# はじめに

本記事では、C#でGitLabを操作するためのGitLabApiClientを使ってGitHub上のファイル内容を取得する方法をまとめます。  

# GitLabApiClientとは

C#上でGitLabの操作をするためのライブラリです。  
プロジェクト内のファイル内容取得やIssue、プルリクエストの作成など、様々な操作が可能なライブラリとなっています。詳細は[こちら](https://github.com/nmklotas/GitLabApiClient)を参照ください。  

# GitLabApiClientを使ってGitLab上のファイル内容を取得する方法

GitLabApiClientを使って、指定したプロジェクトの指定したファイル内容を取得する方法を示します。  
まずは、GitLabApiClientをインストールします。VisualStudio上で.NETのプロジェクト(コンソールアプリなど)を作成後に作成したプロジェクトを右クリックし、[Nugetパッケージの管理]メニューをクリックします。その後、GitLabApiClientという名称のパッケージを検索し、インストールします。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452292/28ff7857-e7e7-df4a-147a-d5438b0a1522.png)
次に実際にGitLabApiClientを使って、指定したプロジェクトの指定したファイル内容を取得するコードを書いていきます。以下がコードの内容となります。  

```csharp
using GitLabApiClient;

// GitLabクライアント作成
var client = new GitLabClient("https://gitlab.com/");

// ログイン
var userName = "ユーザー名";
var passWord = "パスワード";
await client.LoginAsync(userName, passWord);

// 対象プロジェクトを取得
var projectId = "対象プロジェクトのID";
var project = await client.Projects.GetAsync(projectId);

// プロジェクトのmainブランチの指定パスのファイルを取得
var file = await client.Files.GetAsync(project, "Data/テストデータ.md", "main");
var fileContent = file.ContentDecoded;
```

各処理について詳しく見ていきます。  
以下はGitLabクライアントを作成し、ログインをする部分です。ログインすることでそのユーザーに紐づく情報(コミットやファイル情報など)を取得できるようになります。  

```csharp
// GitLabクライアント作成
var client = new GitLabClient("https://gitlab.com/");

// ログイン
var userName = "ユーザー名";
var passWord = "パスワード";
await client.LoginAsync(userName, passWord);
```

以下はプロジェクトIDを指定してプロジェクトの情報を取得する部分です。  

```csharp
// 対象プロジェクトを取得
var projectId = "対象プロジェクトのID";
var project = await client.Projects.GetAsync(projectId);
```

なお、プロジェクトIDとはWeb上からGitLabのプロジェクトを閲覧したときに以下に表示されるIDのことです。  

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452292/f6856ef7-5dca-1bdf-5b77-e219836d840d.png)


以下は取得したプロジェクト情報を使って、プロジェクトのルートからのパスを指定してファイル情報を取得する部分です。`main`としている部分はブランチ名なので、ここを変えることでブランチを指定できます。以下ではプロジェクトの`Data`フォルダにある`テストデータ.md`を取得します。取得したファイル情報のContentDecodedプロパティにアクセスすることで、ファイルの内容が取得できます。  

```csharp
// プロジェクトのmainブランチの指定パスのファイルを取得
var file = await client.Files.GetAsync(project, "Data/テストデータ.md", "main");
var fileContent = file.ContentDecoded;
```

# さいごに

C#でGitLabを操作するためのGitLabApiClientを使ってGitHub上のファイル内容を取得する方法をまとめました。  
かなり簡単に扱えるライブラリだなと個人的に感じました。C#からGitLabを操作したい場合には有用なライブラリだと思いました。
Jetpack Compose 勉強記録その１

今回からJetpack Composeを触っていきたいと思います。
Composeを使用するプロジェクトが増えてきそうなので、学習していこうと思います。

インプットするだけだと、やっただけの勉強になりそうなので、自分なりの勉強した内容を記録として、アウトプットするために、こちらに残していきます。

# 今回の内容

https://developer.android.com/jetpack/compose/tutorial?hl=ja


初回なので、こちらのチュートリアルをやってみようと思います。


# テキストを表示させる

```MainActivity.kt
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            Text(text = "Hello world!")
        }
    }
```

setContentブロックでコンポーズのレイアウトを定義するみたいです。
テキストはText(text = "Hello world!")これだけでHello world!が画面上に出てきました。



テキストを表示の関数を作ると良いみたいです。

```MainActivity.kt
@Composable
fun HelloText(name: String) {
    Text(text = "Hello $name!")
}
```

使う側はこうなります。
```MainActivity.kt
setContent {
  HelloText("world")
}
```

テキストを表示することがこれでできました。

# レイアウトを設定する

垂直方向にテキストを表示する方法

```MainActivity.kt
@Composable
fun HelloText(name: String, body: String) {
    Column {
        Text(text = name)
        Text(text = body)
    }
}
```

Columnという関数を仕様することで、垂直方向に表示する事ができるみたいです。

使う側はこうなります。

```MainActivity.kt
setContent {
  HelloText("Android", "Compose")
}
```

次に垂直、水平両方利用したレイアウトを作成してみます。


```MainActivity.kt
@Composable
fun CardItem(name: String, body: String) {
    Row(modifier = Modifier.padding(all = 8.dp)) {
        Image(
            painter = painterResource(R.drawable.ic_launcher_background),
            contentDescription = "picture",
            modifier = Modifier
                .size(50.dp)
                .clip(CircleShape)
        )
        Spacer(modifier = Modifier.width(16.dp))

        Column {
            Text(text = name)
            Spacer(modifier = Modifier.height(12.dp))
            Text(text = body)
        }
    }
}
```

使う側はこうなります。

```MainActivity.kt
setContent {
  CardItem("Android", "Compose")
}
```

Rowを使うと水平方向に表示する事ができるみたいです。

なのでImageの画像の右側にColumnなので、垂直方向に表示する２つのテキストができます。

レイアウトの装飾はModifierを使用するみたいです。

xmlだとマージンで設定したいたものはSpacerを使うことになるのでしょうかね？

今回はここまでにしようと思います。


次回はチュートリアルの続きをやっていきます。
UbuntuにOpenCVをC++で使えるようインストールするには

きっかけ
---
C++の利用を念頭に置いたOpenCVの環境をUbuntuに構築する方法を解説しているサイトは数多ありますが、できたと思っても動画の保存が出来なかったりライブラリが古かったりで、かなり試行錯誤しました。
この記事が自分と同様に困っている方の参考になれば幸いです。

実行環境 
OS：Ubuntu 20.04.5  LTS
OpenCV：3.4.16

インストール方法
---
https://opencv.org/releases/ から任意のSourcesをクリックしてzipファイルをダウンロード
・Iplimageなど一部昔の関数は4.x以降だと動かず


ホームディレクトリに展開

Ubuntu左下のメニューからターミナル（端末）を開いて以下を1行ずつ入力
```
$ cd opencv-3.4.16 //フォルダ名は入力途中でTabを押すと補完してくれる
$ mkdir build
$ cd build

//ここで$ sudo su - を入力してroot権限を持った場合は以下の”sudo”はいらない

$ sudo apt update
$ sudo apt -y upgrade
$ sudo apt-get update
$ sudo apt-get -y upgrade 
$ sudo apt-get -y install build-essential

//以下コピペ推奨　マウスのホイールクリックで貼り付けできる場合あり

$ sudo apt-get -y install libv4l-dev
$ sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main" 
//ここでエラーが出た場合はこの記事一番下を参照
$ sudo apt install libjasper1 libjasper-dev

$ sudo apt-get -y install cmake
$ sudo apt-get -y install libjpeg62 libjpeg62-dev
$ sudo apt-get -y install libgtk2.0-0 libgtk2.0-dev
$ sudo apt-get -y install libpng-dev
$ sudo apt-get -y install libtiff5-dev libtiff-dev
$ sudo apt-get -y install libunicap2 libunicap2-dev
$ sudo apt-get -y install libswscale-dev
$ sudo apt-get -y install libavformat-dev
$ sudo apt-get -y install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
$ sudo apt-get -y install libcanberra-gtk-module

$ cmake .. -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local

$ sudo make -j4
$ sudo make install
$ sudo ldconfig
```

これでOpenCV本体はインストール完了

適当なサンプルコードをテストします。
プログラムがあるフォルダにcd 

ターミナルでフォルダの場所に移動する方法3つーーーー
・cdのあとに繰り返して地道に移動　上の階層に行くには cd ..
・ファイルマネージャーでフォルダを掴んでターミナル上ではなす
・ファイルマネージャー上でフォルダを開いた画面で右クリック、「端末で開く」を選択
ーーーーーーーーーーーーーーーーーーーーーーーーー


makefileを開く（ターミナルからならopen makefile またはxdg-open makefile。ファイルマネージャーやvscodeからでもok）

makefile内を編集ーー
SRCS = [コンパイルするコードファイル名]　例. samplecv1.cpp
PROG = [実行ファイル名。適当な名前]　例. samp
ーーーーーーーーーーー

```
$ make
$ ./samp
```

これで実行が確認できたらok。おつかれさまでした。

----
$ sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main" を入れた際のエラー

```
エラー:6 http://security.ubuntu.com/ubuntu xenial-security InRelease
公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY [16桁のアルファベットと数字]  
パッケージリストを読み込んでいます... 完了
W: GPG エラー: http://security.ubuntu.com/ubuntu xenial-security InRelease: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY [16桁のアルファベットと数字]  
E: リポジトリ http://security.ubuntu.com/ubuntu xenial-security InRelease は署名されていません。
N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。
N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。
```
そのような場合は以下のコードを入力してみてください。
```
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys [16桁のアルファベットと数字] 
```
学生特典・学割のあるサービス、サブスクリプションまとめ2022

# 学生特典のあるサービスまとめ

学生だと安くサービスが使えたり、無料で色々使えたりするのは学生の特権です。
今回はエンジニアや研究で使えそうなサービスをまとめてみました。
大学のメールアドレスで登録することで使えるサービスが多そうです。
主に、無料で使えるものを中心に集めてみました。

## 無料で使えるもの

#### Azure
Microsoftのクラウドサービスです。毎年１万円分くれます。毎年1万円おかわりできるので、登録しておいて損はないと思います。
サーバーとして使ったり、AI系のライブラリ使ったり、仮想環境を借りたりできます。

https://azure.microsoft.com/ja-jp/free/students/

#### Zoom (コロナによる期間限定 2022年6月30日まで)

Zoomも学生のメールアドレスで登録すると40分の制限が外れる機能がありましたが、6月30日で正式に終わるそうです。

https://support.zoom.us/hc/ja/articles/360041264451-K-12-%E3%81%AE%E6%99%82%E9%96%93%E5%88%B6%E9%99%90%E8%A7%A3%E9%99%A4

#### Heroku

Herokuも同じく、クラウドサービスです。後述するGitHub Student Developer Packの特典として付いてきます。
少しいいプランが2年間無料になるみたいです。

#### AWS Educate

AWSはアマゾンのクラウドサービスです。大学が対象になっていれば、無料クレジットがもらえるらしいです。私の大学は対象になっていませんでした。。
https://aws.amazon.com/jp/education/awseducate/

#### GitHub Student Developer Pack

GitHubが学生向けに色々なサービスを展開しています。
GitHub Proが使えます。

他にも様々なソフトウェアが使えます。

https://education.github.com/pack

例えば、

- GitHub Pro （ほぼ無料で使えるけどGitHub Actionsの上限が増えるなど）
- Heroku (ちょっといいプラン2年間無料)
- Canva(デザインアプリ、proを一年間)
- stream yard (動画配信アプリ、月1000円のプランが無料)
- Name.com ドメイン一年無料（一部ドメインのみ）
- .Tech　.techドメイン一年無料
- iconscout アイコン一年ダウンロード

~~特に[Canva](https://www.canva.com/)は簡単におしゃれなデザインを作れるのでおすすめです。~~
→2022/8/19追記：なくなってしまったそうです..

#### Notion

NotionのパーソナルProプランが学生は無料で使うことができます。
ファイルのアップロードが無制限なのがProの特徴です。

https://www.notion.so/ja-jp/product/notion-for-education


#### Figma

UIプロトタイプでよく使われるソフトウェアです。
全ての機能が無料で使えます。

https://www.figma.com/education/
[figma.com/education/apply](figma.com/education/apply) から申請をすることで使うことができます。

#### Mathpix

https://mathpix.com/blog/more-free-snips-for-students

数式をOCRしてTexに変換してくれるサービスです。
教育機関のドメインで登録することで、月50回の制限が月100回になるそうです。


#### Miro

オンラインホワイトボードアプリのMiroにもEducation Planがあります。
（2年間の制約があり）

https://help.miro.com/hc/ja/articles/360017730473-Education-%E3%83%97%E3%83%A9%E3%83%B3

#### Unity

Unityのライセンスも無料で使えます。

https://store.unity.com/academic/unity-student


#### Jetbrains


PyCharmやGoLandといったJetbrains製品の学生ライセンスも使うことができます。
（GitHub Student Developer Packからも申し込むことができます）
https://blog.jetbrains.com/ja/2019/08/22/2105/


## 学割のあるサービス

#### Apple

割引されます。
https://www.apple.com/jp_edu_1460/store

#### Apple 学生・教職員向けPro Appバンドル

プロ向け動画編集ソフトのFinal Cut ProやDAWソフトのLogic Proが2万円で永久に使えます！（Logic ProがあればYOASOBIの曲がほぼ作れます！）

https://www.apple.com/jp_edu_1460/shop/product/BMGE2J/A/%E6%95%99%E8%82%B2%E6%A9%9F%E9%96%A2%E5%90%91%E3%81%91pro-app%E3%83%90%E3%83%B3%E3%83%89%E3%83%AB

#### Adobe
安く買えます
https://www.adobe.com/jp/creativecloud/buy/students.html

#### Evernote

50%オフだそうです
https://evernote.com/intl/jp/students


#### Amazon Prime Student

言わずと知られたAmazon Prime Student、4年間限定なので、大学院に進んだり留年すると学生なのに、正規料金になったりします。（現在その問題で困っています。）

https://www.amazon.co.jp/%E5%AD%A6%E7%94%9F-%E5%A4%A7%E5%AD%A6%E7%94%9F-%E6%95%99%E7%A7%91%E6%9B%B8-%E6%9C%AC-student/b?ie=UTF8&node=2410972051


#### Apple Musicなどのサブスク

https://support.apple.com/ja-jp/HT205928
## 番外編

#### YAMAP

YAMAPという登山アプリも学生は無料でProプランが使えます。
地図をダウンロードし放題！！
https://yamap.com/campaigns/1035

## 終わりに

学割をうまく使おう！！
【laravel8】FormRequestの実装

## FormRequestに書くメリット
FormRequestに記載するメリットとしては以下の点がある
・Controllerに書くコード量が少なくなる、見やすくなる。
・ロジックを分けることができる

## FormRequestの作成方法
以下のコマンドを実行するとapp/Http/RequestsディレクトリにFormRequestファイルが配置される。
```
$ php artisan make:request 任意のファイル名
```

**ポイント**
・命名は「アクション名+コントローラー名」とする。
PostControllerのstoreメソッドで使用したい場合は以下のように命名する。
```
$ php artisan make:request StorePostRequest
```

## FormRequestの設定
・今回はバリデーションのルールとメッセージだけ設定していく。
```php
class StorePostRequest extends FormRequest
{
    // 認可条件を設定
    public function authorize()
    {
        return true;  // 認可します
    }
    // ルールを記述
    public function rules()
    {
        return [];
    }
    // メッセージ
    public function messages()
    {
        return [];
    }
}
```
一つ一つ見ていく。


**authorize()**
・認可すべき条件があれば記述しtrue/falseを返す。
・特になければtrueを返しておかないとレスポンスは403Forbiddenとなる。
```php
    // 認可条件を設定
    public function authorize()
    {
        return true;  // 認可します
    }
```


**rules()**
・バリデーションのルールを指定
・ルールを配列もしくは|で繋げて指定する
```php
    // ルールを記述
    public function rules()
    {
        return [
            //ルールを|で繋げる場合
            "title" => 'required|string|max:100',
            "mail"  => 'required|string|max:100',

            //ルールを配列で指定する場合
            "title" => ['required','string','max:100'],
            "mail"  => ['required','string','max:100'],

            //group = [
            //  [
            //     "name" => '中田',
            //     "age"  => 22,
            //  ],
            //  [
            //     "name" => '山田',
            //     "age"  => 22,
            //  ],
            //  [
            //     "name" => '山田',
            //     "age"  => 22,
            //  ],
            //]

            //上記のようにrequestの中身が配列の場合
            "group"         => ['required','array'],
            "group.*.name"  => ['required','string','max:100'],
            "group.*.age"   => ['required','integer','max:3'],
         ];
    }
```

**messages()**
・属性ごとに任意でメッセージを指定できる。
```php
    public function messages()
    {
        return [
            'title.required'           => 'タイトルの入力は必須です',
            'title.string'             => 'タイトルは文字列で入力してください',
            'title.max'                => 'タイトルは255文字までです',

            //配列の場合
            'group.*.name.required' => '名前は入力必須です',
            'group.*.name.string'   => '名前は文字列で入力してください',
        ];
    }
```

## Controllerで使用する際
引数にファイル名を指定することでControllerに入る前にバリデーションをかけてくれる。
```php
public function store(StorePostRequest $request)
{
  //保存処理
}
```

## 補足
・formを送信してバリデーションにかかった場合、iputタグに入力していた値などは消えてしまうためoldメソッドを使用する。
第二引数にデフォルト値(初期値)を指定することができる。
```html
<input id="title" type="text" name="title" value="{{ old('title',$title) }}">
```

・以下のようにすることでバリデーションにかかった際にmessage()で指定したエラーメッセージが表示される。
```html
@foreach($errors->get('title') as $message)
   <li>{{ $message }}</li>
@endforeach
```
salesforceの電話型を検索

## 電話番号形式

salesforceは電話番号を保存するデータ型を選択できる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139642/1c5db226-19c7-cf62-c49e-02ef67c815ba.png)

09012345678でも090-1234-5678でも電話番号と認識してくれる。
これを検索したときにどうなるのか試してみた。

## 試したこと

取引先責任者の携帯項目に「09012345678」「090-1234-5678」の値をもつレコードをそれぞれ作成して検索結果がどうなるか試してみる。

### グローバル検索

#### 09012345678で検索
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139642/2e16417d-3f84-5591-6d38-ce60600c5b51.png)

それぞれ結果が表示された。

#### 090-1234-5678で検索
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139642/7ffb2013-7126-6480-cd8f-000da05ede7b.png)

これもそれぞれ表示された

### レポート

#### 抽出条件：携帯が次の文字列と一致する「09012345678」

1件だけ抽出された
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139642/d948588b-65e8-3382-c623-9e21176d11e1.png)

#### 抽出条件：携帯が次の文字列と一致する「090-1234-5678」

1件だけ抽出された
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139642/cd781c4e-8577-f735-7edd-f1a2eb4b49ee.png)

### SOQL

#### SELECT Id FROM Contact WHERE MobilePhone = '09012345678'

1件だけ抽出された
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139642/207d1aaf-fb35-906f-2f9a-1cecfbd7de99.png)

#### SELECT Id FROM Contact WHERE MobilePhone = '090-1234-5678'

1件だけ抽出された
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139642/8bb1b729-e934-b92a-5a42-10a0622c05ed.png)

### 開発者コンソールでSOSL

#### 09012345678で検索

2件抽出
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139642/352758c6-d864-9ab3-d173-1796d98d41d3.png)

#### 090-1234-5678で検索

怒られました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139642/8d0f8dae-9e17-eb87-bd29-0b69b8208c48.png)

### ApexでSOQL

電話番号をバインドして実行してみる
xxxにそれぞれ番号を入れて検索してみた。

```
String phone_number = 'xxx';

List<List<SObject>> soql_result = [
    FIND :phone_number IN Phone Fields
    RETURNING Contact(FirstName,LastName,MobilePhone)
];
List<Contact> cons = (List<Contact>)soql_result[0];

System.debug(cons.size());


```

#### 09012345678

2件を取得
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139642/de2f6774-7fca-2bd6-404d-b5129372df64.png)

#### 090-1234-5678

2件を取得
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139642/e428b90c-004b-1470-b280-f4867c1351d7.png)

## 個人的な結論

電話番号はハイフンなしで登録するのがよさそう。

## 参考資料

- [salesforceヘルプ - 通貨、日付、時間、名前、電話番号の形式](https://help.salesforce.com/s/articleView?id=sf.basics_understanding_values_curr_date_phone.htm&type=5)
- [salesforce developers - SOQLおよびSOQLリファレンス](https://developer.salesforce.com/docs/atlas.ja-jp.236.0.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_sosl_intro.htm)
- [Trailhead - Apexの基本とデータベース > SOQLクエリの作成](https://trailhead.salesforce.com/ja/content/learn/modules/apex_database/apex_database_sosl)
numpyを使ってデータを任意の階級値へ切り上げ・切り下げする

# TL;DR
- データの値を階級値で離散化する
- numpy.digitizeでbinのインデックスを取得してbinそのものへ突っ込む

# sample

threshold（というかbins）は昇順または降順にソート済みとする。

```python
import numpy as np

if __name__ == '__main__':
  data = np.array([[51, 71, 81, 92], [43, 101, 20, 151]])
  threshold = np.array([0, 50, 70, 90, 130, 150, 300])
```

## 切り上げ

```python
  # 切り上げ
  data_right_indice = np.digitize(data, threshold, right=True)
  print(data_right_indice)
  print(threshold[data_right_indice])
```

```python:出力
[[2 3 3 4]
 [1 4 1 6]]
[[ 70  90  90 130]
 [ 50 130  50 300]]
```

## 切り下げ

```python
  # 切り下げ
  decreasing_threshold = np.sort(threshold)[::-1]
  data_left_indice = np.digitize(data, decreasing_threshold, right=False)
  print(data_left_indice)
  print(decreasing_threshold[data_left_indice])
```

```python:出力
[[5 4 4 3]
 [6 3 6 1]]
[[ 50  70  70  90]
 [  0  90   0 150]]
```

# 参考文献

https://numpy.org/doc/stable/reference/generated/numpy.digitize.html

https://qiita.com/supersaiakujin/items/c580f2aae90818150b35
AE、VAE、VAE-M

<h1>
AE 
</h1>
入力　＝＞Encoder＝＞z(潜在変数)＝＞Decoder＝＞出力

<h1>
VAE
</h1>
入力　＝＞Encoder＝＞z(潜在変数)＝＞Decoder＝＞出力
<br>
(z~N(0, 1))<br>
<br>
損失関数<br>
KLダイバージェンス　+ α * MSE(入力、出力)

<h1>
VAE-M
</h1>
VAEのアルゴリズムの損失関数をM-VAE(x)(非正規化異常度)に置き換える。
初めてハッカソンに参加してきた

# はじめに
サポーターズ主催の【オンライン開発合宿vol.1】「はじめてのハッカソン」に参加しました。
初のハッカソンだったので、そこでの経験を共有したいと思います。
ハッカソンに興味はあるけど尻込みしている方の参考になればなと思います。

# 自己紹介
チームで初めてのミーティング時にした自己紹介は、
「（名前）です。一番得意な言語はJavaです。ハッカソンもチーム開発も初めてです。よろしくお願いします。」

- 大学院進学予定の大学4年
- ハッカソン、チーム開発経験なし
-  プログラミング
下記の成果物であげているものが主で、Python, C, PHP が授業で習うような基礎レベルのみ
- 成果物・開発経験
    - SNS系のWebアプリ(Spring Boot, HTML/CSS, JavaScript, MySQL, AWS)
    - タイムカードのAndroidアプリ(Java, SQLite)
- インフラ
    - AWS(IAM, VPC, EC2, Route53, ACM, RDS, S3, SNS)
- Git, GitHub
pull, add, commit, push, pull request, mergeは使ったことある
- デザイン
知識はなく、Figmaが一応使えはするぐらいのレベル（Componentとかは使いこなせない）
- 情報系学科なので、基本的なコンピュータサイエンスの知識はあると思う

# 参加したハッカソンの情報
## 審査基準
- 課題解決＝テーマに沿っているか
- 完成度＝サービスとしての完成度、機能の実装度、UI/UX
- 技術的な挑戦＝新しいor難しい技術に挑戦しているか

## 表彰
1. 最優秀賞: 1チーム
1. 努力賞: 7チーム(数はハッカソンごとで違う)
1. 参加賞: 成果発表した参加者全員

## 参加者
28チーム 64人

## 当日実施されたアンケートの結果
- 初めてハッカソンに参加する人: 80%
- 23 ~ 25 卒: 96%
- 開発経験
    - 制作物なし: 32%
    - 制作物あり: 42%
    - インターン、アルバイトでの経験もあり: 20%
- 参加方式
    - チーム参加: 42%
    - 個人で参加し、個人チームで開発したい: 24%
    - 個人で参加し、チームを作って開発したい: 34%

# 事前にやったこと
- 事前にアイデア案を2個考える
- GitHubのコードをチームで共有する方法を調べる（コラボレータ, 組織アカウント, . . .）
- 無料で複数人(目安：4人以上)が参加できるミーティングツールを調べる(Skype等)
- ハッカソンについて調べる
ハッカソン経験者の記事がためになった
    - [ハッカソンで優勝する技術](https://qiita.com/taigamikami/items/7c6af445f1e62b0dad23)
    - [初心者でも、これだけやればなんとかなるハッカソン！！](https://qiita.com/cocococo_panda/items/8e9aefcdf492ed092973)
    - [初心者女子大生がゴリゴリのハッカソンに参加した話](https://note.com/sumison0207/n/nd816e66ef93f)
    - [プログラミングを始めて４ヶ月目に参加した初のハッカソンで後悔したこと](https://qiita.com/yuto_nakano44/items/43e0859d267996e44df0)

# チームメンバー
みんな優秀だけど、初ハッカソン&初チーム開発&初の成果物でした。
- Javaはある程度書けて、セキュリティ関連の研究をしている大学院修士1年生
- 成果物は無いが、HTML/CSS, JavaScript, Java はある程度書ける高専3年生
- Kaggle等のコンペに参加経験や画像識別のモデル作成経験がある大学3年生

# 成果
成果発表時にたくさんの人に褒めてもらえたので、すごく嬉しかったです。
- 成果物: [HackathonRunner](https://github.com/Javaler/HackathonRunner)
    - ユーザーの技術レベルから、ハッカソン当日と当日までにすることを提案するアプリ
    - 使用技術は、Spring Boot(Java), HTML/CSS, JavaScript, Heroku
    - 継続開発していくつもりなので、ぜひ使ってみて下さい！

- 結果: **努力賞**

# あとがき
次に参加するハッカソンでは、優勝（優秀賞）をもらえるように頑張りたいと思います。

ハッカソンは短期間で開発経験を積める貴重な機会です。
尻込みしている人は、今すぐハッカソンの開催情報を調べて、申込み可能なものがあれば申し込みましょう。

最後までご覧いただきありがとうございました。
少しでも良いと感じていただけましたらLGTMしていただけますと幸いです。
PythonのSeleniumで楽天ラッキーくじを自動化する【ポイント不労所得】

### 楽天ラッキーくじについて

楽天ラッキーくじは、無料で楽天ポイントを獲得できるお得なサービスの一つです。
くじ一覧は[公式サイト](https://kuji.rakuten.co.jp/)にて確認することができます。

しかし、これらのくじを全て毎日手作業で引くのはとても面倒です。
そこで本記事では、Seleniumを利用して、くじ引きの自動化に挑戦しようと思います。

---
### 前提条件
私の実行環境は以下の通りです。
- MacBook Air (M1, 2020)
- macOS Monterey バージョン 12.3.1
- Python 3.8.9

---
### 事前準備
- Seleniumが利用できるPython環境を用意
- 楽天の会員登録

---
# 必要なライブラリのインポート
使用するライブラリの事前インストールは個人で頑張ってください。

```python
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time # スリープを使うために必要
import chromedriver_binary # パスを通すためのコード
from selenium.common.exceptions import NoSuchElementException
import random
```
---
# くじ引きの自動化
本プログラムではwebdriverを利用して[楽天くじ公式サイト](https://kuji.rakuten.co.jp/)へ移動し、ログイン、そしてくじ引きの自動化を実行します。

### ChromeDriverのインストール
[ChromeDriver インストール方法【Mac】【Windows】](https://doku-pro.com/chromedriver-mac-windows/)を参考にパソコンへChromeDriverをインストールします。

私の場合は以下のコマンドをターミナルへ打ち込みました。
※Homebrewは事前にインストール済
```terminal
brew install chromedriver
```
### インストールしたChromeDriverのパスを指定してChromeを準備

[Selenium入門 Pythonでブラウザを自動化したい方必読！](https://aiacademy.jp/media/?p=346)を参考に、インストールしたChromeDriverのパスを確認・指定します。

※MacOSのユーザーは、私のサンプルコードをそのまま使用すれば問題ないと思います。
※一番最初の実行時のみ、システム環境設定のセキュリティにてアクセスを許可する必要があります。

```python
#パスを指定してChromeを準備
browser = webdriver.Chrome(executable_path='/opt/homebrew/bin/chromedriver')
```
### 自動化プログラムの実行

```python
browser.implicitly_wait(5) #ブラウザ立ち上がるまでの許容時間を5秒とする

url = "https://kuji.rakuten.co.jp/" #楽天くじ公式サイトのurl
browser.get(url)

path1 = "/html/body/div/main/section[2]/ul/li[1]/a" #1個目のラッキーくじのパス

# 1個目のラッキーくじを選択
btn = browser.find_element_by_xpath(path1)
btn.click()
time.sleep(5)

# ログイン情報入力
textbox = browser.find_element_by_id("loginInner_u")
textbox.send_keys(ID) #【変更してください】 楽天アカウントのIDを入力
time.sleep(5)

textbox = browser.find_element_by_id("loginInner_p")
textbox.send_keys(password) #【変更してください】 楽天アカウントのパスワードを入力
time.sleep(5)

# ログインボタンを押す
btn = browser.find_element_by_xpath("/html/body/div[2]/div/div/div[1]/div/form/div/p[1]/input")
btn.click()
time.sleep(5)

try:
 # くじ「Start」をクリック 
 btn = browser.find_element_by_xpath("//*[@id='entry']")
 btn.click()
 time.sleep(30)
except NoSuchElementException:
 print("- NoSuchElementException発生 - 次の処理へ")
 time.sleep(5)

    
#ログイン情報を残した状態で、次から順番にくじを引いていく
for num in range(2, 25):
 path2 = "/html/body/div/main/section[2]/ul/li[" + str(num) + "]/a"

 # 楽天ラッキーくじ トップページに移動
 browser.get('https://kuji.rakuten.co.jp/')
 time.sleep(15)

 try:
  # ラッキーくじを順番に選択
  btn = browser.find_element_by_xpath(path2)
  btn.click()
  t = random.randint(10,15)
  time.sleep(t)
  
  try:
   # くじ「Start」をクリック
   btn = browser.find_element_by_xpath("//*[@id='entry']")
   btn.click()

   t = random.randint(30,40)
   time.sleep(t)
   
  except NoSuchElementException:
   print("- NoSuchElementException発生 - 次の処理へ")
   
   t = random.randint(10,25)
   time.sleep(t)

 except NoSuchElementException:
  print("- NoSuchElementException発生 - 次の処理へ")
  t = random.randint(25,35)
  time.sleep(t)

#ブラウザを閉じる
browser.close()
```
# 注意事項
- 今後、サイトの仕様変更等により、本記事のスクリプトが動作しない場合があります。
- 楽天ラッキーくじを自動化ツールで引くことは本来禁止されています。
- 不正行為と判断された場合、ポイント失効やアカウント停止の可能性もあります。
- 全ての行為は自己責任でお願いします。
Raspberry pi PICO に NUTTX をインストール

**Raspberry pi PICO**上 で **NUTTX** が走るということなので試してみました。

[【NuttX】ラズパイPicoにOSをインストールしてみた！](https://www.youtube.com/watch?v=zz_Z2tBOVvI)
このYoutubeを見ながらインストールしたのですが、**make**で躓いて **nuttx.uf2** が出来ませんでした。

エラーコードから色々とググったら
[NuttX for Raspberrypi pico](http://blog.ss1200.lomo.jp/?eid=1235)
この記事にたどり着いた、どうも raspberrypi SDK のバージョンの問題からしいです。

ただ自分はソースコードを修正する技術(力量) は持ち合わせていないのでもっと簡単な方法はないかと、再びググる。
すると NUTTX PICO には PICO SDK のバージョン **1.1.2** が必要とのこと。
つまり最新の PICO SDK には対応していないらしい。

```
$ git clone -b 1.1.2 https://github.com/raspberrypi/pico-sdk.git  
```
でPICO SDK を インストールし直して  、**PICO SDKのパス**を設定
```
$ export PICO_SDK_PATH=<absolute_path_to_pico-sdk_directory>
```

この後に  
nuttxディレクトリに入って  
```
$ make distclean
$ ./tools/configure.sh raspberrypi-pico:nsh
$ make
```

これで無事に **nuttx.uf2** が作られました。

結局
[Git HUB apache/incubator-nuttx](https://github.com/apache/incubator-nuttx/tree/master/boards/arm/rp2040/raspberrypi-pico)   
このページに書いてある Installation の手順通りで大丈夫みたいです。

次に生成した nuttx.uf2 ファイルの Raspberry pi pico への書き込みですが、**BOOTSEL** ボタンを押しながらUSBケーブルを接続すると
Raspberry pi pico がファイルドライブとして認識されますので
ドラッグアンドドロップでコピーします。

「nuttx.uf2 をコピーすると Raspberry Pi Pico は自動的に再起動しCOMポートとして認識されるはずなのですが、認識してくれません。

原因は、NuttX for Raspberry Pi Pico では元々 USB がサポートされていなかったために、USB をサポートするには
```
$ ./tools/configure.sh raspberrypi-pico:nsh
```
ではなく
```
$ ./tools/configure.sh raspberrypi-pico:usbnsh
```
としなければいけませんでした。
再び以下のようにビルドし直しました。
```
$ make distclean
$ ./tools/configure.sh raspberrypi-pico:usbnsh
$ make
```

新しく出来た **nuttx.uf2** ファイル を書き込んだら無事に COMポートとして認識しました。
Tera Term Proで接続してコマンドがたたけるのを確認しました。
ちなみにボーレートは 115200bps です。
実は最初何も表示されなかったのですが、リターンキーを何度か押さないとダメでした。
![スクリーンショット 2022-05-29 18.37.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99249/545dc0b0-17bb-bf5e-9451-4bc60aebb3d2.png)

後記
**Raspberry pi PICO** は発売時に購入しましたが、ずっと放置していました。
最近は **SONY Spresense** の拡張ボードの設計試作が多かったのですが
**SPRESENSE SDK** でサンプルプログラムを提供して欲しいという要望が有り、SPRESENSE SDK の学習をしていました。
SPRESENSE SDK は **NUTTX** なので、Raspberry pi PICO でも**NUTTX** が走ることを知り試してみました。

参考にしたサイト  
[Git HUB apache/incubator-nuttx](https://github.com/apache/incubator-nuttx/tree/master/boards/arm/rp2040/raspberrypi-pico)  
[【NuttX】ラズパイPicoにOSをインストールしてみた！](https://www.youtube.com/watch?v=zz_Z2tBOVvI)  
[NuttX for Raspberry Pi PicoのUSBデバイスサポート](https://qiita.com/yunkya2/items/a06f5033598e96b6b0cb)
常にプライベートモードでブラウザ起動

# 説明
EdgeとChrome ともに、リンク先の exeの引数にオプションを設定すればプライベートモードで起動するようになります。

* Edge の msedge.exe の引数に「-inprivate」をつける。
* Chrome の引数に「-incognito」をつける。

# References
* [Microsoft Edgeを常にInPrivateモードで起動する方法](https://pc-karuma.net/always-inprivate-mode-on-microsoft-edge/)
* [Google Chromeを常にシークレットモードで起動する方法](https://pc-karuma.net/always-open-google-chrome-in-incognito-mode/)
アイスブレイクで使える雑学クイズがでてくるLINE Botを作ってみた


こんにちは、初投稿です:blush:

スーパーマーケット事業で教育に携わる仕事をしています。
デジタル関連に疎い私ですが、**LINE Bot**なる便利なツールの存在を知り
仕事のちょっとした困りごとを解決できればなぁとモノは試しだと作ってみました。


私事ですが、最近では研修の初めや区切りのタイミングで「アイスブレイク」をやっています。
コロナ禍で人との繋がりが少なくなってくると簡単なゲームで気分転換したり、コミュニケーションで繋がりを深めたりと試行錯誤が必要なんですよね。
そんなアイスブレイクのネタは事前に「これをやるぞっ」て準備する場合がほとんどですが研修はナマモノですので急に空き時間が発生なんてことも。
今回はそんなときに使える『**雑学クイズをかえしてくれるLINE Bot**』に挑戦！

## 使用ツール
**■LINE** 
**■[Make](https://www.make.com/en)**
**■[Trivia API ](https://opentdb.com/api_config.php)**
**■[翻訳 API](https://libretranslate.de/)（結果的に必要でした）**


## まずは完成品です。
https://twitter.com/Maepon517/status/1530849012542472193

![unnamed (2).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2670703/3a90db47-444a-a7c3-a650-08d3b0f18171.jpeg)




数字を入れると9つのカテゴリーから20問づつ問題と答えがかえってきます。
何か読みづらくありませんか？

そうなんです。
雑学問題をかえしてくれるこのTrivia APIはそもそも英語対応だったんです。
![unnamed.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2670703/dec72e38-6584-36b8-bef2-ce22aaa330bf.jpeg)

これでは、タイムリーに使えない・・・。
というわけで急遽英語を日本語に変換してくれる翻訳APIを繋げることに！
なんとかできるだろうと思いましたがこれがかなりの苦戦。

**これがMakeのシナリオです。**
![Makeシナリオ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2670703/f072d02a-efe9-3630-7b01-62c343092ac9.png)

MakeはLINEへの返信を自身で作成するツールですが
なかなかの難しさ、そして英語表記。
ともあれ、トライ＆エラーを繰り返し
問題はかえってくるのにひたすら英語。
英語の知識は必要ですね。挫けそうです:sweat_drops:

周囲の助けをいただいてやっと完成。
日本語さん、やっと会えましたね。


## 知っておくべきポイント

今回私が苦戦したところは
やはり2つのAPIの連携でした。

![スクリーンショット (40).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2670703/5ece59b5-0042-f117-ab85-6dfc80f55acf.png)

後半のモジュールでは翻訳APIは**GET**で受け付けるのではなく**POST**で受け付けるようです。

![スクリーンショット (42).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2670703/64a5b550-1e03-5b33-ef75-694f7f54f9d3.png)

リクエストコンテンツのJSONも**既定の中身**だけでなく前半HTTPモジュールの**カテゴリーを直接入れる**ことも可能でした。
奥が深いですね。


## あとがき
LINEのようなSNSツールはグループ・個人間の情報のやり取りが主かと思いますが
今回のようなBotの利用であれば日常的に仕事でも使えそうな手応えを感じました。
忘れる前に手を動かすことを心がけたいですね。
あとは英語の語彙力かな・・・。

## 使ったAPI
■[Trivia API ](https://opentdb.com/api_config.php)
■[Translation API](https://libretranslate.de/)
undefined method `mechanism=' for ActiveSupport::Dependencies:Moduleを解決した話。(Mac rails consoleが起動できない編)

# 環境
OS: Mac
SHELL: zsh
rails: 7.0.3

# undefined method `mechanism=' ...が出た！
rails consoleを立ち上げようとしたら、掲題のエラーが発生した。

https://stackoverflow.com/questions/70849954/undefined-method-mechanism-for-activesupportdependenciesmodule-nomethoder

上記の記事にならって、下記のgemを削除する。'spring'gemは元々入れていたためそのまま。
```
gem 'spring-watcher-listen'　　　# 削除
```

# 解決した
再びrails consoleを立ち上げる。
```
$ rails c
Running via Spring preloader in process 45130
Loading development environment (Rails 7.0.3)
irb(main):001:0> 
```
立った。。。。！
どうも、railsのバージョンが7.*になると発生するエラーぽいので、ダウングレードさせても解決するのかも。
以上
【AWS】t2→t3のインスタンスタイプ変更方法

t3が出てきたのが2018とかだったので、この手の変更はよくあるのではあるのかと思います。
サイズの変更とかだとサクッといきますが、世代だとそうはいきませんでした。

ENAの拡張ネットワーキング機能を有効化させてあげる必要があるため、以下変更手順です。

## １、ENAモジュールのインストール確認
**ENAモジュールが有効であることを確認します。**
```
$ modinfo ena
```
一覧ぽいものが返ってくればOKです。

※もし返ってこなかった場合、導入が必要です
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/enhanced-networking-ena.html#test-enhanced-networking-ena

## ２、ENAモジュールがインターフェースで使用されていることの確認
**ENAモジュールがインターフェースで使用されていることを確認します。**
```
$ ethtool -i eth0
```

**driver: ena** になっていればOKですが、おそらく**driver: vif**になってます。
なのでこいつを変更してあげます。

## ３、grubの設定値変更
まずは起動時にOSを動かしているgrubの設定をかきかえます。
grubまわりは繊細なので操作注意です。

以下viで操作してますが、もちろんsedコマンドでもOKです。

**①grubの設定ファイルを開きます**
```
$ vi /etc/default/grub
```
<br>

**②GRUB_CMDLINE_LINUXの行末に net.ifnames=0 を追記します。**
```
GRUB_CMDLINE_LINUX="XXX XXX XXX net.ifnames=0
```
<br>

**③設定ファイルを再ビルドします。**
```
$ grub2-mkconfig -o /boot/grub2/grub.cfg
```

## ４、ENA有効化
**①該当インスタンスの停止**
ENAの有効化はインスタンスを停止して実施するので、
インスタンスを停止します。

以下AWS CLIを使います。

**②有効化のコマンドが使えることを確認します。**
```
aws ec2 modify-instance-attribute help
```
オプションに --ena-support　が表示されることを確認する。
※表示されてない場合、awscliのバージョンをあげる必要があると思われます。

<br>

**③設定値の確認**
```
aws ec2 describe-instances --instance-ids instance_id --query "Reservations[].Instances[].EnaSupport"
```
**false**が表示されるはずです。ここを**true**に変更します。
※デフォルトのプロファイルが設定されてない場合は、
適宜　**--profile プロファイル名**　で指定してあげてください。

**④falseに変更**
```
aws ec2 modify-instance-attribute --instance-id instance_id --ena-support
```

**⑤インスタンスタイプ変更（１）**
インスタンスタイプ変更→起動

ここでインスタンスタイプ変更や！ってなりますが、私の場合、変更できませんでした:angel:
まずは試してみてどうなるか確認いただければと思います。

## ５、yumアップデート
４の⑤がNGだった場合、
ENAを含む最新のカーネルとカーネルモジュールでインスタンスを更新する必要があるようです。
起動できなかった場合は元のt2に戻して起動してあげます。

**①yumアップデート**
```
$ yum update
```

yumアップデートしなきゃいけないの？って感じですが、
これできない環境もあるだろうし、そういうときに困りそうです。
カーネルのところだけうまく更新してくれればいいのですが、
AWSドキュメント上はyum updateを推奨しているようです。

外部と通信できる環境だとしても、安易に実行しないように気を付けてください！！

**②インスタンスタイプ変更**
インスタンス停止→インスタンスタイプ変更→インスタンス起動

**③インターフェースの再確認**
項目２のコマンドで変更されていることを確認します。
```
$ ethtool -i eth0
```
**driver: ena** になっていればOKです！！

以上です！！ヘルプしてくれたチームメンバに感謝:pray:

※参考
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/enhanced-networking-ena.html
CentOS7でyumコマンド時、「Cannot find a valid baseurl for repo」エラーの解決法

■発生原因
　結論：ネットワークにつながっていないため。
　　　　
■経緯
　CentOS7でyumコマンド時、「Cannot find a valid baseurl for repo」エラーが発生。
　インターネットに接続されていない場合に出るエラーのため、
　「ping 8.8.8.8」　で正常にインターネットに接続できているか確認を実施。
　結果、「network is unreachable」エラーが発生。
　
　➡︎　下記サイトで対処実施。

■対処方法
　https://qiita.com/hika7719/items/8c2ac1015837cb5b15c7
Nautobotを超簡単にdockerで動かす


# はじめに
NautobotというイケてるSoT(Source of Truth)ツールがあると知ったので、実際に触ってみたいと思います。
Nautobotの存在を知っているという前提で、ツール自体の説明は省かせていただきます。

# TL;DL
- ワンライナーで起動できる
- サンプルデータが用意されているのでめちゃ楽
- Excelでの管理に疲弊したので検討中
- 次回以降いろいろと中身を見ていきます

# Nautobotラボを使用する

- Nautobot Lab
    - オールインワンのDockerコンテナ
    - 評価、検証用
    - パパっと試せる(感謝)

README.mdに記載されている手順の通りに実行していきます。

# DockerHubから実行

~~~
docker run -itd --name nautobot -p 8000:8000 networktocode/nautobot-lab
~~~

オールインワンコンテナのため、時間がかかります。

- Nautobot本体
- PostgreSQL
- Redis

すべてのサービスが安定すると、以下のURLでWebインターフェースにアクセスできます。
http://localhost:8000

![ホーム画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223925/e705fab2-4828-0ba2-9382-1c2c7582af05.png)

以下のコマンドでステータスを確認できます。

~~~
docker ps | grep nautobot
~~~

# スーバーユーザーの作成

`nautobot nautobot-server createsuperuser`コマンドを使用して作成ができます。
ユーザー名、電子メールアドレス、およびパスワードの入力を求めるプロンプトが出現しますので、適宜入力してください。

~~~
docker exec -it nautobot nautobot-server createsuperuser
~~~

上記により、スーパーユーザーでログイン可能となります。

# スーパーユーザーでログイン

ご覧の通り、未ログイン時では鍵マークがかかっておりますが、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223925/648b56a0-1b3b-c301-836c-b0e228632151.png)

こちらからログインしますと、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223925/877f2535-5880-adb5-da77-2fddd7e8f1ae.png)

各サービスを利用できるようになりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223925/c0a943ef-c600-8187-0c0d-7ff74a7aed72.png)


# モックデータを読み込ませる

１からデータを入力していってもいいのですが、サンドボックスデータがすでに用意されているのでそちらを試してみたいと思います。

:::note warn
サンドボックスデータをロードすると、現時点でのデータはすべて破棄されます。
それによって、先ほど作成したユーザデータも削除されます(さっき作成した意味ないやん...)
:::

サンドボックスデータのロードは以下コマンドで実行できます。

~~~
docker exec -it nautobot load-mock-data
~~~

:::note info
サンドボックスデータのユーザ資格情報は、ユーザ名：demo、パスワード：nautobotです。
:::

再度ログインすると、サンドボックスデータが正しくロードされていることが確認できます。

![localhost_8000_(iPad Air).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223925/f2b88fbf-023a-fd53-30aa-5028dfe0e97d.png)

各データについては後日また記事を書こうと思います。
Simple Data Integrator (SDI) 実践入門：コネクション設定 (ファイル)

# はじめに
SDI（Simple Data Integrator）は、Excel、CSV、JSON、XMLファイルからのインポート、および Excel、CSV、JSON、XML ファイルへのエクスポート に対応しています。

インポートやエクスポートを行う前に、ファイルの保存場所を事前に設定する必要があります。

ファイルの保存先としては、以下のようなストレージがサポートされています：
- ローカルまたはネットワーク上の ファイルシステム
- FTP / FTPS
- SFTP
- AWS S3（Amazon Simple Storage Service）
- OCI Object Storage（Oracle Cloud Infrastructure）

# ファイル接続の設定
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560129/5c751fb7-c237-eec3-4da2-5234437f72d1.png" width="300">

1. `「新規コネクション」`ボタンをクリックしてコネクション設定画面を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560129/eb0f9d6b-6be6-7107-5474-eb6ce6950591.png)

2．接続情報を設定

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560129/983f0aa3-b1ea-579c-c441-834d71bff487.png)


|No|項目|説明|
|----|----|----|
| 1 |コネクション名 |コネクション名を入力、任意の名前設定できます。システムは名前の重複チェックしていないですが、管理上、ユニークの名前の設定をお勧めします。 |
| 2 |ロケーション | `ファイル`接続を選択|
| 3 |テータタイプ|`CSV` , `Excel` あるいは `JSON`を選択。<br />※ 同じフォルダーに`CSV`,`Excel`,`JSON`中の二つ以上のタイプ保存の場合、それぞれコネクションを作成する必要があります。|
| 4 |ファイル保存先の情報|ファイル保存先の情報を入力。ファイルシステム、FTP/FTPS、SFTP、AWS S3、OCI Object Storageの場合それぞれ必要な情報を入力してください。<br />参考資料：<br />https://ja.sdi.ricct.com/userguide/connectioncsvexcel/|
| 5 |接続テスト|`[接続テスト]`ボタンをクリックしてOracleへ接続できるかどうかをテストします，接続が成功する場合、下記のメッセージボックスが表示されます。<br />![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560129/2895baaa-276a-fd49-f9fd-163d1a3b86ea.png)|

接続テストして問題なければ　保存します。

以上です。

[Simple Data Integrator (SDI) 実践入門](https://qiita.com/RiCCT/items/3dc109ff82546459a8b0 "Simple Data Integrator (SDI) 実践入門")

# 参考資料
[SDI日本語公式サイト](https://ja.sdi.ricct.com/ "SDI日本語公式サイト")
[SDI English Official Website](https://sdi.ricct.com/ "SDI English Official Website")
[SDIコネクション設定 (CSV、Excelファイル設定)](https://ja.sdi.ricct.com/userguide/connectioncsvexcel/ "SDIコネクション設定 (CSV、Excelファイル設定)")