OmniAICreator/Qiita-1.07M huggingface dataset:
闘魂Elixir ーー AtCoder Beginner Contest 356(B)をElixirで楽しむ

<b><font color="red">$\huge{元氣ですかーーーーッ！！！}$</font></b>
<b><font color="red">$\huge{元氣があればなんでもできる！}$</font></b>

<b><font color="red">$\huge{闘魂とは己に打ち克つこと。}$</font></b>
<b><font color="red">$\huge{そして闘いを通じて己の魂を磨いていく}$</font></b>
<b><font color="red">$\huge{ことだと思います}$</font></b>


# はじめに

[AtCoder Beginner Contest 356](https://atcoder.jp/contests/abc356)を[Elixir](https://elixir-lang.org/)で解いてみます。

[AtCoder](https://atcoder.jp/)を解くのが趣味で、休憩時間に解いているという若い人がいて、それってすごい意識の高い休憩時間の過ごし方だと思って、私も真似してみることにしました。


# [AtCoderをElixirでやってみる](https://zenn.dev/torifukukaiou/articles/ac84c87736ceebf4da01)

入力の読み取り方や解答の作り方は、別の記事にまとめています。


https://zenn.dev/torifukukaiou/articles/ac84c87736ceebf4da01

ご参照くださいませ。

[Elixir](https://elixir-lang.org/)で[AtCoder](https://atcoder.jp/)を楽しむためには、エントリポイントを`Main.main/0`にする必要があります。つまり`Main`モジュールを作って、その中に`main/0`関数を定義するわけです。

# [B - Nutrients ](https://atcoder.jp/contests/abc356/tasks/abc356_b)

問題はリンク先をご参照くださいませ。
私の解答を貼っておきます。


<details><summary>私の解答</summary>

_問題文を読んでいることを前提にひとこと解説をしておきます。_

ポイントは、縦に足すところです。
TLEがでないか嫌な予感がしましたが100x100程度なので大丈夫でした。

```math
X_{i j}
```

は、Mapに格納しました。
足し算は、[for](https://hexdocs.pm/elixir/Kernel.SpecialForms.html#for/1)の[reduce](https://hexdocs.pm/elixir/Kernel.SpecialForms.html#for/1-the-reduce-option)オプションを使ったのがポイントです。


```elixir
defmodule Main do
  def main do
    [n, m] =
      IO.read(:line) |> String.trim() |> String.split(" ") |> Enum.map(&String.to_integer/1)
    a_list = IO.read(:line) |> String.trim() |> String.split(" ") |> Enum.map(&String.to_integer/1)

    x_map = for i <- 1..n do
      x_list = IO.read(:line) |> String.trim() |> String.split(" ") |> Enum.map(&String.to_integer/1)
      Enum.with_index(x_list, 1)
      |> Enum.map(fn {x, j} -> {{i, j}, x} end)
    end 
    |> List.flatten()
    |> Map.new()

    total_list = 1..m
    |> Enum.map(fn j ->
      for i <- 1..n, reduce: 0 do
        acc -> acc + x_map[{i, j}]
      end
    end)

    Enum.zip(a_list, total_list)
    |> Enum.all?(fn {a, t} -> t >= a end)
    |> if(do: "Yes", else: "No")
    |> IO.puts()
  end
end
```
</details>



---

# さいごに

[AtCoder Beginner Contest 356](https://atcoder.jp/contests/abc356)を[Elixir](https://elixir-lang.org/)で解くことを楽しみました。

あなたのお好きなプログラミング言語でお楽しみください。

---


**闘魂**とは、  **「己に打ち克つこと。そして闘いを通じて己の魂を磨いていくことである」** との猪木さんの言葉をそのまま胸に刻み込んでいます。
知っているだけで終わらせることなく、実行する、断行する、一歩を踏み出すことを自らの行動で示していきたいとおもいます。
**アントニオ猪木さんのメッセージから元氣をもらったものとして、それを次代に語り継ぎ、自分自身が「闘魂」を体現するものでありたいとおもいます。**

---

<b><font color="red">$\huge{元氣ですかーーーーッ！！！}$</font></b>
<b><font color="red">$\huge{元氣があればなんでもできる！}$</font></b>
<b><font color="red">$\huge{１、２、３ ぁっダァー！}$</font></b>
CSSを短い文字数で読み込むを発見！

通常はこのようにするでしょう。
```html
<link rel="stylesheet" href="style.css">
```
しかし、CSSを用いてもっと短くすることができます。
```html
<style>@import "style.css";</style>
```
たった5文字の短縮ですが短縮にこだわりのある人にはお勧めです。

また、複数を読み込む場合は以下のように美しく表記できます。
```html
<style>
@import "style1.css";
@import "style2.css";
@import "style3.css";
@import "style4.css";
@import "style5.css";
@import "style6.css";
</style>
```
このように複数読み込む場合は大きく短縮できます。（そんなに読み込まないだろうけど）

もちろんこのような表記も可能です。
```css:style要素内
@import "base.css";
body{
    background: green;
    color: blue;
    /* 目に優しくない */
}
```
CSSなどを**出来るだけ**短縮したい人におすすめです。
たかが5文字なので慣れている方でもよいでしょう。

## 追記　色の短縮
普通は白はこのように表現するでしょうか。
```css
body{
    color:white;
}
```
これはカラーコードで1文字短縮できます。
```css
body{
    color:#fff;
}
```
黒も同様に`black`から`#000`にでき、`green`も`#0f0`などと短縮できます。単純な色でよく使われるので覚えておくといいでしょう。
やらかし注意！linuxタイポ3選

小ネタです。
数あるlinuxコマンドの中で、タイポミスにより発生しやすい要注意コマンドを紹介します。
## 1. > ファイル名
**発生する事故**：ファイル内容が上書きされ、空ファイルになってしまいます😨
**事故の原因**：シェルの実行コマンド```. ファイル名```を打つ際に誤ってShiftキーを入力していると発生します。シェルの再起動時```. ~/bashrc```は特に注意(sourceコマンドを使用すると安全)です！

## 2. crontab -r
**発生する事故**：crontabの設定内容が全て削除されてしまいます😔
**事故の原因**：crontabを編集しようとして```crontab -e```を打つ際にeとキーボード上で隣り合わせのrを入力してしまうと発生します。使用頻度の高いコマンドではないですが有効な対策もないので注意です！

## 3. hostname hoge
**発生する事故**：[実際にやらかしてしまった人がこちら](https://qiita.com/yonex/items/204a5f41d1b40efe305e)。ホスト名がhogeに書き換わります😱
**事故の原因**：詳細は上の記事を参照してもらうとよい(この記事を共有したくて本記事を書きました)ですが、ホスト名を確認しようとしたときに```hostname```コマンドに何か引数が入力されていると発生します。オプション設定時の```-```の付け忘れには特に注意です！

以上！！！
Google Cloudのプロダクトアイコンを手書きで書く【Compute Engine編】

# 初めまして
株式会社 Panta Rhei CEOのかずです。[Pandasista](https://x.com/sotsogprinciple)というハンネでツイッターをやっています。pandas大好きです。データも好き。

# Qiita Engineer Festaでマラソンを完走したい
[Qiita Engineer Festa](https://qiita.com/official-campaigns/engineer-festa/2024)という素敵なイベントがあります。

その中で<B>投稿マラソン</B>という素敵なコースが！！！
なんと「<B>38記事書けば素敵な景品がもらえる！！</B>」らしいです。

20代も後半に差し掛かり、小生もそれなりに蓄えてきたナレッジがあるはず。

集大成をこのフェスタで還元しよう！
1日1記事！頑張ります。

# Google Cloudのプロダクトアイコンを手書きで書く(Compute Engine編)
さて本題です。
弊社では、データを取り扱うという特性から、クラウド基盤もしっかりモダンなものになっています。
用いている基盤は<B>Google Cloud</B>。弊社がGoogle Cloud for StartupsのAI企業に認定されているため、かなり活用させていただいております。
ストレージからネットワーク、コンピューティングまで、手前味噌ながら素敵なアーキテクチャを実装しています。

そんな関係から、結構な頻度でホワイトボードや紙にGoogleプロダクトの設計図を書くことがあります。

そんなとき「<B>Google Cloudプロダクトのアイコンをそらで描けたらかっこよくないか？</B>」と思いました。

# Google Cloud Compute Engine (GCE)

みんな大好きCompute Engineです。

![ComputeEngineIcon.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/540865/536a32b2-0e91-bfb4-d889-5773d2929a97.png)

今回はこの書き方を共有しようと思います。

もちろん正解はありません。好きなアイコンの書き方発表ドラゴンです。

## 2通りの書き方

早く書くパターンと綺麗に書くパターンがあります。

## 早く書くパターン
<B>特徴</B>
横と縦に飛び出る棒を一本の線で表記します。

また内部の四角形もただの「囗(くにがまえ)」で表記します。

![ComputeEngineIconHowToWrite.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/540865/d7ebb15b-d4fb-1145-daa5-e5c24cd04430.gif)

## 見た目通りに書くパターン

<B>特徴</B>
漢字っぽい書き方が結構出てきます。「┐(折れ)」「└(まがり?)」など。

中心に3つの正方形を書きますが、正方形同士の間隔を同じにしてあげると現物に近い形でアイコンが描けます。

![ComputeEngineIconHowToWrite2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/540865/da9501d6-1bc9-b99f-7436-d12e224370a0.gif)

## どっちを用いるべきか
MTGの時なんかは早く書くパターン、社内勉強会の時は見た目通り書くパターンが良いのではないでしょうか。

# 終わりに
弊社は<B>Google Cloud for StartupsのAIスタートアップに認定されているAI企業です</B>。

有り余る技術力により、世のAI活用課題を解決致します。
クラウド基盤から内製化AI、一気通貫のデータ利活用基盤構築まで、何かお困りごとがありましたらぜひ弊社、
[株式会社 Panta Rhei](https://www.pantarhei.co.jp)にご相談ください！!
PythonでMeCabを試した

# 環境
Windowsに入れているAnacondaの仮想環境
Python3

# やってみた
```
pip install mecab-python3
```
これでインストールした。

そして実行。
```
import MeCab
tagger = MeCab.Tagger("Ochasen")
print(tagger.parse("すもももももももものうち").split())
```
```
['す\udce3', 'す\udce3', 'す\udce3', '\udc96\udcbc\udc8e\udc8c-\udc88\udcea\udc94\udcca', '\udc82\udc82', '\udc83r\udc81[', '\udc82\udc82', '\udc8bL\udc8d\udc86-\udc83A\udc83\udc8b\udc83t\udc83@\udc83x\udc83b\udc83g', '\udce3\udc82', '\udce3\udc82', '\udce3\udc82', '\udc96\udcbc\udc8e\udc8c-\udc88\udcea\udc94\udcca', '\udc82\udce3', '\udc82\udce3', '\udc82\udce3', '\udc96\udcbc\udc8e\udc8c-\udc88\udcea\udc94\udcca', '\udc82\udc82', '\udc83r\udc81[', '\udc82\udc82', '\udc8bL\udc8d\udc86-\udc83A\udc83\udc8b\udc83t\udc83@\udc83x\udc83b\udc83g', '\udce3\udc82', '\udce3\udc82', '\udce3\udc82', '\udc96\udcbc\udc8e\udc8c-\udc88\udcea\udc94\udcca', '\udc82\udce3', '\udc82\udce3', '\udc82\udce3', '\udc96\udcbc\udc8e\udc8c-\udc88\udcea\udc94\udcca', '\udc82\udc82', '\udc83r\udc81[', '\udc82\udc82', '\udc8bL\udc8d\udc86-\udc83A\udc83\udc8b\udc83t\udc83@\udc83x\udc83b\udc83g', '\udce3\udc82', '\udce3\udc82', '\udce3\udc82', '\udc96\udcbc\udc8e\udc8c-\udc88\udcea\udc94\udcca', '\udc82\udce3', '\udc82\udce3', '\udc82\udce3', '\udc96\udcbc\udc8e\udc8c-\udc88\udcea\udc94\udcca', '\udc82\udc82', '\udc83r\udc81[', '\udc82\udc82', '\udc8bL\udc8d\udc86-\udc83A\udc83\udc8b\udc83t\udc83@\udc83x\udc83b\udc83g', '\udce3\udc82', '\udce3\udc82', '\udce3\udc82', '\udc96\udcbc\udc8e\udc8c-\udc88\udcea\udc94\udcca', '\udc82\udce3', '\udc82\udce3', '\udc82\udce3', '\udc96\udcbc\udc8e\udc8c-\udc88\udcea\udc94\udcca', '\udc81\udcae', '\udc81\udcae', '\udc81\udcae', '\udc8bL\udc8d\udc86-\udc88\udcea\udc94\udcca', '\udce3\udc81', '\udce3\udc81', '\udce3\udc81', '\udc96\udcbc\udc8e\udc8c-\udc8cŗL\udc96\udcbc\udc8e\udc8c-\udc91g\udc90D', '\udc86\udce3', '\udc86\udce3', '\udc86\udce3', '\udc8bL\udc8d\udc86-\udc88\udcea\udc94\udcca', '\udc81\udca1', '\udc81\udca1', '\udc81\udca1', '\udc8bL\udc8d\udc86-\udc88\udcea\udc94\udcca', 'EOS']
```
なんか思ってたんと違ーう。

# 修正
ちょっとググったらこれをインストールするって説明を発見。辞書っぽい。
合ってるのかわかんないけど試してみる。（適当）
```
pip install unidic-lite
```
```
tagger = MeCab.Tagger("-Owakati")
print(tagger.parse("すもももももももものうち").split())
```
```
['すもも', 'も', 'もも', 'も', 'もも', 'の', 'うち']
```
おお、これが顧客が求めていたもの。
別の文章も試してみよう。
```
print(tagger.parse("吾輩は猫である。名前はまだない。").split())
```
```
['吾輩', 'は', '猫', 'で', 'ある', '。', '名前', 'は', 'まだ', 'ない', '。']
```
ばっちり出た。
rails rspecメモ(model)

infoモデルのテスト

infoのスキーマ
```
class CreateInfos < ActiveRecord::Migration[7.1]
  def change
    create_table :infos do |t|
      t.string :title, limit: 100
      t.string :heading_text, limit: 1000
      t.string :contents, limit: 1000
      t.date :public_date
      t.integer :public_type
      t.string :pdf_path, limit: 100
      t.string :link, limit: 100
      t.integer :blank

      t.timestamps
    end
  end
end
```

この中からmodelを使う。
```
deploy@ca80ad7856d3:/apps# rails g | grep rspec
  rspec:channel
  rspec:controller
  rspec:feature
  rspec:generator
  rspec:helper
  rspec:install
  rspec:integration
  rspec:job
  rspec:mailbox
  rspec:mailer
  rspec:model
  rspec:request
  rspec:scaffold
  rspec:system
  rspec:view
```


```
rails g rspec:model info
```
結果
```
create  spec/models/info_spec.rb
```
生成ファイル
```
require 'rails_helper'

RSpec.describe Info, type: :model do
    info = Info.new(
      title: "タイトル",
      contents: "おしらせ",
      heading_text: 'ヘッド',
      public_date: '2011-10-10'
    )
    expect(info).to be_valid #userが有効(valid)ならパスする
end
```

factory に手動作成
spec/facotries/info.rb
```
FactoryBot.define do
    factory :info do
        title {'テストタイトル'}
        heading_text {'お知らせ'}
        contents {"お知らせです。\n テスト"}
        public_date {"2024-04-05"}
        # public_type
        # pdf_path, limit: 100
        # link, limit: 100
        # blank
    end
  end
```

実行 
```
rspec spec/models/info_spec.rb

```
データサイエンティスト検定　リテラシーレベル受験記

## はじめに
データサイエンティスト職につき半年がたちました。
知識の定着を確認するため、6月9日にデータサイエンティスト検定（通称DS検定）を受けてきました。
合否の発表は来月ですが、全分野で基準点の80％を超えていたのでおそらく受かってると思います。

この記事では私が行った対策について書いていきます。
これから受験しようと思っている方々の助けとなれば幸いです。
## 試験の概要
どんな試験なのか？といった内容は割愛します。
詳しくは[公式サイト](https://www.datascientist.or.jp/dscertification/)を参照してください。
※第7回から試験範囲が変わり、問題数と試験時間が若干増えました。
- 問題数90問→<b>100問
- 試験時間90分→<b>100分



## 受験対策
### 筆者のステータス
- 情報工学系の学部卒
- 大手学習塾にて教育職の経験あり
- 現在は都内でデータサイエンティスト職に従事

学習塾時代にアルバイトの大学生に数学を教えていたため、今回の試験範囲の数学については特に対策は必要ありませんでした。
また、転職前にITパスポートを所得していたためビジネス分野はほぼ既知の内容でした。

### 使用した教材
- [データサイエンティスト検定 公式リファレンスブック](https://gihyo.jp/book/2024/978-4-297-14130-1) <b>第3版</b>（通称：白本）
    唯一の参考書です。
    これから受験する方は必ず最新版の第3版を買ってください。
    メルカリ等で売られている旧版は第7回から増えた生成AIの範囲が載っていません。
    <br>
- [徹底攻略 データサイエンティスト検定問題集](https://book.impress.co.jp/books/1121101053)(通称：黒本)
    唯一の問題集です。
    アウトプット用に購入しました。

### 勉強方法
試験の2週間前くらいから対策をはじめ、1日1時間ほど勉強していました。
しっかりと測ってはいませんが、試験までの学習時間はおよそ20時間くらいだったと思います。

前半の1週間は白本を読み、知らない単語を検索して知識をインプットしていきました。
後半の1週間は白本巻末の模擬問題や黒本を一通りとき、間違ってた内容について解説や白本を読みなおしました。

## 受けてみた感想
- データサイエンティストとしての基礎知識とマインドを問われる試験
- 問題集の問題が解ければ理解は十分
- 本番の問題の質が微妙（誤字脱字あり、グラフが雑）
- 適切なものを選びなさい。/適切でないものを選びなさい。での読み間違いが命取り。要注意。
- 追加範囲の問題めっちゃ出る
- 見直す時間がわりとある（じっくりと解いても20分以上余った）


## パターン別対策案
色々なバックグラウンドの方がいると思うので、いくつかパターンに分けておすすめの対策方法を提案していきます。
### パターン１　数学が苦手な人
#### 基礎数学の学習→白本→黒本

文系出身であったり、数学が苦手な人は数学の対策から始めることをおすすめします。
数学の対策を勧める理由は以下の2点です。
- 計算問題の出題数が多い
    CBTなので受ける人によって多少変わりますが、私が受けた問題は計算問題がいくつもありました。いずれも難易度は高くないので、しっかりと対策して臨み得点源にすることをおすすめします。
- データサイエンス分野のほぼ全単元で数学の知識が必要
統計や機械学習の分野は、基礎数学の知識がないと理解することが難しいです。

基礎数学の範囲としては
- 高校数学
- 大学1年で習う数学（線形代数（行列）、微積分、確率統計）

このあたりが理解できていれば十分です。

### パターン２　プログラミング未経験の人
#### SQLの学習→白本→黒本
データエンジニアリング分野では、SQLに関する問題が多数出題されます。
その中でも、SELECT文の穴埋めや実行結果を答える問題は、白本を読んだだけのSQLの知識では解くのが困難です。
- [Progate](https://prog-8.com/)
- [SQLZoo](https://www.sqlzoo.net/wiki/SQL_Tutorial/ja)

このあたりのサイトでSQLについて基本文法を学習してから、試験の対策を行うことをおすすめします。

## おわりに
データサイエンティスト検定の受験記でした。
データサイエンティストであるための前提知識を万遍なく習得できるので、これからデータサイエンティストを目指す方は、まずこの資格を習得することを目標としても良いと思います。
markdown AIを使った感想

# はじめに

QiitaEngineerFesta2024のキャンペーンテーマ「[markdown AIを使った記事を投稿しよう！](https://qiita.com/official-events/142fdd0d69ff6bb2d547)」に関する記事です。

# markdown AIとは

[公式ページ](https://mdown.ai/content?id=335b81b2-bcb0-4dbb-83d0-531aa132181f)によると「The world's easiest website creation platform」世界で最も簡単なウェブサイト作成プラットフォームとなっています。


# 感想

- 非常にシンプル
- 機能はまだまだこれから
- AI使ってやってみたい（markdown AIっていうくらいだからね）

# 使い心地

せっかくなので最初からレビューしてみます。

## ログイン

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/934471/b85aba0d-2bb8-76e6-426c-590611f8a287.png)

Googleログインのみなので迷うことはないでしょう。
ある意味この割り切りは好感が持てますね。

![スクリーンショット 2024-06-11 15.59.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/934471/a58aa481-1270-f11b-11db-695e3a5662de.png)

んー、この確認画面はいるかな？
Googleログインしてるので、登録画面を出すのは印象的に良くない気もするが。。まぁ良いか。

![スクリーンショット 2024-06-11 16.02.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/934471/18a0f9d2-455b-a960-4d51-9ff002b22bf3.png)

Register押下けど、、ログイン画面に戻ったｗ
いや、ログインせんのかーい！！ｗｗｗ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/934471/96768f93-56cb-921b-2f9d-f216531f5ccd.png)

もう一度「Continue with Google」を押下ことで無事ログインできました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/934471/d71fb175-a011-22b9-5ea7-80a00a528e6f.png)

## 書いてみる

### テンプレートから作成

「Top-down, you can easily create...」と書いてある部分を押下とテンプレートが右側に表示されました。

![スクリーンショット 2024-06-11 16.21.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/934471/029c3c23-1c19-5db5-f171-29d6672ab959.png)

「View」を押下とプレビューが見れます。

![スクリーンショット 2024-06-11 16.23.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/934471/182bc439-e89f-6e4a-e17a-d068afb57df6.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/934471/d3169864-c690-5b3e-2524-7041dad31305.png)


### URLの発行

:::note info
レンプレートから生成したものはなにかしら内容を変更して「Save」するとURLの発行できるようになります。
:::

![スクリーンショット 2024-06-11 17.07.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/934471/4e6251a4-dbf0-22df-38bc-6685eb9ad7a7.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/934471/fd51019c-b561-fe22-21e1-4ed69af1252b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/934471/c31c7bd4-4105-d5a9-36d8-d49fa7351014.png)

公開されたURLをコピーして表示。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/934471/88332fe8-a500-1504-f8ec-acb1382847ae.png)


### マークダウンファイルの削除

右側の「Del」から選択中のマークダウンファイルを削除できるようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/934471/3ba8a93c-706d-f0a2-9cc1-505cf72e2544.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/934471/fba9b8ed-7781-c2e0-05f2-61785b105395.png)

# まとめ

MarkdownAI簡単でしたね。
正直、現段階では物足りなさがありますが、今後色々と追加されていく予定のようなので楽しみにしています。

あとテンプレートがあるのは良いですね。markdownは日頃から使っているけど、全てを覚えているわけではないのでテンプレとしていくつか用意できると入力も楽だからいいなぁと思いました。この辺AIでいい感じにしてくれると助かるんだけどなぁ〜
「今書いたやつをテンプレ化して保存しておいて」とか。


:::note warn
この記事は個人の見解であり所属する組織を代表しません。
:::
vue3のscriptタグ内のメソッドを、外部のtsファイルに定義して呼び出す！

# 挨拶
こんにちは！
今回がQiita初投稿になります💦
暖かい目で閲覧いただけると幸いです。

# この記事でやっていること
Vue3でscriptタグにメソッドを書いているとコードが長くなり読みづらいので、外部のファイルから呼び出し、scriptタグ内のコードを簡潔にすることが目的です。
axiosでバックエンドに接続するAPIを外部ファイルに定義しています！

# axiosとは
[vue.jsを使ってaxiosを学ぶ] (https://reffect.co.jp/vue/vue-axios-learn) にて以下のように説明されています。
> axiosはPromiseベースのHTTP ClientライブラリでGETやPOSTのHTTPリクエストを使ってサーバからデータの取得、サーバへのデータ送信を通してデータの追加、更新、削除を行うことができます。

# 改善前のコード
``` TaskIndex.vue
<script setup lang="ts">
import axios from "axios";
import { onMounted, ref } from "vue";
import { useRouter } from "vue-router";

const router = useRouter()
const tasks = ref<object>({})

onMounted(() => {
  getTasks()
})

// タスクの一覧を取得
const getTasks = () => {
  axios.get('http://localhost:8080/tasks')
  .then(function (response) {
    tasks.value = response.data.datas;
  })
  .catch(function (error) {
    console.log(error);
  })
}
</script>
```

# 改善後のコード
``` TaskIndex.vue
<script setup lang="ts">
import { onMounted, ref } from "vue";
import { useRouter } from "vue-router";
import {getTasks, deleteTask} from "../../api/TaskApi/";

const router = useRouter()
const tasks = ref<object>({})

onMounted(async () => {
  tasks.value = await getTasks();
})
</script>
``` 
``` TaskApi.ts
import axios from "axios";
import { ref } from "vue";

const data = ref<object>({})

// タスクの一覧を取得
export const getTasks = async () => {
  await axios.get('http://localhost:8080/tasks')
  .then(function (response) {
    data.value = response.data.datas;
  })
  .catch(function (error) {
    console.log(error);
  })

  return data.value
}
```

+ tsファイルで定義したメソッド名の前に`export`をつけてあげると、他のファイルでも呼び出すことができます
+ バックエンドから取得した値は`data`に入っているので、その値を戻り値として呼び出し元の値に返します

# おわりに
今回の改修でメソッドをtsファイルに書き分けたことで

+ コードの記述量が減らせる
+ 他のファイルでも簡単にメソッドを呼び出せる
などのメリットがあると分かりました。

複数の箇所で呼び出されるメソッドに関しては、積極的に共通化して読みやすいコードになるよう心がけたいと思います！

# 参考文献
https://reffect.co.jp/vue/vue-axios-learn

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/export

https://zenn.dev/rionishino/articles/c148c22bd36146
Gitのrebaseとcherry-pick：基礎とベストプラクティス

Gitを使っていると、複雑なブランチ構造やコードの統合に直面することが多々あります。その際、rebaseとcherry-pickは非常に便利なコマンドです。しかし、これらを誤って使用すると、履歴が複雑になったり、他の開発者に迷惑をかける可能性があります。本記事では、rebaseとcherry-pickの基本から、どのように使用すれば効果的かを解説します。
Git rebaseの基礎
rebaseとは？
rebaseは、あるブランチのコミット履歴を他のブランチの先頭に持ってくる操作です。mergeとは異なり、rebaseは新しい履歴を作成し、ブランチの歴史を「きれい」にします。
基本的な使い方
1. ## 他のブランチの変更を取り込む
```
git checkout feature-branch

git rebase master
```
上記のコマンドは、feature-branchにmasterの変更を取り込むことを意味します。

2. ## インタラクティブなrebase
```
git rebase -i HEAD~3
```
これにより、直近の3つのコミットを再配置または編集するインタラクティブなモードが開きます。

rebaseのベストプラクティス
rebaseは自分のブランチに対してのみ行う
他の開発者が共有しているブランチに対してrebaseを行うと、履歴が変更され、混乱を招く可能性があります。自分の作業ブランチに対してのみ行いましょう。

rebaseはマージする前に行う
ブランチをマージする前にrebaseを行うことで、マージ時に生じるコンフリクトを減らし、履歴を整理できます。

頻繁にrebaseを使用しない
履歴の改変が多すぎると、何が変更されたのかを追跡するのが困難になります。必要な場合にのみ使用しましょう。

rebaseの利点
履歴をクリーンに保つ
mergeとは異なり、不要なマージコミットを作成せず、履歴を一本化できます。

コードベースの一貫性
一貫性のある履歴を保つことで、どの変更がどのブランチで行われたかが明確になります。

Git cherry-pickの基礎
cherry-pickとは？
cherry-pickは、特定のコミットを他のブランチに適用する操作です。これにより、必要な変更だけを選んで別のブランチに取り込むことができます。

基本的な使い方
1 ## 特定のコミットを適用する
```
git checkout feature-branch
git cherry-pick <commit-hash>
```

これにより、指定したコミット（<commit-hash>）がfeature-branchに適用されます。

2 ## 複数のコミットを適用する
```
git cherry-pick <commit-hash-1> <commit-hash-2>
```

複数のコミットを一度に適用することも可能です。

cherry-pickのベストプラクティス
明確なコミットメッセージを使用する
cherry-pickしたコミットがどのブランチから来たのか、何を意図しているのかを明確にするために、コミットメッセージにその旨を記載しましょう。

コンフリクトの解決を慎重に行う
cherry-pickではコンフリクトが発生することがあります。その場合、コンフリクトを慎重に解決し、履歴を汚さないように注意しましょう。

履歴を混乱させないようにする
過度にcherry-pickを使用すると、履歴が複雑化し、追跡が困難になります。必要な変更だけを選んで使用しましょう。

cherry-pickの利点
特定の変更を柔軟に取り込む
大規模な変更を避け、特定のコミットだけを必要なブランチに反映できます。

コードの一貫性を保つ
他のブランチから必要な変更だけを取り込むことで、コードベースの一貫性を保つことができます。

まとめ
Gitのrebaseとcherry-pickは、効果的に使用すれば、履歴を整理し、コードの一貫性を保つために非常に強力なツールです。しかし、誤って使用すると履歴が複雑化し、他の開発者に影響を与える可能性もあります。ここで紹介したベストプラクティスを守りながら、これらのコマンドを活用して、効率的なブランチ管理とコード統合を実現してください。

関連コマンドのリスト
git rebase: ブランチの履歴を再配置する。

```
git checkout feature-branch
git rebase master
```

git cherry-pick: 特定のコミットを他のブランチに適用する。

```
git checkout feature-branch
git cherry-pick <commit-hash>
```
参考リンク
[https://git-scm.com/doc] Gitの公式ドキュメント
gawkは便利

私はawkを書けませんがgawkは多用していました。
特に下記コマンドは毎日打っていた気がします。


```hoge.txt
リンゴ
ゴリラ
ラッパ
```
たったこのコマンドだけで、フォルダーを一括で作れます。
```
gawk '{print "mkdir "$1}' hoge.txt | csh
```




hoge.txtの行分フォルダーを作っていますが、ファイルの仕分けにも使えたりします。
レガシー的な技術ですが、便利なのは変わりないです。
自前のPCはWindowsなのでUbuntu入れてたまに使います。
HRBrain QAチームの「今」

# はじめに
こんにちは、HRBrainでQAエンジニアをしているhh（@hh_hrb）です。
そろそろ入社して1年半ほど経ちますが、入社当時と比べて随分QAチームが変わってきたなと感じています。
2年前（私が入社する少し前）までは1人体制だったそうで、そこから2名・3名と増えていき、今ではチームとして活動の幅を広げられるまでに成長しました。

そこで今回は、爆速で成長している弊社QAチームの「今」を皆さんにお伝えできればと思います。

# QAチーム（QAエンジニア）の現体制
弊社QAエンジニアは大きく二つの軸に分けて活動しています。
ひとつはプロダクトチームに所属しプロダクト自体の品質向上を担うこと、もうひとつはQAチームとして横ぐしで全体の品質改善・向上を行うことです。

### プロダクト品質向上のためのQA
現在、QAエンジニアはプロダクトチームにそれぞれ所属する形で活動をしております。
各チームに1~3名程度のQAエンジニアが所属し、一連の品質保証業務（※）を担当しています。

![スクリーンショット 2024-06-05 21.33.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032267/6e12786e-07ea-369c-90d8-538f081e6531.png)

上記１チームで動くため、全体のプロセスやどんな経緯で作られたのかを把握しやすい状況になっています。
そのため、機能以外に「ユーザーが使いやすいものか」などのUX確認、リリースに至るまでのプロセスやテストフローの改善などテスト業務以外でも幅広く活躍しています。

<br/>

> （※）一連の品質保証業務イメージ
> ![スクリーンショット 2024-06-05 21.55.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032267/314e6059-4d1f-22c1-29d3-e820cca9f50c.png)
> おおよそ1~2週間単位のスプリントサイクルで実施

### 横断的な全体品質向上のためのQA
各プロダクトチームでの活動と合わせて、QAチームとしても横断的に品質向上活動を行っています。

プロダクトチーム内のみの活動になると以下が起こりやすくなり、テスト工程をはじめとした全体の品質向上が行えない状態に陥ると考えています。
- 所属しているQAエンジニアのスキルに寄ってしまいプロダクト間での品質のばらつきや属人化が生じやすい
- テスト自動化の促進やテスト観点の最適化、効率化への取り組みが限定的かつ鈍化しやすくなる

これらを細分化し一つずつ解決していくことで、QAとして「より早く、持続的にユーザーに届ける」ことへ貢献できると思っています。
では実際に、どんなことに取り組んでいるのかについては以下に記載します。


# 現在取り組んでいる施策
フロー改善、不具合分析など取り組んでいきたい課題はたくさんありますが、現在は大きく以下3点に絞って施策を打っています。

### テスト自動化
プロダクト数の増加、機能追加などから手動回帰テストの負荷が倍増しているため、回帰テストの工数削減の対策としてテスト自動化の推進を行なっています。

各々が好きなスタイルでシナリオ作成してしまうとそれこそ属人化してしまうので、
ある程度の運用ルール（シナリオ作成ルールやデータ初期化方法の明記など）を自分達で設け、そこから少しずつシナリオ数を増やしています。

### テスト観点の標準化
担当者それぞれの経験に頼っている形がほとんどのため、テストの網羅性や観点の均一化を目指しテスト標準観点の作成を行なっております。

一般的な観点＋αで弊社固有の観点を厚めにもったオリジナルなものを作り、日々ブラッシュアップしていける体制を目指しています。
もちろん、プロダクトの特性によって見るべき観点は異なりますが、観点を標準化することで属人的な観点がなくなり誰でも一定品質のテスト設計が行えるようになる（＝テスト品質の向上と属人化抑止）と考えています。

また、QAだけで完結せずに標準観点をエンジニア側に伝達していくことで上流から不具合の作り込み抑止へつなげていけるのではと密かに思っています。

### 文書のインスペクション
アジャイル開発では仕様書などの粒度が荒くなりがち（QAも含め）なので、認識の齟齬や仕様上の不整合などが発生しないよう、開発仕様書やテスト仕様書などの文書をインスペクションしていこうとしています。

開発の早い段階でQAが参画し、パターンの精緻化、不整合の指摘などを行い不具合の作り込みを防ぐような取り組みを行っています。
また、QA同士での観点やケースの抜け漏れがないかなどのレビュー体制についても取り組んでいく予定です。


<br/>

![スクリーンショット 2024-06-05 23.10.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032267/98135018-5953-a66e-4370-3a2adfed882a.png)



# QAを取り巻く環境
QAチームとしても、プロダクトチームとしても積極的に活動しているんだなというのはお伝えできたかと思います。
では、なぜここまで私たちがプロダクトに寄り添い、多岐に渡って活動できているのかというと、「品質保証業務を推進しやすい環境」であるからの一言に尽きます。

プロダクトチームの一員であるからこそキャッチアップや提案がしやすいですし、チーム全員がテストや品質に対して意識を向けてくれています。
加えて組織文化によるものも大きく、掲げているvalueの通り、自分達で課題発掘、施策考案し取り組んでいくことが可能かつ、その取り組みに対して後押しや協力をしてくれる環境となっています。

この環境だからこそ、この1年半の間で品質改善・向上に係る取り組みをスピード感を持って進められていると実感していますし、これからも取り組んでいけるものと考えています。


★value = Intensity、Take Ownership、Power to the Team

![スクリーンショット 2024-06-05 23.36.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032267/356c39e7-0859-e8a7-5097-276372066dba.png)



# おわりに
今回はQAチームの「今」についてお伝いたしました。
私たちはテストだけではなく「プロダクトの品質」や「組織の品質」を向上するための活動をこれからもしていきたいと思っています。まだまだやりたいことがたくさんありますので、この記事を読んでHRBrainのQAに興味を持っていただけたらぜひご応募ください！！！

なお、この先に目指している「未来」についても、後日別メンバーが記事にしますのでお楽しみに〜！

https://www.hrbrain.co.jp/recruit

https://hrmos.co/pages/hrbrain/jobs/2110240
新入社員研修について

## はじめに

新入社員研修を受けています。
研修内容と感想を書きます。

## 内容
・フェルミ推定の理解と実践
・世界の動向を知る
・役割について
・非同期ツール
・開発言語の人気ランキング
・Python実践
・AIツールについて
・chatGPT
・GitHab

## 感想
私は、プログラミングをしたことがないのでどれも難しく感じました。


### 言語人気ランキング
　１．JavaScript
　２．HTML/CSS
　３．Python
 
開発言語の人気言語ランキングを知ることができたので、これから
挑戦する際は参考にします。

### chatGPT
chatGPTを初めて使いました。
様々な検索ができることを知りました。
## 今後について
仕事を円滑に進めるために、活用していきたいです。
【SwiftUI】@State を 単方向に流す ということ

SwiftUI での基本的なこれ。

![sc 2024-06-11 at 16.50.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588914/016794a5-656b-0410-ecd1-050c7d849a96.png)

```swift
@State var text = ""

TextField("text", text: $text)
```

一方、Android JetpackCompose では、単方向にデータを流します。

「View では複雑なことをせず、受け取った値を表示して終わり」

という これが JetpackCompose のポリシーの中心となっています。

https://developer.android.com/develop/ui/compose/architecture

というかんじで、単方向に流す。

![sc 2024-06-11 at 16.51.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588914/1ef85240-5e05-fa6c-974c-46ec47a6d9ea.png)

```swift
var stateHolder = StateHolder()

TextField("text", text: Binding(
  get: { stateHolder.text },
  set: { newValue in stateHolder.text = newValue })
)
```

みんなはどう思いますか。

どちらが、作りやすくて、運用や改修をしやすいですか。

そもそも、

「View に State を持つこと」がどうなのか

という話にもなるが。

# 🧑🏻‍💻 引用

https://android.benigumo.com/20240407/binding-1/

https://android.benigumo.com/20240408/binding-2/

https://android.benigumo.com/20220929/you-dont-need-android-viewmodel/
Amazon Lookout for Visionの精度検証：位置ずれ・明るさとコントラスト変更・オリジナル画像の比較

## はじめに
Amazon Lookout for Visionで簡単に異常検知ができた。

https://qiita.com/takekappa/items/5d85bd5a5b341e9a13f1

MVTecのデータセットは固定の画角、構図、明るさで撮影されている。
位置ずれや明るさ、コントラストなどが異なる画像の場合、Amazon Lookout for Visionでどれくらい検出精度が変化するか試してみる。

- 学習画像はMVTecのscrewより20枚を使用
- これをオリジナル画像とする
![グラフィックス24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233734/325dd68a-40e2-b0e7-cbe9-4319e0cfb514.png)

- 検証画像にはMVTecのscrewのtestフォルダより異常の画像10枚、正常の画像10枚を抽出して使用

## 画像の準備

### 位置ずれ画像の準備
元画像（1024×1024）を800×800でランダムクロップした後、1024×1024にリサイズ。
```random_crop.py
import os
import glob
import torch
import torchvision
import torchvision.transforms as transforms
import cv2

#変換を定義
transform = transforms.Compose([
    transforms.ToPILImage(),
    transforms.RandomCrop(size = 800)
])

output_dir = './mvtec/screw/train/good_crop/'
os.makedirs(output_dir, exist_ok=True)
# 対象のファイルのリストを取得
files = glob.glob('./mvtec/screw/train/good/*')
for file in files:
    # OpenCVを使って画像を読み込む
    img = cv2.imread(file)
    #BGRをRGBに変換
    img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    trans_img = transform(img_rgb)
    trans_img = trans_img.resize((1024, 1024))
    fname = os.path.basename(file)
    trans_img.save(f'{output_dir}/{fname}')
```
学習用データセット（テスト用データセットはオリジナル画像のまま）

![グラフィックス22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233734/56f9ae92-7d62-01a2-8ce9-1019799b2213.png)


### 明るさ・コントラスト変更画像の準備
オリジナル画像の明るさとコントラストをランダムに変更
```random_bright_contrast.py
import os
import glob
import torch
import torchvision
import torchvision.transforms as transforms
import cv2

#変換を定義
transform = transforms.Compose([
    transforms.ToPILImage(),
    transforms.ColorJitter(brightness=0.3, contrast=0.5)
])

output_dir = './mvtec/screw/train/good_bright/'
os.makedirs(output_dir, exist_ok=True)
# 対象のファイルのリスト
files = glob.glob('./mvtec/screw/train/good/*')
for file in files:
    # OpenCVを使って画像を読み込む
    img = cv2.imread(file)
    #BGRをRGBに変換
    img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    trans_img = transform(img_rgb)
    fname = os.path.basename(file)
    trans_img.save(f'{output_dir}/{fname}')
```
学習用データセット（テスト用データセットはオリジナル画像のまま）

![グラフィックス23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233734/b992a89e-1e77-643e-bf58-438ed7f28495.png)

## Amazon Lookout for Visionでそれぞれ学習
### オリジナル画像の場合

![グラフィックス20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233734/daee0287-0a12-ad9e-2139-94d9fec92885.png)

### 位置ずれ画像の場合
元データに比べ精度が30％ほど低下。

![グラフィックス25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233734/6b70644d-8bde-0bd1-bb91-eca1f95510bb.png)


### 明るさとコントラスト変更画像の場合
位置ずれと全く同じ結果が得られた。

![グラフィックス26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233734/bdcf84ee-1b13-27bf-a5db-3f5fcc5a2280.png)


## まとめ
Amazon Lookout for Visionでは位置ずれ、明るさとコントラスト変更のいずれも精度が低下した。
Amazon Lookout for Visionを効果的に使用するには少なくとも以下のような条件を満たす画像データを取得するのが良さそう。
- 検知対象が真ん中に映っている
- 明るさやコントラストの条件が一定である
Non-Designer's Design Book覚書

# 四大原則
デザインを良くするには4つの基本となる原則が存在します。基本的に以下の4つを守れば割といいデザインになるはず。
### 原則一：Proximity
+ **情報的に関連する要素** 同士は近接させる。行間の距離を縮める、色を近似して見出しと競合させないようにする、インデントを使用するなど。また、段落、行間の間隔は適度に調整するべき
+ 目を細めてデザイン全体で3~5回目線が止まった場合 **グループ化** するべき。集団から独立した要素は極力排除
### 原則二：Alignment
+ 見える線は窮屈に感じる為、**見えない線** を使って要素を整列する
+ 中央揃えを使う時は **静粛で、フォーマルな時** のみ。それでも、ブロックごとずらしてデザインに活かすなどの使い方がある
+ 基本的に一方向の整列を適用するが、場合によっては二方向の整列を適用してもよい。しかし、その時もブロック全体の右端で揃えるなど、工夫が必要
+ 中央揃えの見出しを左揃えやインデント付きの本文の上に配置してはいけない。**中央が分かりづらい** ため、適当に配置しているように見える
+ 画像を使う時は **文字ブロックの縁かベースライン** の何れかに揃える
+ インデントを使用する際は **em単位** で制定する
+ 不整形な余白はなるべく隣に要素を配置しない。要素の順番を入れ替えるなどの工夫が求められる
+ 時には原則を破ってもよいが、**意識的に、大胆に** 行う必要がある。（型破りには型への理解がまず求められる）

### 原則三：Repetition
+ フォント、罫線、ビュレットの種類問わず、**デザインを反復** して使用する。言われなくても既にしているかもしれないが、今までより意識的に、深く行い、デザインを一つに纏める必要がある
+ デザインを反復して使用すると一貫性が保たれる。それは *Nielson's ten Heuristics* や *Shneiderman's eight golden rules* に登場する *Consistency* の考えた方に似ている
+ Alignmentと同じく、強調したいものがある時には原則を破ってもよい
+ **似たようなモチーフ** であれば全く同じものである必要がない時もある。（丸と二重丸、同じ絵柄のイラストなど）
+ 既存のレイアウトや内容から着想を得たデザインを組み込むことで概念自体を反復でき、統一感が生まれる。また要素の一部分のみを反復してもよい（ロゴの一部分だけをチント化して背景に配置するなど）
+ デザインの始めと終わりで似たデザインを繰り返すことで、**視線をデザインの中に閉じ込める** ことができる。（ヘッダーとフッターに罫線など）
### 原則四：Contrast
+ コントラストは **大胆に** 適用するべき。**フォント** や **シェイプ** 、**テクスチャ** 、**余白** など様々な場所に使える
+ 視線誘導の要となるので、最初に読ませたいものから順に強いコントラストを使う
# 色彩
四大原則の基礎がある今、色彩の選定も慎重に行うべきです。以下に様々な色に関する知識を叙します。
### 原色、二次色、三次色
イッテンの12色環と同じです。
<img width="200px" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3288129/254ca22f-d5b6-58de-c90b-88ec0015568a.jpeg">

+ 原色：赤青黄の3色
+ 二次色：隣あう原色を組み合わせてできた3色
+ 三次色：隣り合う原色と二次色を組み合わせできた6色

### 補色
多分みんな知ってるやつ。色環のちょうど間反対にあるやつです。
### トライアド
色環上で丁度180度離れてる色同士です。赤青黄、橙緑紫などがあります。
### スプリット・コンプリメント
補色の隣二色です。黄紫紺、緑紫赤橙などがあります。
### 類似色
多分みんな知ってるやつ。隣り合っている色を2~3色選んで使います。
### シェードとチント
オットー・ルンゲの色の球体と同じです。
ヒュー(純粋な色)に白を加えるとチント、黒を加えるとシェードになります。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3288129/0a460e43-21cd-fd09-7f4f-aa19090c2b6c.png)
### トーン
ヒューがどれほどチント、シェードの影響を受けているかを表す言葉です。トーンが近ければ近いほどコントラストが落ち、識別しづらくなります。
### 寒色と暖色
寒色は暖色に比べて目立たないため、比較的多量に使えます。逆に言えば暖色は目を引くため、使うタイミングは選びましょう。
新入社員教育に向けて

## はじめに

株式会社オーイーシーの新入社員教育を受けました。

今日受けた教育の内容と感想を記事として投稿します。

## 教育の内容
- フェルミ推定
- 10年後の役割(自分の)
- 技術者の役割
  - フルスタックエンジニア
- 開発言語人気ランキング
  SQL,javascript,
- 開発言語毎の平均年収
  - 需要があり、習得者が少ない⇒高収入
  - 需要があり、習得者が多い⇒低収入
- Python
  - 特徴…書きやすくて読みやすい
- AI活用
  - ChatGPT
- 開発環境 
  - VSCode
  - Git...リモートからローカルにリポジトリーをクローンして各人が作業する
 (プロキシ設定)
 (VSCodo拡張機能)
- GitHub
  クラウド上でバージョン管理ができる
  (lssue登録)
  (ブランチ作成)
  (コミット、プッシュ)
  
  
 
  ## 感想
今日は、体験したことがない研修内容が多く、自分自身のスキルupに繋がる機会となりました。これから配属先に移動した際もChatGPTを活用するなど今日学んだことを活かし、業務に役立てていきたいと思っております。
これからも会社の一員として貢献していけるよう精進して参ります。
Goのpackageでつまづいた

## やりたかったこと
main.goにながーく書いてある状態から、このようなディレクトリ構成にしたいと考えた。
```
repository
├── cmd
│   ├── main.go
│   └── main_test.go
├── internal
│   └── hoge.go
└── go.mod
```
```go.mod
module github.com/hoge/repository

go 1.22.3
```
```main.go
package main

import (
    "fmt"
    "github.com/hoge/repository/internal"
)
// 以下略
```
このような構成に変えたあとgo mod tidyしたらエラーが出た。

## 原因
デフォでmainブランチ(作業しているのとは別)から取得しているので、packageが見つからないらしい。

## 解決策
そもそも、流用ができなさそうなファイルだったので、ローカルで参照すればいいと考えた。
まず、go mod init repositoryで変える。
```go.mod
module repository

go 1.22.3

```
次に、importを変える。
```main.go
package main

import (
    "fmt"
    "repository/internal"
)
// 以下略
```
これでできるようになった。
## おわりに
この結論にたどりつくまでに中々時間を使ったので、自力でたどり着けてちょっと嬉しかったです。
Deno の import maps で npm パッケージの接頭辞マッピングをする

## 概要

Deno では `npm:` 形式の URL により npm モジュールを読み込むことができます。このモジュールの指定は import maps でも用いることができる一方、接頭辞マッピング (`package/...` を `npm:package/...` にマッピングする) を行うためには URL の形式に注意が必要です。

### 結論

理由は後述しますが、`npm:/` に続く形 (例: `npm:react` ではなく `npm:/react`) でモジュールを指定することで接頭辞マッピングを行うことができます。

```json
{
  "imports": {
    "module/": "npm:/module/",
    "another-module/": "npm:/@someone/another-module@1.0.0/"
  }
}
```

## Deno での npm パッケージの読み込み

Deno は npm パッケージの読み込みに対応しており、パッケージを `npm:` URL で指定します。例えば

```javascript
import { React } from 'npm:react@18.3.1';
```

とすれば React を読み込めます。

https://docs.deno.com/runtime/manual/node/npm_specifiers

## import maps の接頭辞マッピング

[MDN のページ](https://developer.mozilla.org/ja/docs/Web/HTML/Element/script/type/importmap) より具体例を引用しますが、import maps は key と value の両方を `/` で終えることで接頭辞マッピングが可能です。

```json
{
  "imports": {
    "square": "./module/shapes/square.js",
    "circle": "https://example.com/shapes/circle.js",
    "shapes/": "./module/shapes/",
    "othershapes/": "https://example.com/modules/shapes/"
  }
}
```

```javascript
import 'square';
import 'cicle';
import 'shapes/foo.js';
import 'othershapes/bar.js';
```

## Deno の import maps での接頭辞マッピング

この接頭辞マッピングは Deno の import maps でも利用可能です。ただし、`npm:` URL に関しては以下のような接頭辞マッピングを行うとエラーが発生します。

```json
{
  "imports": {
    "module/": "npm:module/"
  }
}
```

```
error: Failed to resolve the specifier ""module/foo.js"" as its after-prefix
            portion ""foo.js"" could not be URL-parsed relative to the URL prefix
            "npm:module/" mapped to by the prefix "module/"
    at ...
```

これは次のように `npm:/` に続く形にすることで修正可能です。

```json
{
  "imports": {
    "module/": "npm:/module/"
  }
}
```

なお、通常のインポートで `npm:module/foo.js` は許可されます。

## 理由

これは `npm` スキームの URL のパース方法がインポートの解決時と import maps の解決時で異なるためです (何で？)。前述の[公式ドキュメント](https://docs.deno.com/runtime/manual/node/npm_specifiers) には `npm` URL の文法が定義されています。

```
npm:<package-name>[@<version-requirement>][/<binary-name>]
```

一方 URL の仕様である [RFC 1630](https://datatracker.ietf.org/doc/html/rfc1630) の定義では `<scheme>:<path>` のように定められており、`<path>` の部分は `<scheme>` によって変わります (`/` がセパレータであることだけが定められています)。

ソースを見ていないので推測ですが、Deno が import maps を解決する際には `<path>` の部分をいわゆる `path.resolve` のように解決しているため `/` で始まらないときに有効なパスと認識されていないと考えられます。
新入社員教育を受けて

## はじめに　

株式会社オーイーシーは新入社員教育を受けています。

今日受けた教育の内容と感想を記事としてまとめておきます。

## 推定する力
フェルミ推定を用いて、推定する力について学びました。
限られた時間の中で、根拠を持って自分の考えを持つことの重要性を感じました。
今後、期限や納期に追われるなかで、推定する力を磨いていきたいです。


## 役割
10年後の自身の役割について考えました。
社会の中では様々な役割がありますが、自分にしかできない役割を今後見つけていきたいと感じました。
現段階では、大分県の自治体を支え、頼られ、繋がりを生むエンジニアになりたいです。

## 開発言語
現在、様々な開発言語があり、時代とともに進化していることが分かりました。
私はまだJavaしか学習したことがないので、基本的な言語は今後学んでいきたいです。
Pythonはzen（禅）という考えのもと、書きやすく綺麗に設計されていることを知りました。

## AI
初めてchatGPTを使いました。
チャット形式で検索できるだけではなく、機能を作れることに驚きました。
私生活でも使っていきたいです。

## 開発ツール
VScode、Git、Cloudflareについて学びました。

## 感想
今回の研修では、今後の業務で重要になってくる部分と、技術面の内容でした。
特に、エンジニアのコミュニティが多くあることに驚きました。
自分自身で知識や技術を蓄積するのではなく、他人と共有することで、良い相乗効果が生まれることを
学びました。それを、会社や社会の為に生かせる人物になっていきたいです。
新入社員教育を受けて

## はじめに

株式会社オーイーシーの新入社員研修を受けています。

本日受けた教育の内容と感想を記事としてまとめておきます。

##  学習内容

1.技術者の役割

開発者の中で、フルスタックエンジニアが33%を占めます。
フルスタックエンジニア・・・バックエンドからフロントエンド、インフラなど全てを行えるエンジニア


2.多様な開発言語

- 人気ランキング
    1.JavaScript
    2.HTML/CSS
    3.Python

-  称賛ランキング
    1.Rust
    2.Elixir
    3.Zig


3.AI活用

- AIの活用のメリット
  * 生産性向上
  * コーディング

- ChatGPTは検索において希望と称賛でトップ
- GitHub Copilotは開発において希望と称賛でトップ


4.開発環境

- VSCodeは総合開発環境として73.31％でトップ

- Gitは分散型バージョンツール


5.開発体験

-  Webフレームワーク　希望と称賛
Phoenix(称賛82％) 圧勝

- クラウドプラットフォーム
AWS(49%でトップ)

- クラウドプラットフォーム　希望と称賛
Cloudflare(称賛66%) 期待株
AWS(希望44%) 圧勝

##  感想

10年後の自分を考えることは難しかったです。
配属後は、身近な先輩社員方を見て、自分の将来像を明確にしたいと思いました。

ChatGPTは無料版のみしか使ったことがなかったので、想像以上に様々なことができることに驚きました。

VSCodeを初めて使用しましたが、様々な拡張機能を使ってみたいと思いました。
また、GitHubでは研修中に使用したGitと似ていましたが、理解不足な点も多く、さらに詳しく勉強したいと思います。

自分の適性を見極めるため、一つに限らず色々な分野に挑戦してみたいと思います。
また、色んな言語やツールに挑戦して、その場に応じて使い分けができるようになりたいと思いました。
2024年6月11日、新人研修の感想

## 1. はじめに

本日、株式会社オーイーシーの新入社員研修を受けています。
担当講師は、当社エンジニアDX推進部の若林諒さんです。
当社の中でトップのエンジニアと人事から紹介を受け、楽しみにしていました。
今日受けた研修の内容と、感想を記事に残しておきます。


### 2. 目次
[1.はじめに](#1-はじめに)
[2.目次](#2-目次)
[3.１０年後の役割を具体的に考える](#3-１０年後の役割を具体的に考える)
[4.開発言語について](#4-開発言語について)
[5.AI活用](#5-AI活用)
[6.開発環境](#6-④開発環境)
[7.開発体験](#7-開発体験)
[8.今日の教育に関する感想](#8-今日の教育に関する感想)


# 3.10年後の役割を具体的に考える
開発エンジニアのうち、７０％の人が趣味でコーディング！！！
多いだろうという予想をしていましたが、まさか半数を超えているとは思いませんでした。（回答している人が意識の高いエンジニアであるという前提が大きな理由だと思う・・・）

私もエンジニアとして仕事をしていきたいので、趣味感覚で休日にできるように勉強していきたいと感じました。

# 4.開発言語について
人気言語ランキングとして
１位JavaScript
２位HTML/CSS
３位Python

# 5.AI活用
ChatGPTについて
今回私は初めてChatGPTを利用してみました。
大学時代の先輩や同期が利用していたのは知っていましたが、きっかけがなく気になったままでした。
「大分県の架空のマスコットキャラクターの生成」、「ログインページのコード作成」をしてみました。
コードに関しては、実装中にエラーが出たときのデバッグ用にいいなと感じました。
![スクリーンショット 2024-06-11 161022.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3813222/db9fc6c9-a1c6-bea9-9b3b-7f6108b01722.png)

実際に利用してみたときの画面ですが、こんなに沢山出してくれるとは思わず、今後の活用が楽しみになりました！
    
# 6.開発環境
VSCode、GitHub
正直まだまだよくわからなかったでず:frowning2:

# 7.開発体験
研修受講者全員にアクセスしたためか、ログインできずに終わったりしたので、よくわからないままですが、今後使うことがあれば聞いたりしながら覚えていきたいです。

# 8.今日の教育に関する感想
１０年後どんな役割を持ったエンジニアになっていくのかという理想像を、具体的に考えることができました。
HTML/CSS/JavaScript/Pythonをできるようにすることという、具体的な目標を立てることができました。
今回、難しくて環境構築の部分はついていくことができなかった部分もありますが今後はついていくことが出いるようになっていきたいと感じました。
新入社員教育を受けて

## はじめに

本日、株式会社オーイーシーの新入社員研修の一環で、
__DX推進部 DXデザイングループ 若林 諒 さん__ の新入社員教育を受けました。

本日の内容を本記事にまとめようと思います。

## 技術者の役割

技術者の33％はフルスタックエンジニアで最も多く、

バックエンドだけ、フロントエンドだけ、インフラだけ、

という区別はなくなってきているのが現状とのことです。

私の理想は

多分野で活躍できる __オールラウンダー__ なエンジニア

なため、フルスタックエンジニアを目指して、
かつ多分野の知識を持てるように努力していきたいと考えます。

## 開発言語 ~Python~

冒頭のアンケートで、新入社員23名のうち半数以上はPythonができるとわかりました。

初学者の方で手が上がった人もおり、人気言語であることがうかがえます。

世界的にランキングを見ると

### 開発言語人気ランキング

1. JavaScript
1. HTML/CSS
1. Python

世界的にも有名な言語であることがわかりました。


個人的には、

「Java言語が難しいが、身に着けておくと今後絶対役に立つ」

そう聞いたことがあったこと、研修でもJavaを学習したことから上位だろうと思っていたのですが、7位と考えていたより下でした。


#### 最も称賛されている言語

1. RUST
1. Elixir
1. Zig

RUSTは高速かつ安全で、人気が高くなってきている言語とのことです。

RUSTができるというだけで一目置かれることもあるとか...

学習してみたいです。


#### 開発言語別平均年収

需要があっても習得者が多ければ価値は低くなり低年収になります。

逆に、需要が高く、習得者が少ない言語は高年収になります。

Zig開発者の平均年収は 
PHP開発者の __1.76倍__ にもなるとか。

需要も大事ですが、希少性も重要なのだと実感しました。


#### Python実践

ここで __Google Colaboratory__ を用いて実際にPythonを動かしてみました。

Pythonを触ったことがあったので復習のつもりだったのですが、

全然覚えていませんでした。

実際にコードを書いてみると

![スクリーンショット 2024-06-11 141502.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3813227/bbe65daa-8723-5cab-d478-4c51cd17ef09.png)

見ながらだとできました。

Javaよりもコードが簡単で、最初にやりやすいのだと改めて感じました。


## ChatGPT

今人気のAI「 __ChatGPT__ 」を使ってみました。

情報の検索において、約83％の人が利用しているそうです。

私が書いた九九の表をChatGPTにお願いすると

![スクリーンショット 2024-06-11 143405.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3813227/9a688445-f55f-fbf7-86ab-91313aa7b5bc.png)

一瞬できれいな表ができました。

0から作るのではなく、これからはAIを使って可能な限り早く作ることが求められるのだと考えます。


## 開発環境

開発環境として、今回 __VSCode__ と __GitHub__ を学びました。

VSCodeは総合開発環境で73%という圧倒的トップです。

私も使用したことがあるのですが、
拡張機能が多くあり、かつすぐにできるという魅力があると考えます。

また、バージョン管理の方法として
__GitHub__ を学びました。

難しそうと感じていたのですが、想像していたよりも簡単にコミットできるのだと感じました。

プロジェクト研修の際に、私たちのグループは

ここに時間をかける暇はないと思い、gitを使用しなかったのですが、

一度わかるとすぐにできそうで少し後悔しています...


## 最後に

本日だけで数多くのことを学びました。

今までの延長に近い知識もあれば

今後活用できそうな知識(Gitなど)も得られました。

これからどの部署に配属されるかはわかりませんが、

個人的利用をする際も含めて活用できたらと考えます。

ありがとうございました。
新入社員研修を受けて

## はじめに

株式会社オーイーシーの新入社員研修を受けています。

本日、受講した教育の内容と感想を投稿します。

### 技術者として大切なこと
・役割を明確化すること。
・コミュニティに参加し、意見を共有することで視野を広げること。

### 教育内容

多様な開発言語

開発言語の人気ランキング
1位.JavaScript 
2位.HTML/CSS 
3位.Python

Zig開発者の平均年収はPHP開発者の1.76倍となっている。

Javaなど習得者が多い言語の平均年収は低いが、仕事は途切れない。

ElixirやRustなどは難しい案件の可能性が高いため、高収入。

Pythonは、より書きやすく、読みやすく、シンプルな言語。

AI活用
・検索ツールでは、ChatGPTがトップ。AIツールの中で使ってみたい人の割合と、使い続けたい人の割合でトップである。
・開発ツールでは、GitHub Copilotがトップ。
・開発環境では、VSCodeが73.31%でトップ。

GitHub
・クラウド上でバージョン管理ができる。
・世界中のオープンソースソフトウェアが管理されている。

クラウドプラットフォーム
・基本的に使った分だけの従量課金

### 感想
多様な開発言語や、開発環境があること、また、AIツールを利用し、情報の検索だけでなく、開発も行うことを学ぶことができました。
今後は、調べ物があるときやアイデアが思い浮かばないときに、ChatGPTを用いようと思います。
また、コミュニティなどに参加し、様々な技術者の話を聞いたり、プロジェクトマネージャーに必要なことを学んだりしてみたいです。
新入社員教育を受けて

## はじめに

株式会社オーイーシーの新入社員研修を受けています。

今日受けた教育の内容と感想を記事としてまとめておきます。

## 内容
- フェルミ推定
- 技術者の役割
- AWS BuilderCards
- プロジェクトマネージャー
- コミュニティマネージャー
- Markdown練習(Qiita)
- 開発言語
- Python
- 競技プログラミング
- ChatGPT
- 開発環境
- VSCode
- バージョン管理
- GitHub
- Webフレームワーク
- クラウドプラットフォーム
- Cloudfalare

### 技術者の役割
クラウドを活用した少人数での開発スタイルが増加しており、
フルスタックエンジニアが33％とトップになっている
 
### 開発言語
人気ランキング
1. JavaScript
1. HTML/CSS
1. Python(AI需要が増加)
1. SQL

最も称賛されている言語
Rust(高速かつ安全)

- 需要があり、習得者が少ない⇒高収入
- 需要があり、習得者が多い　⇒低収入

### AIツール
情報検索には83％がChatGPTを利用
検索ではChatGPTが希望と称賛でトップ
開発ではGitHub Copilotが希望と称賛でトップ

- AI開発ツールに好意的な人が多い
- メリットとしては生産性向上と考える人が多い

### クラウドプラットフォーム
AWSが圧倒的トップ(49%)
Azure(26%)、Google Cloud(24%)

- 希望ではAWSが44％で圧勝
- 称賛ではHetzner(70%)、Vercel(69%)、
Cloudflare(66%)、fly.io(64%)が期待されている

## 今日の教育に関する感想
私はAIなどについての知識がほとんどなかったので、
今日の教育内容はとても難しかったです。
ですが、今日の教育で開発言語やAIツール、プラットフォームの
現在の人気や今後どう利用していくべきかを理解できたと思います。
また、Pythonも初めて使用しましたが、班の人に教えてもらいながら
計算やグラフの出力、文字の表示などが出来るようになりました。
初めて学ぶことが多かったので、今後に活用できるよう、学びをさらに
深めていきたいと思います。


## 今日の内容を具体的に何を活用するか
これから仕事をしていく上で、分からないこともたくさん
出てくるとは思いますが、ChatGPTなどにも頼りながら、
自分なりに調べて仕事の理解を深めていきたいと感じました。
新入社員教育を受けて

## はじめに

株式会社オーイーシーの新入社員研修を受けた。

#### アイスブレイク
フェルミ推定(直感や限られた情報を使って大まかな見積もりを行うこと)を用いて「世界中の木とスマートフォンどちらが多いか」をテーマに概算を行った。

#### Stack Overflow
開発者がITの世界動向を知ることが出来るStack Overflowの紹介
その後、一度十年後の将来像を記述し、技術者の役割や様々なコミュニティの紹介を受け、もう一度将来像を記述した。
研修を受ける前は社内でどのような立ち位置を目指すかということに執着していたが、社外の人のコミュニティも大切にすることがより大切になってきていることを理解し、二度目の将来像の記述では社外についても意識して記述するようになった。
入社してまだ二か月と少しだからこそ社外での経験は大きなものになると感じることができた。


#### 開発言語
開発言語の人気度は
1.JavaScript
2.HTML/CSS
3.Python
となっている。
希望・称賛されている言語は
1.Rust
2.Elixir
3.Zig
となっている。
開発言語で需要があり、習得者が少ないと高収入となり、習得者が多ければ低収入の傾向にある。
また、人気な言語ほど誰もが使用できるのが当たり前となってきているため、競争が激しく、平均収入が低い傾向となっているが、仕事が途切れることは少ない。
新しい言語を使っている人は意欲的であり、難しい案件の可能性が高くなる。
今までは大学の授業で学んだ言語しか知らなかったが、今後は自身でどの言語が必要であるかを見極め、自ら学んでいく姿勢が大切だと学んだ。


#### AIの活用
AIツールの検索ではChatGPTが群を抜いて優秀であるらしい。
また、開発ではGitHub Copilotがこれも群を抜いて優秀であるらしい。
私はあまりChatGPTを使っては来なかったため今後なにかの役立てていきたいと感じた。


#### VSCodeとGitHub
大学時代に授業である程度学んでいたためすぐに作業の内容を理解することが出来た。

#### Webフレームワーク
圧倒的シェアはPhoenixとなっている。
実習はできなかったが、概要は掴むことが出来た。

## 最後に
今回の新入社員研修では、エンジニアが扱うツールの紹介をして頂いた。
知っているものもあれば知らないものもあり、まだまだ知識が浅いことを実感した。
特にStack Overflowに関してはIT業界の動向を誰でも簡単に知ることが出来るため、今まで知らなかったことを少し後悔している。
今後は、今日紹介されたツールをうまく使って業務に携わっていきたい。
新入社員教育を受けて

## 初めに

今日はデザイン研修の一環で、
__DX推進部__
__若林さん__
にお話を伺うことができました。

今日学んだ内容を振り返るとともに、記事にまとめたいと思う。

# 一日の流れ
-アイスブレイク　フェルミ推定
-世界動向を知る
-役割について知る
-開発言語
-AI活用
-開発環境
-開発体験

以上の内容を１日かけて学ぶことができました。
その中でも特に印象に残ったものを紹介します。

# GoogleColab

GoogleColabではpythonの復習を行いました。
実際に記事を参考にモザイク画像を生成しGIFにするプログラムを作成してみました。

https://note.nkmk.me/python-opencv-mosaic/
![opencv_myface.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3813215/ea3b27de-a66b-e914-171f-54fdf1e793e4.gif)


環境を構築しなくても簡単にコードが実行できる点や、使用方法もわかりやすい点を実感することができました。

## chatGPT

chatGPTでは若林さんが提供してくれた肌年齢診断AIを使って遊んでみました。

![スクリーンショット 2024-06-11 133838.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3813215/dbe43c3b-efac-d33f-0158-0f2f441ff8bf.png)

昨日誕生日を迎え23歳になりましたが、AIには５歳ほど顔年齢が上だと判断されました。悲しいです、、、


# 最後に
上記のほかにも、GITでのリポジトリ演習や競技プログラミング演習など、様々な技術方面の知識を得ることができました。

本日学んだことは以下のシチュエーションで活用したいと思います。

- 技術者として先端技術の流行を把握したいとき
本日で様々な新しい知識を多く学ぶことができました。
特にStack Overflow Developer Surveyのアンケートで今どんな言語が流行しているか、プラットフォームなど知ることができ、技術習得をする際に学んだことを活かしたいです。

- 技術習得をするとき
UdemyやGoogleColabなど、無料でも始められて技術が習得できるサイトや情報を多く得ることができました。
現在は基本情報技術者試験の学習に励んでいるが、配属が決まった後に学びたい技術をサイトなどを活用して習得できるように活用したいです。

改めて、今日学んだことは配属後でも活きてくる場面が多くなると思うので、しっかり活用して自分の技術力向上に努めたいと思います。

最後まで閲覧していただき、ありがとうございました。
新入社員教育を受けて

## はじめに

株式会社オーイーシーの新入社員研修を受講しました。

今日受けた研修の内容と感想を投稿します。

## 講義内容

### 開発言語
    1位　Java Script
    2位　HTML/CSS
    3位　Python
    
- 最も称賛されている言語はRust

- Zig開発者の平均年収はPHP開発者の1.76倍
- pythonは単純で読みやすく、綺麗

### AI活用
- 情報の検索に83%の人が使用
- AIのメリットは生産性向上

### 開発環境
- VSCodeが73%で圧倒的トップ
- バージョン管理とは、「いつ、だれが、何を、なぜ、どう変更したのか」を履歴として管理すること

### 開発体験
- Phoenixが称賛82%で圧勝(次いでSvelte,Solid.js)
- クラウドプラットフォーム
    - AWSが圧倒的トップ
    - Azureは26%
    - Google Cloudは24%
        


## 今日の教育に関する感想
　需要があり習得度が少ない人は高収入で、需要があり習得度が少ない人は低収入というデータを見て、多く使われている言語を習得することは大切だが、習得度が少なく需要のある言語も習得したいと感じました。

　pythonを習ったことはないが、9×9の計算やHello, World、グラフの出力ができ、pythonが綺麗で読みやすいということが実感できました。

## 今日の内容を具体的に何に活用するか
　今日は、pythonで実際にコードを書いたり、chatGPTを使って質問をしたりと、実際に手を動かすことが多かったです。
　今日学んだ操作性やシステムの特徴を、適切なタイミングで活用していきたいと感じました。
　また、Gitなどはプロジェクトを複数人で行い、プログラムを書く際に必要になるため、今日学んだ知識(コミットやプッシュなど)を活かしていきたいです。
新入社員教育を受けて

# __新入社員教育を受けて__

## __はじめに__
株式会社オーイーシーの新人社員研修を受けています。
研修の内容や感想を記事にまとめます。

### 目次
-[技術者の役割](#技術者の役割)
-[社外コミュニティ](#社外コミュニティ)
-[開発言語　希望と称賛ランキング](#開発言語_希望と称賛ランキング)
-[AI活用](#AI活用)
-[開発体験](#開発体験)
-[最後に](#最後に)


## __技術者の役割__
今日の研修ではまず技術者の役割について学びました。
技術者の役割にも様々あるということを知り、また自分の目指したい役割にはどういったスキルが必要なのかを[bright][bright]で確認することができたので今後の参考にしていきたいです。

## __社外コミュニティ__
![エラー画像](https://media.connpass.com/thumbs/97/50/97501e89db6b3b87f25dda0cbe3c506f.png)
社外のコミュニティに参加することで新たな刺激をたくさん受けることができるなと感じました。またそういった場所では~~飲み会~~学ぶ機会がたくさんあると思うので積極的に参加していきたいと思いました。
[プロジェクトテーマパークで遊んで学ぶプロジェクト管理（大分）][JbUG]  
[AWS BuilderCards（大分）][JAWS]


## __開発言語 希望と称賛ランキング__
希望: 使ってみたい人の割合 
称賛: 1年以上使った人のうち、使い続けたい人

__・第1位：Rust__
__・第2位：Elixir__
__・第3位：Zig__
なんと開発言語がZigの人とPHPの人では平均年収が1.7倍も違うそうです（Zig>PHP）

## __AI活用__
人気度については
「検索」ではChatGPTがトップ
「開発」ではGitHub Copilotがトップでした。


※実習でChatGPTを利用するため20人ほどで一斉にログインしようとすると下記のようなエラーが発生しました。
セミナーや講義などで一斉に使う場面では要注意ですね。
![エラー画像](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3813238/c177a98b-0e86-503c-e444-46d36c5d8b6f.png)

ちなみにChatGPTに私の地元のマスコットキャラクターを作ってもらうとこんな感じでした。
![あしやん.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3813238/e261ff93-482b-8d99-848e-a4ea68d0b7ce.png)
小さい子供は泣いてしまうかもしれませんね、、。

## __開発体験__
クラウドプラットフォームではAWSの利用率がトップ（49%）
次にAzure(26%) 、Google Cloud(24%)という結果だったそうです。
![AWS](https://www.loudounchamber.org/wp-content/uploads/2018/02/aws_logo_smile-NEW.png)

## __最後に__
今回の研修で非常に多くのことを学び刺激を受けることができました。
また、開発環境の最近の主流についても知ることができ、知識欲や勉強欲がより出てきました。今後はAWSの資格勉強やいろいろなプログラム言語を使えるように学んでいきたいと感じました。
今回の研修をもとに今後より意欲的に取り組んでいきたいと思います。
![エラー画像](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhW-EWKoRQKdpR-GQhA3uGitJpJp3_g8DjFAT8jRx09gO3dMAb1rcFxmh4vq2vRCUhDYdUJFlpzOLdGgV60KOqTEo17Uwi9TgTSIRbVtV138GNPaddDkcP1usZqggKc9-DX4Nuhr1XWYTv/s180-c/computer_programming_man.png)

[bright]:https://bright-fun.org/
[JbUG]:https://jbug.connpass.com/event/318851/
[JAWS]:https://jawsug-oita.doorkeeper.jp/events/173353
ReactコンポーネントでJSXを返す場合、returnの中にifを書けない理由

引用はClaudeの回答より。メモ。

>ReactコンポーネントでJSXを返す場合、return文の中身にはJSX(React要素)しか書けません。

>filterはJavaScriptの配列メソッドであり、関数を引数として受け取ることができるのに対し、ifはJavaScriptの制御文であり、値を返すものではありません。
この違いが、Reactコンポーネントの中でfilterは使えるがifは使えない理由になります。

filterって、条件つけて配列作るけど、制御ではないのだな。

>ReactコンポーネントがJSXを返す際、JSXの中に記述できるのは以下の3つのみです。
>
>他のReact要素(コンポーネントや組み込みDOM要素など)
式 (変数、関数呼び出し、算術演算など)
Reactの組み込みの論理&&やcondition ? true : false
>
>制御文のif、for、while、switchなどはJSXの中に直接記述することはできません。
一方で、filterやmapなどの配列メソッドは、引数として渡された関数(無名関数)の実行結果をもとに、新しい配列を生成します。その関数の中でJSXを返すことができるため、結果的にfilterやmapの中でJSXを使うことができます。
つまり、filterやmapはJSX内で式として評価されるのに対し、ifはJSX内に直接記述できない制御文だからです。
ifなどの条件分岐を行いたい場合は、コンポーネント関数の外側で条件を評価し、その結果に応じて異なるJSXを返す必要があります。

式と制御文は違うと。

returnは入れ子にできないので、下記のように書くのもだめ。エラー。

```
return (
    if (条件) {
    return <TrueComponent />
    } else {
    return <FalseComponent />
    } 
)
```
新入社員教育を受けて

# 研修の感想

## はじめに
今回受講した**株式会社オーイーシーの新入社員研修**について感想をまとめました。本研修はエンジニアとして技術面の向上を目的としており、非常に有意義な時間を過ごすことができました。

---

## 学びと気づき
- **新しいスキルの習得**:
    - [Stack Overflow][stack overflow]というwebサイトの見方、使い方について
    - 今まであまり触ってこなかったpythonについて
    - ウェブサイトで使用されているテクノロジーを自動的に検出し、表示するブラウザ拡張機能であるWappalyzerについて
![スクリーンショット 2024-06-11 132540.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3813217/cbd9d8af-9130-f7ea-3707-8e85dde2c807.png)
    - ChatGPTのGPTsにおける画像判定など、AI活用について
    - クラウドプラットフォームを利用したwebページの公開方法について
- **今日の内容を具体的にどう今後に活かすか**
    - VSCodeでのGitを用いたバージョン管理はしたことなかったので、今後頻繁に使うことになると思うので実践できるように勉強したいです。
その際に、webページの構築も同時に行いたいです。

---

## 印象に残ったセッション
> "_Webフレームワークの希望と称賛_"  


- javascriptのフレームワークとしてreactを勉強中だが、それに代わるものとしてSvelteやSolidなどの人気が高まっていることが印象に残りました。
reactをいち早く習得して、SvelteやSolidの勉強も必要だと感じた。

---

## 研修を終えて
1. **習得したスキルの実践**:
    - StackやGPTsなど初めて学んだ内容は忘れないように今後も触れていきたいです
2. **言語学習**:
    - Rust、Elixir、Zigなど自分が知らないだけで、多くのエンジニアの評価の高い言語があることを知りました。
そのような言語のコーディングにも積極的に挑戦していきたいです

---

## 最後に


今回の研修は、社内トップエンジニアである講師の方から直接講義を受けることができ、とても幸せな時間でした。
モチベーションもかなり向上したので、自主学習に励みたいです。

---

**注釈**:
~~研修に関する詳細はこちらをご覧ください。~~


---

[stack overflow]: https://survey.stackoverflow.co/2023/
新入社員教育を受けて

## はじめに

新入社員研修を受けています。

Qiitaでマークダウンの書き方を教わったので、感想を書いてみています。

## 目次
- [はじめに](#はじめに)
- [内容](#研修内容)
- [感想](#感想) 
- [今後に生かしたいこと](#今後に生かしたいこと)


## 研修内容
- 技術者の役割
- 技術の学習方法
- コミュニティに参加しよう
- Pythonの使い方（Googleコラボ）
- 競技プログラミング
- AIツール
- 統合開発環境
- クラウドプラットフォーム

## 感想

### 衝撃の事実
Stack Overflowを使っている人のうち70％以上が趣味でもコーディングをしているらしい。



### 開発言語人気ランキング

- __第1位：JavaScript__
- __第2位：HTML/CSS__
- __第3位：Python__

ランキングを見てわかるように、Webの需要が高い
（参考サイトは [こちら][ranking]）

[ranking]:https://survey.stackoverflow.co/2023/#section-most-popular-technologies-programming-scripting-and-markup-languages

これから主流になっていく言語はRustだそう

需要があり、習得者が少ない言語ほど給料が高い
（新しい言語を使う人→意識高め）

### （結局）学び続ける意欲が大切

### ChatGPT
多くのAIツールがある中で圧倒的なシェアを誇るChatGPT
これまでテキスト生成などで使用したことはあったが、画像生成機能は初めて使った。

干しシイタケ、温泉、ホバークラフトの3つの要素を与えて大分県のイメージキャラクターを作ってもらいました・・・・・

![大分君.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3813229/87c169bf-5c53-8d44-de3d-9253f9a8d384.png)

かわいいですね。

### 統合開発環境
VSCodeとGitHubの使い方を学んだ。
バージョン管理や公開をするには便利なツールなので使いこなせるように学習していきたい。



## 今後に生かしたいこと
- ChatGPTなどのAIツールをうまく利用して、日々の仕事をスマートにできるようになる

- 新しい言語に対しても積極的に学ぶことで、自分のスキルアップや給料アップにつながる

- クラウドプラットフォームなど便利なものはどんどん使っていく

途中でも書いたように __学び続ける意欲__ が大切ということがよく分かった。
build.xmlにXmaxerrsオプションを追加したい

# はじめに
Antを使っているプロジェクトで一時的に大量のエラーが表示される状況下において、そのエラー内容を見たいというケースがありました。
ビルド実行時に「もっと見たければ-Xmaxerrsオプションを付けてね！」と教えてはくれるのですが、Antが下火なこともありbuild.xmlで指定する方法がすぐには見つけられなかったので、備忘録としてメモしておきます。

# build.xmlでの指定方法
`javac`要素の子要素として`compilerarg`を記述すれば良いだけです。
```xml:build.xml
<!-- 省略 -->
<javac srcdir=${dir.src.main.java}" destdir="${dir.build.classes}">
    <compilerarg value="-Xmaxerrs"/>
    <compilerarg value="1000"/>
</javac>
<!-- 省略 -->
```

# 参考サイト
- [Anatomy of a simple Ant build.xml file](https://bedroomcoders.co.uk/posts/109)