OmniAICreator/Qiita-1.07M huggingface dataset:
Pythonデコレータのネストを減らすデコレータ

## 概要
デコレータ自身に引数を持つ場合の書き方がややこしいので、ネストを減らすデコレータを作ってみました

### デコレータのデコレータが無い場合の実行例
```python
import functools

def sample_decorator(print_key: str):
    def _sample_decorator(func):
        @functools.wraps(func)
        def wrapper(*args, **kwargs):
            print(f"function start, name: {func.__name__}")
            print(f"print value: {kwargs[print_key]}")
            result = func(*args, **kwargs)
            print("function end")
            return result

        return wrapper

    return _sample_decorator


@sample_decorator(print_key="file_name")
def sample_function(file_name):
    print("this is sample_function")


sample_function(file_name="hogehuga")
# function start, name: sample_function
# print value: hogehuga
# this is sample_function
# function end
```

## ネストを減らすデコレータ
```python
import functools

def decorate_args(func):
    def _decorate_args(*args, **kwargs):
        @functools.wraps(func)
        def wrapper(f):
            return func(f, *args, **kwargs)

        return wrapper

    return _decorate_args
```
## 実行例
```python
@decorate_args
def sample_decorator(func, print_key: str):
    def wrapper(*args, **kwargs):
        print(f"function start, name: {func.__name__}")
        print(f"print value: {kwargs[print_key]}")
        result = func(*args, **kwargs)
        print("function end")
        return result

    return wrapper


@sample_decorator(print_key="file_name")
def sample_function(file_name):
    print("this is sample_function")


sample_function(file_name="hogehuga")
# function start, name: sample_function
# print value: hogehuga
# this is sample_function
# function end
```
## まとめ
デコレータのネストを減らすデコレータを使うと、入れ子が減ることを確認できます。
ついでに、デコレートされる側のデコレータには、`@functools.wraps(func)`を書かなくてよくなりますね。
Linuxでスクリプトの編集を開始するコマンド

Linuxでスクリプトの編集を開始するコマンドはいくつかあります。
個人的にはnanoを使っていますが、以前からコーディングしている人は結構Vimを使っている印象です。

メモがてらまとめました。

Linuxでスクリプトを編集するために一般的に使用されるテキストエディタのいくつかは、以下の通りです。それぞれのエディタにはコマンドがあります。

# nano:

nano は初心者にも使いやすいテキストエディタで、基本的な編集コマンドを画面下部に表示しています。

# vim:

vim は強力なテキストエディタで、多くの高度な編集機能を備えていますが、学習曲線があります。

# emacs:

emacs は非常にカスタマイズ可能なテキストエディタで、多くの拡張機能が利用可能ですが、学習曲線が急です。

# gedit:

gedit はグラフィカルなテキストエディタで、GNOMEデスクトップ環境で一般的に使用されます。

これらのエディタの中で、nano は初心者にとって非常に使いやすい選択肢です。他のエディタは高度な機能を提供していますが、学習コストが高いことがあります。選択肢の中から好みのエディタを選んでスクリプトを編集できます。たとえば、nano を使用する場合、次のコマンドを実行してスクリプトを開始できます：

~~~
nano **ファイル名**
~~~

ファイル名には編集したいスクリプトのファイル名を指定します。
EclipseのJava実行時にjava.lang.UnsupportedClassVersionErrorが発生した場合の応急処置的対処法

備忘録です。よしなに。

## はじめに

### 環境

・Pleiades (日本語化Eclipse)

### エラーメッセージ
`Exception in thread "main" java.lang.UnsupportedClassVersionError: SamplePackage/SampleClass has been compiled by a more recent version of the Java Runtime (class file version 65.0), this version of the Java Runtime only recognizes class file versions up to 52.0`

### 原因
このエラーは、ビルド環境と実行環境の組み合わせの不都合によって起こるエラーです。

### 解決法
Eclipseの設定内容を変更することで解消できます。

## 設定
### ビルド環境の設定

`ウィンドウ(W)` -> `設定(P)` の順に開いていくと、設定画面が表示されます。

設定画面左側メニューで、`Java` -> `コンパイラ` の順に開いていくと、概ね以下の画像の通りになると思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3797991/c3568a36-e930-62b8-6ff0-562e102e0125.png)

このコンパイラー準拠レベルと実行環境のバージョンを合わせることで解消できます。

また、プロジェクトの固有の設定をしている可能性もあるので、その場合はプロジェクトのプロパティから同様に設定を見直してみてください。

### 実行環境の設定

ということで、実行環境のバージョンも設定してしまいましょう。

パッケージ・エクスプローラーで、設定内容を変更するプロジェクトを開いてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3797991/7060b5ee-000c-02c6-7c82-2ba225d3c43f.png)

`JREシステム・ライブラリー` を右クリックし、`プロパティー(R)`をクリックすると、JREシステム・ライブラリーのプロパティー画面が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3797991/4af6b057-0f9b-318e-5035-801c0ebf3d0c.png)

この画面で、実行環境のラジオボタンを押下し、先ほど設定したビルド環境と同じものを設定します。

私の環境では、コンパイラー準拠レベルを`21`、実行環境を`JavaSE-21 (Java21)`にそれぞれ設定しています。

## 最後に

これで一人でも救われる人がいれば幸いです。
【ChatGPT＋DALL-E3】画像分析や画像加工に使える？（不具合ありを確実に）


　どうも、カーブミラーです。

　今回は、先日の『画像分析や画像加工に使える？』に、不具合がありました。それを確実に行なうための呪文です。

:::note info
本記事は、ChatGPT（有料版）
＋DALL-E3で行なっております。
画像はあります。　あしからず。
:::

　まずは、Canvaが
　　バージョンアップしました。
　　　使っていませんので
　　　　よくわかりませんが😅

　“Canva公式”アカウントが
　　X-Twitterにあります。

　また、バージョンアップ内容を
　　まとめたポストがこちら。
　　　チャエンさんがポストしました。
[デザインプラットフォームCanvaが大幅アップデート](https://x.com/masahirochaen/status/1794576862058041505?t=FsZaB4zWIv5XbEIzJNFdeg&s=03)
***
　さて、本題です。

　先日（2024/05/24）の
　　[【ChatGPT＋DALL-E3】画像分析や画像加工に使える？](https://qiita.com/kabumira/items/98cb4d1641b347a4cbc8)
　　　ですが、
　　　　どうやら、指示の仕方で
　　　　　うまくいったり
　　　　　　いかなかったり
　　　　　　　しています。

　パターン的には、
　　ダウンロードリンクが欲しいのに
　　　画像生成プロセスに行く
　　　　のが多いようです。

　セッションを変えてもみましたが、
　　私の場合、ほぼ生成へと
　　　行ってしまいました。

　そこで
　　いろいろと試して、
　　　必ずダウンロードリンクを
　　　　出すようにできました。

　とりあえず、
　　やり取りをどうぞ。
***
***user***
![1716776659417.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457238/9e801e9d-a0b5-b2eb-ac1f-3c30905cd2db.jpeg)
白黒にしてください

***ChatGPT***
（画像生成に）

***user***
白黒にしてください。DALL-E3に描画依頼しないでください。

***ChatGPT***
（ダウンロードリンク）
![1716776668158.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457238/9c1eddc7-0ddc-caaa-086c-492b00254d9b.jpeg)
***
　上は失敗例。
　下が成功例。

　何が違うかは
　　おわかりですね。

　DALL-E3を使うな、と
　　言っているだけです。

　あるいは
　　“Code Interpreterを使ってください”
　　　を使っても行なえます。

　まぁ、こちらの方が
　　確実にCode Interpreterを
　　　使ってくれると思います。

　Code Interpreterは
　　ご存知のとおり、
　　　Pythonコードを
　　　　実行できる環境です。

　ChatGPTが
　　人間とCode Interpreterの仲介を
　　　やってくれます。
　　　　ここはDALL-E3と同じですね。

　正式名称は、
　　“Advanced Data Analysis”で、
　　　“ADA”とも言われます。

　でもまぁ、
　　“Code Interpreter”が
　　　定着しちゃってる感じですね。

　私も正式名称は
　　調べないと思い出せませんもん😅
　　　脳みそ、小さいので(笑)

　「アナルシスなんだっけ？」的な。

　みなさんの
　　作品制作の糧に
　　　なれば、幸いです。

　今回は、ここまで。
【Go】Gormでクエリーの結果を構造体に詰めたいけど何を使えばいいんだっけ？ってよくなるのでまとめました

## はじめに
普段の開発でORMにGormを採用しているのですが、クエリー結果を構造体へ詰めるために、`First`、`Take`、`Find`のどれを使えばいいのかついつい忘れちゃうことがありました。また、条件に合うレコードが見つからなかった場合に`Take`はエラーを返した気がするけど、`Find`はどうだっけ...ともなっていたので、今回備忘録がてらまとめてみました。

## 結論
単体オブジェクトを取得したい場合は、`Take`, `First`, `Last`を使い、複数オブジェクトを取得したい場合は、`Find`, `Scan`を使う。
`First`, `Take`, `Last`は条件に合うレコードが存在しなかった場合、`ErrRecordNotFound`を返却するが、`Find`, `Scan`は何も返さない。

:::note info
`Find`, `Scan`は単体オブジェクトに対しても使用可能です。
`db.Limit(1).Find(&user)`とすることで、`Take`と同様のSQLが流れますが、エラーは返りません。
以下で詳しく説明していきます。
:::

### First
`First`はprimary keyでorderして条件に合う最初のレコードを返却します。
また、レコードが見つからない場合は、`ErrRecordNotFound`を返却します。
```go
db.Where("name = ?", "jinzhu").First(&user)
//=> SELECT * FROM users WHERE name = 'jinzhu' ORDER BY id LIMIT 1;
```
### Take
`Take`はorderせずランダムに1レコードを取得します。
また、レコードが見つからない場合は、`ErrRecordNotFound`を返却します
```go
db.Where("name = ?", "jinzhu").First(&user)
//=> SELECT * FROM users WHERE name = 'jinzhu' LIMIT 1;
```
### Last
`Last`はprimary keyで逆順にorderして条件に合う最後のレコードを返却します。また、レコードが見つからない場合は、ErrRecordNotFoundを返却します。
```go
db.Where("name = ?", "jinzhu").Last(&user)
//=> SELECT * FROM users WHERE name = 'jinzhu' ORDER BY id DESC LIMIT 1;
```

### Find
`Find`は条件に合うすべてのレコードを取得します。単体オブジェクトに対しても使用可能で、エラーは返りません。
```go
db.Where("name = ?", "jinzhu").Find(&users)
//=> SELECT * FROM users WHERE name = 'jinzhu';
```
単体オブジェクトに対して使用する場合は、`db.Limit(1).Find(&user)`のようにします。この場合、条件に合うレコードが存在しなくてもエラーは返らず、空のオブジェクトが返されます。

### Scan
`Scan`は条件に合うすべてのレコードを取得し、特定のフィールドのみを構造体にマッピングします。通常はクエリの結果を別の構造体へマッピングするために使用されます。単体オブジェクトに対しても使用可能で、エラーは返りません。

```go
type Result struct {
    Name string
    Age  int
}

var result Result
db.Table("users").Select("name, age").Where("name = ?", "jinzhu").Scan(&result)
//=> SELECT name, age FROM users WHERE name = 'jinzhu';
```

## 終わりに

Gormは公式ドキュメントが豊富で、日本語版も充実しているのでよかったら読んでみてください。
- [Gorm公式ドキュメント](https://gorm.io/ja_JP/docs/query.html)
【小ネタ】Inertiaのrouter.getで送るデータがそこそこ複雑になったときどうする？

# はじめに

Inertiaで作ってるときに、「検索画面」を作ることがあると思うんですよ。
で、検索条件をサーバーに送るとき、特にデータを書き換えたりするわけではないので正気だったらGETで送ると思うんですよね。
1階層のフォームだったらそのまんま送ってなんとかなるんですけど、ちょっと複雑になるとクエリーパラメータの制約上おかしなデータが送られてきてしまいます。

要は

```jsx:例: 複雑なデータ
const {data, setData, get} = useForm({
    hoge: [
        {
            huga: '',
            hugahuga: ''
        },
        {
            huga: '',
            hugahuga: ''
        }
    ]
})

const onSubmit = (e) => {
    e.preventDefault()
    get(route('moga'), data)
}
```

みたいにすると

```
?hoge[][huga]=&hoge[][hugahuga]=&hoge[][huga]=&hoge[][hugahuga]=
```

って感じなって、実際Laravel側で受け取ると

```php
[
    'hoge' => [
        ['huga' => ''],
        ['hugahuga' => ''],
        ['huga' => ''],
        ['hugahuga' => ''],
    ]
]
```

という感じになってしまって、意図したものとちゃうなあ、ってことになります。

そうなっちまったときの対応策です。

# 結論

transformしてJSON.stringifyする。

```tsx
const {data, setData, get, transform} = useForm({
    hoge: [
        {
            huga: '',
            hugahuga: ''
        },
        {
            huga: '',
            hugahuga: ''
        }
    ]
})

const onSubmit = (e) => {
    e.preventDefault()
    transform(data => {
      return {
        hoge: JSON.stringify(data)
      }
    })
    get(route('moga'))
}
```

useFormの中にtransformと言うメソッドがいるので、それを使います。

もちろん、Laravel側の受けの方でも `decord_json` する必要があります。
Requestクラスがもってる色々便利なメソッドは使えないですが、なんとかする方法はいくらでもあるので大丈夫だと思います。

```php
$hoge = json_decode($request->input('hoge'));

/**
 * $hoge = [
 *     [
 *         'huga' => '',
 *         'hugahuga' => ''
 *     ],
 *     [
 *         'huga' => '',
 *         'hugahuga' => ''
 *     ],
 * ]
 * /
```
CVE情報調査 脱線編 Vulsを10年使うことを考える

# モチベとか

開発の盛んなOSSの場合、どんどんバージョンアップして、機能自体が大きく変わってしまう、あるいはライセンス条項が変わって今の使いかたができなくなる、などがあります。

わざわざVulsで脆弱性管理をしている以上、機能変更に合わせて仕様変更に追従し続ける覚悟で自分が使うソフトのバージョンは常に上げていくというのが基本指針にはなるのですが、、
いかんともしがたく、更新できずにVulsを使用せざるを得ない可能性を試しに考えてみようかなと。

Vuls自体を更新しないで長期間（とりあえず10年）使えるか、ざっくり考えてみます。

# 脆弱性情報ソースの観点

VulsはNVDやJVNなどの（歴史と権威のある）非営利団体が提供する情報と、RedhatやCanonical（Ubuntu）のOSベンダの発信する情報をマージしています。

仮にVulsを更新しないと割り切ったとしても、情報ソースは更新しないと新しい脆弱性情報が収集できませんから、こっちはちょくちょく更新しないと始まりません。

それぞれについて、10年使うとどうなるか、ちょっと考えてみます。

## NVD, JVN（というか、MITRE）

過去10年くらいを振り返ってみると、CVEの表記の桁数が4桁から5桁に上がった、CVSSがver.2 > 3 > 4と変わっていく、などと、データのフォーマットが変わってきています。
これはNVD, JVNというかMITREの話ではありますが、、さておき、情報照合の基本になるデータのフォーマットが変わっていく、というのは認識する必要があります、
過渡期は新旧併記してくれることもありますが、本質的に数年スパンでデータフォーマットが変わっていくものとしてみるべきでしょう。

また、以下のようにきな臭い記事もあり、NVDをみれば脆弱性の情報一覧が引っこ抜ける、という前提も崩れてきているのかもしれません。
https://iototsecnews.jp/2024/03/15/nist-national-vulnerability-database-disruption-sees-cve-enrichment-on-hold/

すくなくとも、５年はもたないかな。。という感じです。

## OSベンダの情報

過去の実績として大きく変わった事例はぱっと思いつかないですが。。
脆弱性管理は付加サービスとして取り上げやすい部分ですから、機能を改善（＝仕様変更）する、それらの機能を有償版に寄せて無償版・廉価版は機能が制限される、というのはあり得る気がします。

また、CVEやCVSSの仕様が変われば、当然それに追従して情報掲載の仕様も変わるでしょうし。

メジャーバージョンの更新タイミングが、とりあえず要注意でしょうか（それにかぎるわけでもないのですが）。

これも、数年は持たないかな。。

## OSのパッケージ情報収集方法

Redhat系はrpm > yum > dnfと変わってきています。
Ubuntuはapt-getからapt。
人間が使う分には差分はあまり感じないですが、脆弱性情報の見せ方のフォーマットが変わるリスクは想定しないといけないですね。。

~~脆弱性情報ソースよりは息が長い気がなんとなくしますが、、１０年は期待しないほうがいいですね。。~~
別途まとめましたが、6年前のv0.6ももう使えなくなってます。
(vuls側というかgoval側の話ですが）。
脆弱性情報のダンプ配布するURLが普通に変わっており。
ちゃんとvulsのChangelog見ればわかる話だと思いますが、、横着してました。
お恥ずかしい。

# Vuls本体

脆弱性照合の仕組みは大きく変わらない気はしますが、利用条項の変更や、今使っている機能の縮退などがちょっと怖くはあります。

もっとも、そもそも脆弱性の情報ソースやパッケージの収集結果のフォーマットが変われば元も子もないわけで。
ということで、結局、数年単位では見直さないとだめですね。

# まとめ

(そりゃそうなんですが）Vuls自体を更新せず、脆弱性情報だけ更新しながら使い続ける、というのは無理ですね。
ちゃんとアップデートに追従しましょう。。

というか、それだけ使うなら商用板の使用を視野に入れるのが筋でもあります。
ちゃんと考えよう。。

こういう流れもあるし。
https://www.lac.co.jp/lacwatch/report/20240216_003679.html

そもそもの知識についても、更新怠らないようにしないとなぁ。。
とりあえず全部書き出す　Windowsを便利にするやつ色々。

ここでは細かい事考えないです。
Windowsに関わる内容で、とりあえず見つけたものを共有するために使います。

https://www.youtube.com/playlist?list=PLHUlFJxIq4thrMabsLaIiE7QCilroa0sg

https://www.youtube.com/watch?v=r9eVSS49OLY&list=PLHUlFJxIq4thrMabsLaIiE7QCilroa0sg&index=21

https://www.youtube.com/watch?v=TOxJ59iLqx8

https://zakkinks.com/ssd_firefox_ie/#FirefoxRAM

https://atmarkit.itmedia.co.jp/ait/articles/0402/14/news024.html

https://www.partitionwizard.jp/resizepartition/windows-storage-spaces.html


・winストアが邪魔するとき

https://loumo.jp/archives/26344

https://ittrip.xyz/soft/windows/windows-store-ban

https://jp.minitool.com/news/group-policy-editor-gpedit-msc-missing.html


・windowsのフォントを変える

http://tatsu.life.coocan.jp/MySoft/WinCust/

https://macha795.com/4k-monitor-font-size/


・コマンドプロンプトで大量に保存した画像、PDF等の名前を一括で変更

https://azure-nakame.com/?p=74

・右クリックを昔の奴に戻す

https://pc-karuma.net/right-click-context-menu-back-on-windows-11/

スタートボタンを前の奴にする

http://www.classicshell.net/

Windows　キーコンフィグ

https://github.com/plastovicka/HotkeyP
あｗだ

import pandas as pd
import numpy as np

# データフレームを日付でソート
df.sort_values(by='TDATE', inplace=True)

# 銘柄コードごとにグループ化
grouped = df.groupby('SICC_CODE')

# 幾何平均を計算する関数
def geom_mean(iterable):
    a = np.array(iterable)
    return a.prod()**(1.0/len(a))

# EPSの変動率と幾何平均を計算する関数
def calculate_growth_rates(group):
    # EPSの変動率を計算（3ヶ月ごと）
    group['Growth_Rate'] = group['EPS'].pct_change(periods=3)
    # 3か月ごとの変動率の幾何平均を、15か月後から計算して格納
    geom_means = []
    for i in range(len(group)):
        if i >= 14:  # 15か月目から幾何平均を計算
            rates = group['Growth_Rate'].iloc[i-14:i+1]  # 過去15か月分のデータを取得
            if not rates.isnull().any():  # NaN値がなければ計算
                geom_mean_val = geom_mean(rates.dropna())
            else:
                geom_mean_val = np.nan
            geom_means.append(geom_mean_val)
        else:
            geom_means.append(np.nan)
    group['Geom_Mean_Growth'] = geom_means
    return group

# 各銘柄コードに関数を適用してデータフレームを更新
df = grouped.apply(calculate_growth_rates)

# 結果の表示
print(df[['TDATE', 'SICC_CODE', 'EPS', 'Geom_Mean_Growth']])
【Unity】'【クラス名】' is missing the class attribute 'ExtensionOfNativeClass'!が発生する

# はじめに
'【クラス名】' is missing the class attribute 'ExtensionOfNativeClass'!が発生する場合の対処方法を記録します。

# 対処方法
* 非MonoBehaviourのクラスがInspector上にアタッチされていることが原因なので、対象のクラスがアタッチされているのが原因
* 対象のクラス名をHierarchyウィンドウの検索バーで検索することは可能なのでそこから対象のコンポーネントを探して削除するとエラーを解消することができる
何故かNode.jsがダウンロードできないMacユーザー。。。ターミナルの返答は「Make sure that /usr/local/bin is in your $PATH.」

Web制作者のためのsassの教科書改訂2版を購入したので、早速環境を設定！
していたのですが...Node.jsのインストーラーをダウンロードはOK
しかしターミナルから「Make sure that /usr/local/bin is in your $PATH.」
と表示されnodeはインストールできません。。。！

結果は、シェルつまりターミナルでなんとかしました💦

シェルやターミナル・バックエンドの知識がある方は
すぐ「usr」フォルダがないからじゃないのと読めると思います！
私は。。。分かりませんでした！
なので、まぁ久しぶりにターミナルで「ls」から対象を探して、
「usr」フォルダなんて存在しないからだと1時間格闘して原因判明。。。

railsの学習時もそうでしたが、ターミナルの使い方はWeb制作側でも多少は
知っておいくと困った時の対処の方法が広がって助かりますんね😆
これから始める！　Windowsのおすすめ設定

この記事はハイスペックなノートPCを使うときに、便利かも！な情報を書いてきます

https://youtu.be/n-BKQT0iqCg?list=PLHUlFJxIq4thrMabsLaIiE7QCilroa0sg&t=622

この動画は一度でも聞き流すの推奨ですが、

特に、URLで指定した
10:22からの復元ポイントの作成

が最初に重要だと思うので、最初に紹介します。


https://answers.microsoft.com/ja-jp/windows/forum/all/onedrive%E4%BB%A5%E4%B8%8B%E3%81%AE%E3%83%91/64475209-7211-4c53-a88b-a1358f14dee5

こちらの内容でもレジストリエディタ内で変更を行います。
変更を行う前に復元ポイントの作成を行えば、誤操作してPCを壊しても正常な状態に戻せます。

レジストリエディタで 

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders

を開いて、複数個所の、onedrive\ドキュメント　を　onedrive\Documents　に変更。
UnityでBGMを流す

# やりたいこと
* BGMを流す
* シーン遷移しても継続してBGMを流す
* シーン遷移したらBGMを流しているオブジェクトを破壊する

## BGMを流す

1. 「AudioSource」コンポーネントをアタッチしたオブジェクトを作成
2. 「AudioClip」にBGMを紐付ける

![スクリーンショット 2024-05-27 10.45.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3771111/769cc143-f6ea-e956-413d-187c2dd28316.png)

以上です。
シーンが読み込まれたらBGMを流す場合は、「Play On Awake」にチェックを入れておいてください。（一応、デフォルトでチェックが入っています）
また、BGMをループさせたい場合は、「Loop」にチェックを入れておいてください。

## シーン遷移してもBGMが途切れないようにする

### スクリプト

```
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BGMTest : MonoBehaviour {

    void Start () {
        DontDestroyOnLoad (this); //画面遷移してもオブジェクトが壊れないようにする
     }

}
```

上記のスクリプトを、BGMを流しているゲームオブジェクトにアタッチした状態でゲームを再生すると、Hierarchyに下のようなものが現れます。このようになっていればOKです。

![スクリーンショット 2024-05-27 10.50.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3771111/3ddacbee-7c5c-9e5c-1c86-71fe998acd3c.png)

シーンを跨いでも曲が中断されることなく、流れ続けます。
シーンを読み込むたびに曲の先頭から再生したいという場合はこの方法を使用せず、シーンごとにAudioSourceをアタッチしたゲームオブジェクトを用意すれば大丈夫です。

## シーン遷移したらBGMを流しているオブジェクトを破壊する
シーンを跨いで曲を再生したい部分と、また別のBGMを再生したい部分ってありますよね。
そこで、先ほどのシーンを跨いでも壊れないようにしたオブジェクトを壊すスクリプトを作ろうと思います。

### スクリプト①
シーン遷移後に破壊する方法。
スクリプトは遷移後のシーンにあるオブジェクトにアタッチしてください。

```
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BGMDestroy : MonoBehaviour
{
    void Start()
    {
        GameObject obj = GameObject.Find ("BGMTestObj"); //""で囲んだ名前のゲームオブジェクトを探す
        Destroy (obj);
    }
}
```

### スクリプト②
シーン遷移時に破壊する方法。
シーン遷移用のスクリプトに、オブジェクトを破壊するコードを組み込んでみました。

シーン遷移の解説はこちらの記事をご覧ください↓
https://qiita.com/mizuki170817/items/7fabff96c35aac7fb555

```
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class Scene: MonoBehaviour {

    [SerializeField] private string _loadScene; //読み込むシーン

    public void SceneChange()
    {
        GameObject obj = GameObject.Find ("BGMTestObj");
        Destroy (obj);
        SceneManager.LoadScene(_loadScene);
    }

}
```
シーン遷移のコードに組み込むことによって、スクリプトの個数は一つ減らせますが、シーン遷移のパターン（曲を連続させる、させない）によって複数個関数を用意しないといけないことになるので、①の方が楽…なのかな？と思います。

# 最後に
他にもBGMの流し方のパターンが思い付いたらどんどん更新していこうと思います。シーン遷移とのうまい組み合わせ方も考えなくては…
最後まで読んでいただき、ありがとうございました。
忘備録：VSCodeに入れている拡張機能

# 忘備録：VSCodeに入れている拡張機能

こんにちは
私のMacに入れているVSCodeの拡張機能を紹介しています
私は主に下記の言語を使用しています
```
- HTML
- CSS
    - PostCSS
    - Tailwind CSS
- Javascript
- Typescript
- React
```
同じような言語を使用する方に親和性が高いかもしれません
もちろん、言語問わずに入れたおいた方がいい拡張機能もあるので、
何かの参考になれば嬉しいです:grinning:

## Auto Close Tag

https://marketplace.visualstudio.com/items?itemName=formulahendry.auto-close-tag

## Auto Rename Tag

https://marketplace.visualstudio.com/items?itemName=formulahendry.auto-rename-tag

## Code Spell Checker

https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker

## Color Highlight

https://marketplace.visualstudio.com/items?itemName=naumovs.color-highlight

## EditorConfig for VS Code

https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig

## ESLint

https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint

## file-icons

https://marketplace.visualstudio.com/items?itemName=file-icons.file-icons

## Gitmoji

https://marketplace.visualstudio.com/items?itemName=seatonjiang.gitmoji-vscode

## Gremlins tracker for Visual Studio Code

https://marketplace.visualstudio.com/items?itemName=nhoizey.gremlins

## Highlight Matching Tag

https://marketplace.visualstudio.com/items?itemName=vincaslt.highlight-matching-tag

## indent-rainbow

https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow

## Japanese Language Pack for Visual Studio Code

https://marketplace.visualstudio.com/items?itemName=MS-CEINTL.vscode-language-pack-ja

## Prettier - Code formatter

https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode

## Project Manager

https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager

## SVG Previewer

https://marketplace.visualstudio.com/items?itemName=vitaliymaz.vscode-svg-previewer

## Tailwind CSS Autocomplete for Visual Studio Code

https://marketplace.visualstudio.com/items?itemName=sidharthachatterjee.vscode-tailwindcss

## Tailwind CSS IntelliSense

https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss

## TODO Highlight

https://marketplace.visualstudio.com/items?itemName=wayou.vscode-todo-highlight

## Trailing Spaces

https://marketplace.visualstudio.com/items?itemName=shardulm94.trailing-spaces

## vscode-icons

https://marketplace.visualstudio.com/items?itemName=vscode-icons-team.vscode-icons

## zenkaku

https://marketplace.visualstudio.com/items?itemName=mosapride.zenkaku
XML, JSON, YAML とは

# 目次
- [XMLとは](#XMLとは)
- [JSONとは](#JSONとは)
- [YAMLとは](#YAMLとは)

# XML(eXtensible Markup Language)とは
#### 特徴
- **拡張性:** 任意のタグを使用してデータを表現できます。
- **厳密な構造:** スキーマを使ってデータの構造を定義し、バリデーションが可能です。
- **自己記述的:** タグによってデータの意味が明確になります。
#### 用途
- ドキュメントの保存と転送（例: RSSフィード、SOAPメッセージ）
- データベース間のデータ交換 

~~~xml:xml
<person>
  <name>John Doe</name>
  <age>30</age>
  <hobbies>
    <hobby>reading</hobby>
    <hobby>swimming</hobby>
    <hobby>coding</hobby>
  </hobbies>
</person>
~~~

# JSON(JavaScript Object Notation)とは
#### 特徴
- **軽量:** シンプルで軽量なデータ交換形式です。
- **効率的:** パースが高速で、Webアプリケーションで広く使われています。
- **シンタックス:** JavaScriptに基づいたシンタックスを使用しますが、ほとんどのプログラミング言語でサポートされています。
#### 用途
- Web APIのデータ交換（例: RESTful API）
- 構成ファイル（例: .eslintrc, package.json）

~~~json:json
{
  "person": {
    "name": "John Doe",
    "age": 30,
    "hobbies": ["reading", "swimming", "coding"]
  }
}
~~~

# YAML(YAML Ain't Markup Language)とは
#### 特徴
- **可読性:** 人間が読みやすい形式で、インデントを使用して階層構造を表現します。
- **シンプル:** 必要最低限のシンタックスで記述できます。
- **柔軟性:** コメントを追加できるので、設定ファイルなどに適しています。
#### 用途
- 設定ファイル（例: Ansibleのプレイブック、Kubernetesのマニフェスト）
- データシリアライゼーション

~~~yaml:yaml
person:
  name: John Doe
  age: 30
  hobbies:
    - reading
    - swimming
    - coding
~~~


# 参考リンク
- [XML、JSON、YAML: それぞれの違いは何ですか?](https://ja.linux-console.net/?p=27901#:~:text=YAML%E3%80%81XML%E3%80%81JSON%20%E3%81%AF%E3%81%99%E3%81%B9%E3%81%A6%E3%83%87%E3%83%BC%E3%82%BF%E4%BA%A4%E6%8F%9B%E5%BD%A2%E5%BC%8F%E3%81%A7%E3%81%82%E3%82%8A%E3%80%81%E3%81%9D%E3%82%8C%E3%81%9E%E3%82%8C%E3%81%AB%E9%95%B7%E6%89%80%E3%81%8C%E3%81%82%E3%82%8A%E3%80%81%E9%81%A9%E3%81%97%E3%81%9F%E7%94%A8%E9%80%94%E3%81%A7%E3%81%95%E3%81%BE%E3%81%96%E3%81%BE%E3%81%AA%E7%94%A8%E9%80%94%E3%81%AB%E4%BD%BF%E7%94%A8%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%20%E6%9C%80%E7%B5%82%E7%9A%84%E3%81%AB%E3%80%81%E3%81%93%E3%82%8C%E3%82%89%E3%81%AE%E5%BD%A2%E5%BC%8F%E3%81%AE%E3%81%A9%E3%81%A1%E3%82%89%E3%82%92%E9%81%B8%E6%8A%9E%E3%81%99%E3%82%8B%E3%81%8B%E3%81%AF%E3%80%81%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE%E7%89%B9%E5%AE%9A%E3%81%AE%E8%A6%81%E4%BB%B6%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%E6%B1%BA%E3%81%BE%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%20YAML%20%E3%81%AF%E6%A7%8B%E6%88%90%E3%81%A8%E5%8F%AF%E8%AA%AD%E6%80%A7%E3%81%AB%E5%84%AA%E3%82%8C%E3%80%81XML,%E3%81%AF%E6%8B%A1%E5%BC%B5%E6%80%A7%E3%81%A8%E6%A4%9C%E8%A8%BC%E3%82%92%E6%8F%90%E4%BE%9B%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%20%E4%B8%80%E6%96%B9%E3%80%81JSON%20%E3%81%AF%E5%8A%B9%E7%8E%87%E7%9A%84%E3%81%A7%E6%9C%80%E6%96%B0%E3%81%AE%20Web%20%E9%96%8B%E7%99%BA%E3%81%A7%E5%BA%83%E3%81%8F%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82)
UnityのAudioSourceコンポーネントに対する知識を深める

# はじめに
AudioSourceコンポーネントのいくつかの機能について、Unity公式が出しているマニュアルを見て使い方をインプットしてきたのでまとめておきます。
マニュアルはこちらから閲覧できます↓
https://docs.unity3d.com/2021.3/Documentation/Manual/class-AudioSource.html


## プロパティ

### 参照系

![スクリーンショット 2024-05-27 10.38.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3771111/50b4f986-7397-e56b-63e6-f4e7749f1799.png)

* **AudioClip**：ファイルをアサインする（1つのAudioSourceにつき1つまで）

### チェックボックス系

![スクリーンショット 2024-05-27 10.38.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3771111/3b023c5a-6ef4-1be0-09ac-389d78551249.png)

* **PlayOnAwake**：読み込まれた時に音が鳴る
* **Loop**：AudioClipが最後まで再生し終えたときにループするかどうか

### スライダー系

![スクリーンショット 2024-05-27 10.39.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3771111/cf729357-a0e7-88a2-b019-1c563d237af0.png)

* **Priority**：優先度。0が最重要。SEを鳴らしすぎた結果BGMが消えるということにならないよう、BGMは0に設定しておくとよさそう
* **Volume**：音量
* **Pitch**：再生速度
* **StereoPan**：音が左右どちら側から聞こえるかを調整できる
* **SpatialBlend**：0にすると音がどこにいても一定に聞こえる2D音声にできる

# 最後に
まだ3Dゲームの制作には取り組んだことがないので、一旦2Dのみの記事になっていますが。ゆくゆくは3Dゲームでも使う知識を記事に追加しようと思っています。
ESLint入門：JavaScriptコードの改善と使い方ガイド

# はじめに

こんにちは、Gakken LEAP のエンジニアの Minami です。
フロントエンド開発にあたり、品質の向上・チームメンバー間での実装レベルの統一を目的として、ESLintを導入しました。今回は、初歩的な部分にはなりますが、備忘録的な意味も込めてまとめてみました。

---

# ESLintとは

ESLintは、JavaScriptのコードを解析して構文エラーや慣用的な問題を見つけるツールです。プログラムの品質や保守性を高めるために役立ちます。

---

# 導入方法

1. **`Node.js`のインストール**: ESLintを使うには、まず`Node.js`をインストールします。`Node.js`はJavaScriptを実行するための環境です。

2. **プロジェクトの初期化**: プロジェクトのフォルダでコマンドを実行して、プロジェクトを初期化します。

    ~~~bash
    npm init -y
    ~~~

3. **ESLintのインストール**: ESLintをプロジェクトに追加します。

    ~~~bash
    npm install eslint --save-dev
    ~~~

4. **設定ファイルの作成**: プロジェクトのルートに`.eslintrc.js`というファイルを作成し、ESLintの設定を記述します。

---

# `.eslintrc.js`のカスタマイズ

以下は、簡単な設定例です。この設定では、コーディングスタイルやエラーチェックのルールを定義しています。

* env
使用する環境を指定します。
* plugins
使用するESLintプラグインを指定します。
* extends
拡張設定を利用する際に使用します。
* rules
ESLintのルールを設定します。各ルールは、エラー('error'), 警告('warn'), またはオフ('off')のいずれかで設定します。

~~~javascript
module.exports = {
  // 使用する環境を指定します
  env: {
    browser: true, // ブラウザ環境
    node: true,    // Node.js環境
    es6: true      // ECMAScript 6 (ES2015) の構文をサポート
  },
  // 使用するプラグインを指定します
  plugins: [
    'react' // React用のプラグイン
  ],
  // 拡張設定を利用します
  extends: [
    'eslint:recommended',       // 標準的なESLintのルールセット
    'plugin:react/recommended'  // React用のルールセット
  ],
  // 独自のルールを定義します
  rules: {
    'indent': ['error', 2],     // インデントをスペース2つに設定
    'quotes': ['error', 'single'], // シングルクォートを使用
    'semi': ['error', 'always'] // セミコロンを常に使用
  }
};
~~~

---

# 使い方

1. **コマンドラインでの実行**: ESLintを使ってJavaScriptファイルを解析します。

    ~~~bash
    npx eslint yourfile.js
    ~~~

2. **エディタの統合**: VS CodeやAtomなどのエディタにESLint拡張機能を追加すると、コードを編集するときにリアルタイムでエラーや警告を表示できます。

3. **自動修正**: ESLintは一部の問題を自動的に修正することもできます。

    ~~~bash
    npx eslint --fix yourfile.js
    ~~~

---

# おわりに

ESLintはJavaScript開発の手助けとなる重要なツールです。エラーを早期に発見し、コードの品質を向上させるために、ぜひプロジェクトに導入してみてください。私自身初めての導入でしたが、簡単な設定で使い始めることができました！

---

Gakken LEAP では教育をアップデートしていきたいエンジニアを絶賛大募集しています！！

https://gakken-leap.co.jp/recruit/
JavaScriptの "+" 演算子の謎

今回はJavaScriptの+演算子について私が思っていたよりも中々理解しにくいところがありましたので、記事にしてまとめてみました。

### 基本的な概念
JavaScriptでは、`+` 演算子は2つの役割を持っています：
1. **数値の加算**：両方の値が数値の場合、これらを足します。
2. **文字列の連結**：一方または両方の値が文字列の場合、値を文字列として結合します。

### 型変換の例
JavaScriptは、異なる型（数値や文字列）の値が `+` 演算子で一緒に使われたときに、自動的に型を変換します。この型変換の仕組みが、数値が文字列に変換される理由です。

### 具体例で説明

#### 例1: 数値と文字列が混ざった場合
```javascript
var num1 = 1;      // 数値
var num2 = "2";    // 文字列
var num3 = 3;      // 数値
console.log(num1 + num2 + num3); // 出力: "123"
```

1. **最初の演算（num1 + num2）**：
   - `num1` は数値 `1`
   - `num2` は文字列 `"2"`
   - 数値 `1` が文字列 `"1"` に変換されます。
   - `"1" + "2"` となり、結果は `"12"` です。

2. **次の演算（"12" + num3）**：
   - `"12"` は文字列
   - `num3` は数値 `3`
   - 数値 `3` が文字列 `"3"` に変換されます。
   - `"12" + "3"` となり、結果は `"123"` です。

#### 例2: 文字列と数値が混ざった場合
```javascript
var num1 = "1";    // 文字列
var num2 = 2;      // 数値
var num3 = 3;      // 数値
console.log(num1 + num2 + num3); // 出力: "123"
```

1. **最初の演算（num1 + num2）**：
   - `num1` は文字列 `"1"`
   - `num2` は数値 `2`
   - 数値 `2` が文字列 `"2"` に変換されます。
   - `"1" + "2"` となり、結果は `"12"` です。

2. **次の演算（"12" + num3）**：
   - `"12"` は文字列
   - `num3` は数値 `3`
   - 数値 `3` が文字列 `"3"` に変換されます。
   - `"12" + "3"` となり、結果は `"123"` です。

### もう一度整理すると

- `+` 演算子は、数値が文字列と一緒に使われると、数値を文字列に変換します。
- JavaScriptは、どちらか一方が文字列の場合、数値を文字列に変換して連結します。
- これにより、数値と文字列が混ざると、すべてが文字列として扱われ、連結されます。

### 簡単な例で型変換を確認

```javascript
console.log(1 + "2");  // 数値 1 が 文字列 "1" に変換され、結果は "12"
console.log("1" + 2);  // 数値 2 が 文字列 "2" に変換され、結果は "12"
console.log(1 + 2);    // 両方とも数値なので、加算されて結果は 3
```

### 実生活の例で理解する
- **数値の加算**：
  - 1 + 2 = 3 （数を足す）
- **文字列の連結**：
  - "1" + "2" = "12" （文字をくっつける）
  - "Hello" + " " + "World" = "Hello World"（文字列をつなげる）

### 覚えておくポイント
- `+` 演算子に数値と文字列が混ざると、数値は文字列に変換される。
- 数値を文字列に変換して連結することで、直感的で予測可能な動作が実現される。

このように考えると、JavaScriptの `+` 演算子の動作が理解しやすくなると思います。
W3Cって何なの？

W3C（World Wide Web Consortium）は、インターネット上のウェブ技術の標準を作るためのグループです。

### W3Cの基本
- **設立者**: ティム・バーナーズ＝リー（ウェブを発明した人）
- **設立年**: 1994年
- **目的**: ウェブを誰でも使えるように、ルールや基準を作ること

### W3Cがやっていること
1. **標準を作る**:
    - ウェブページの作り方（HTML）
    - ウェブページのデザインの仕方（CSS）
    - データの交換方法（XML）

2. **メンバー**:
    - IT企業、大学、政府機関などが参加
    - みんなで話し合って標準を決める

3. **標準作りの流れ**:
    - **ワーキンググループ**: 専門家が集まって話し合う
    - **ドラフト**: 最初の案を作る
    - **パブリックコメント**: みんなから意見をもらう
    - **勧告**: 最終決定として発表

### 具体例
- **HTML5**:
    - 動画や音楽を簡単に埋め込めるようになった
    - ウェブページをもっとインタラクティブにできる

- **CSS3**:
    - きれいなデザインやアニメーションが簡単に作れる

- **ARIA**:
    - 障害を持つ人でもウェブを使いやすくするための技術

### W3Cの影響
- **ウェブの発展**: 新しい技術やサービスの基盤を提供
- **アクセシビリティ**: 障害を持つ人がウェブを使いやすくする
- **国際化**: いろんな国や文化の人がウェブを使えるようにする

### まとめ
W3Cは、ウェブをもっと便利で使いやすくするためのルールを作る大事なグループです。このおかげで、私たちはどんなデバイスやブラウザを使っても、ウェブページをスムーズに見ることができます。
Kubernetesで削除中の全リソースを表示する方法

# Kubernetesで削除中のリソースを表示する方法

Kubernetesクラスタ内で削除中の全リソースを確認するためのワンライナーを紹介します。
このスクリプトは、すべてのリソースタイプに対して、削除タイムスタンプ (`deletionTimestamp`) が設定されているリソースを表示します。

## スクリプトの内容

以下のワンライナーを使用して、削除中のリソースを確認できます。

```sh
for resource in $(kubectl api-resources --verbs=list -o name); do echo "# Resource Type: $resource"; kubectl get "$resource" -A -o yaml | yq e 'select(.metadata.deletionTimestamp != null)'; echo "---"; done
```
kubectlで全てのリソースを表示する方法

### 全リソースを表示する方法

`kubectl get all` kコマンドでは全てのリソースは表示されません。すべてのリソースを表示するためには、以下の方法を取る必要があります。

```bash
for resource in $(kubectl api-resources --verbs=list -o name); do
  echo "# Resource Type: $resource"
  kubectl get "$resource" -A -oyaml
  echo "---"
done
```

このスクリプトは、以下の手順で動作します：

1. `kubectl api-resources --verbs=list -o name` コマンドを使用して、リスト可能なすべてのリソースタイプを取得します。
2. 各リソースタイプに対して、`kubectl get "$resource" -A -oyaml` コマンドを実行し、すべてのネームスペースに存在するリソースの詳細を YAML フォーマットで表示します。
3. 各リソースの区切りとして `---` を表示します。

この方法を使用することで、クラスタ内のすべてのリソースを確認することができます。
urlのバリデーションについて【Laravel】

## 基本的な方法 (active_url)
Laravelのバリデーションルールには`active_url`というルールがあります。
URLが実際に存在し、インターネット上でアクセス可能かどうかをチェックできます。

```php:例
class TestRequest extends BaseFormRequest
{
    public function rules()
    {
        return [
            'url'  => ['required', 'active_url'],
            ];
        }
    }      
```
`active_url`は、URLがDNS上で解決可能なものであるかどうかをチェックしますが、HTTPステータスコード200であるかどうかまでは確認しません。

もし404エラーを返す場合でも、これを「無効」とはみなしません。
DNSチェックが通過する限り（つまり、ドメインが存在し、DNSクエリがIPアドレスを返す限り）、「有効」と見なされます。

## アクセス可能かつHTTPコードが200かどうかまで調べたいとき
カスタムバリデーションルールを作成します。cURLやGuzzleなどのHTTPクライアントを使用してURLにHTTPリクエストを送り、レスポンスをチェックする方法です。

```php
Validator::extend('url_accessible', function ($attribute, $value, $parameters, $validator) {
    try {
        $response = Http::head($value);
        return $response->successful();
    } catch (\Exception $e) {
        return false;
    }
}, 'The URL is not accessible.');

```

Httpファサードを使用してURLがアクセス可能かどうかをチェックしています。
これにより、実際にページが存在するかどうかをより確実に判断できます。

ぜひ参考にしていただけると幸いです。
Unityでオブジェクトの表示/非表示を切り替える

# そもそもどこで表示と非表示が変わる？
オブジェクトを選択したときにInspectorが開きます。
その最上部にあるオブジェクト名の左側のチェックボックスで状態を変えることができます。

チェックがついているとき→**表示/アクティブ状態**
チェックがついていないとき→**非表示/非アクティブ状態**

となっています。

※非アクティブ状態だとそのオブジェクトにアタッチされているスクリプトのUpdate関数が止まったり、オブジェクトをFind関数で探せなくなるなど、いろいろな作用があります

![スクリーンショット 2024-05-27 9.13.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3771111/5e0f35a7-2bca-6eab-f023-d65d602bad17.png)

# やりたいこと
* スクリプトからオブジェクトの表示/非表示を切り替える
* 現在オブジェクトがアクティブなのか、非アクティブなのか判定する

## スクリプトからオブジェクトの表示/非表示を切り替える

### スクリプト
今回は
①アクティブ状態のゲームオブジェクトを、ゲームスタートと同時に非アクティブに
②ボタンで関数を呼び出してオブジェクトを表示する
という想定でスクリプトを書きました。

```
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SetActive : MonoBehaviour
{
    public GameObject _testPanel;

    void Start()
    {
        _testPanel.SetActive(false); //オブジェクトを非表示にする
    }

    public void ObjDisplay()
    {
        _testPanel.SetActive(true); //オブジェクトを表示する
    }
}

```

たった1行で実装可能です。
大切なのは`.SetActive(true/false);`の部分。
**true**でアクティブにする、**false**で非アクティブにすることができます。

## 現在オブジェクトがアクティブなのか、非アクティブなのか判定する
`.activeSelf`を使うと判定できます。
結果はbool型（true/false）で返ってきます。

### スクリプト

```
public void ObjVisibility(){
        if (_testPanel.activeSelf){
            Debug.Log("YES"); //アクティブならコンソールにYESと書く
        }
        else {
            Debug.Log("NO"); //アクティブならコンソールにNOと書く
        }
    }
```

非アクティブの時
![スクリーンショット 2024-05-27 9.37.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3771111/bb884ffd-4935-4a55-ba3b-ad5def702a41.png)

アクティブの時
![スクリーンショット 2024-05-27 9.37.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3771111/8e4c9e45-75a3-113d-5d80-2e79346f95ed.png)


# 最後に
よくボタンやif文と組み合わせて使っているので、今回はこのように紹介させていただきました。他の使い方を見つけたらまた記事を編集・更新していこうと思います。
GitHub「fatal: The current branch main has no upstream branch.」

# エラー内容

* `git push`した際に起きた
```
fatal: The current branch main has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin main

To have this happen automatically for branches without a tracking
upstream, see 'push.autoSetupRemote' in 'git help config'.
```

# エラー理由

* ローカルの main ブランチがどのリモートブランチに対応するかが指定されていないため、`git push`した際にどこにプッシュすればいいか分からずエラーとなった


# 解決方法

* リモートブランチを設定すればOK
* エラーメッセージにも記載されている通り、以下のコマンドを実行することで、`main` ブランチをリモートの origin に設定し、プッシュできるようになる

```
git push --set-upstream origin main
```

## リモートブランチの設定を自動化するには？

* 今後新しいブランチを作成した際に自動的にリモートブランチを設定したい場合は、`push.autoSetupRemote` 設定を有効にするとよい

```
git config --global push.autoSetupRemote true
```
【Qiita】謎のアカウントと謎の記事


<img width=800 src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/649673/dd6f6659-bf17-159d-bb68-c066ebbfc032.png>

https://qiita.com/1ed873c7e9a8edd9c695d2fa438cc1ed

Qiitaの利用規約的におそらくNG

## 考察

**Qiitaから自分の情報を消したいならアカウントを消せばいいだけの話。**

でもそれをしないということは、おそらく多くのContributionsを稼いだという事実を残したいからだと思われる。（憶測）

誰かにその事実を伝えるときには、自分だけが知っている秘密の文字列を教え、それをハッシュ化することでユーザー名と一致すれば、自分がそのアカウントの持ち主であることを証明できる。（※）

だからユーザー名がハッシュ化されているのだろう。（憶測）

### ※悪用

秘密の文字列を教えれば、アカウントを疑似的に売ることができる。
もしくは普通にアカウントを売った後に、ユーザー名変えれば、有名人のように見せられる。

秘密の文字列の公開1万円、アカウント譲渡20万円みたいな感じ？

あくまで悪用できるよねという話で、この方がそういう人間だと言いたいわけではないので悪しからず。

**一応擁護しておくが、この方はそういう理由ではないと思う。
SNSとかGitHubを見た感想。
本当に売りたいなら自分の特定につながりそうなことはすべて消すだろうし、
根っからの技術者である人物がそんなしょうもないことをするとは思えない。**

### 追記

冷静に考えればユーザー名を隠したいだけなら記事タイトルを変える理由が特にない。

転職時のアピール用ならむしろ記事タイトルと内容は残すべきと考えるのが普通だろう。

### 追記の追記

ちなみに記事タイトルは元記事のタイトル名のハッシュではない。<!--ユーザー名も同様。-->（ソルトが必要かもね。）

### 追記の追記の追記

ああ、分かった。
自分の情報を消したかったけど、他記事からのリンクは残したかったのね。

検索エンジンに引っかかりたくないからタイトルと内容を消したけど、
Qiitaからアカウント消すと記事へのリンクが死ぬから、

```md
@see <https://qiita.com/1ed873c7e9a8edd9c695d2fa438cc1ed/items/cad9b4969a7867c73023/revisions/0>`
```

ってやって編集履歴の参照だけは残したのか。

もしこれが理由なら、記事の内容を消して、限定公開への参照にすれば見やすいんだけどね。（純粋に面倒くさかったからか、aタグでリンクがあるとSEOで出やすくなりそうだからしなかった？）

補足しておくと、Qiitaはユーザー名を変えても既存の記事へのリンクは問題なく機能する。

### 追記の追記の追記の追記

仮にそうだとしても、記事の先頭にひとこと、

「筆者は病んだので記事を消します。ですが、他記事からのリンクは残します。内容は編集履歴から見てください。」

って書いてほしいな。
初見だと意味不明でしょ。

## 元記事

### マイページ

https://qiita.com/1ed873c7e9a8edd9c695d2fa438cc1ed

### .NET CoreでC#7.1

https://qiita.com/1ed873c7e9a8edd9c695d2fa438cc1ed/items/cad9b4969a7867c73023/revisions

### iPhoneから署名入りメールを送ってみる

https://qiita.com/1ed873c7e9a8edd9c695d2fa438cc1ed/items/94593da9a80c92432676/revisions

### ASP.NET CoreのRequireHttpsでハマったお話

https://qiita.com/1ed873c7e9a8edd9c695d2fa438cc1ed/items/08e15d7e0337cc4b93dc/revisions

### QiitaのMarkdownのコメントアウトバグ（元タイトルは空文字）

https://qiita.com/1ed873c7e9a8edd9c695d2fa438cc1ed/items/1a2b789ffb4b5b39918a/revisions

<!--
https://qiita.com/1ed873c7e9a8edd9c695d2fa438cc1ed/items/1a2b789ffb4b5b39918a#comment-5993a5c395e5f9283fcd
-->

### JavaScriptで記号のみを用いてできるだけ短く英数字を出力する + 記号のみを用いてFizzBuzzをやってみる

https://qiita.com/1ed873c7e9a8edd9c695d2fa438cc1ed/items/1c0d6881d7648578e34d/revisions

### JS記号プログラミング入門

https://qiita.com/1ed873c7e9a8edd9c695d2fa438cc1ed/items/eeb0b42a1ecbba0c49e3/revisions

### 可読性の高いコードを書いてみる

https://qiita.com/1ed873c7e9a8edd9c695d2fa438cc1ed/items/71d45fd960b8ec8f82ab/revisions

### 閏年判定コードを極限までMinifyしてみる

https://qiita.com/1ed873c7e9a8edd9c695d2fa438cc1ed/items/370d3c8a8027d973fd42/revisions

### iPhoneにSSH接続する

https://qiita.com/1ed873c7e9a8edd9c695d2fa438cc1ed/items/4b18c3a6178788765370/revisions

<!--
https://web.archive.org/web/20201123173147/https://qiita.com/acid_chicken/items/4b18c3a6178788765370
-->

### HTML/CSSで大石泉すきを「描」いてみる

https://qiita.com/1ed873c7e9a8edd9c695d2fa438cc1ed/items/23d24401467301d431b9/revisions

### TypeScript（の型システム）のみを使ってリバーシを作ってみる

https://qiita.com/1ed873c7e9a8edd9c695d2fa438cc1ed/items/c9cead41b6e70b429ee0/revisions
UnityでSEを鳴らす

# やりたいこと
* ボタンが押されたら1発だけ音を鳴らす
* スクリプトからSEを鳴らす方法

## ボタンが押されたら1発だけ音を鳴らす
ボタンのクリック音を鳴らしたいときなどに使います。

### やり方
1.空のゲームオブジェクトを作成
2.「Audio Source」コンポーネントをアタッチ
3.音を鳴らしたいボタン側に「Event Trigger」コンポーネントをアタッチ
4.「Add New Event Type」をクリック
5.「Pointer Down」（ボタンが押されたら音を鳴らす）を選択
5.左下の枠に 1 のオブジェクトをアサイン
6.鳴らしたいSEを右下の枠にアサイン
7.右上のプルダウンで「AudioSource.PlayOneShot」（SEを1発だけ鳴らすもの）を選択

![スクリーンショット 2024-05-27 8.17.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3771111/eaef0cc1-56df-5b31-bfa2-3022d4f33c66.png)

以上です。

## スクリプトからSEを鳴らす方法
事前に上の手順の1と2までは終わらせておきます。
それ以降の操作は鳴らし方によって異なります。

### スクリプト
こちらは、左矢印キーが押されたときにSEを1回鳴らすという想定で用意しました。
「Audio Source」コンポーネントを追加してあるオブジェクトにアタッチして使います。

```
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SETest : MonoBehaviour {

public AudioClip _se1;
AudioSource _audioSource;

 void Start () {
   _audioSource = GetComponent<AudioSource>(); //Componentを取得
 }

 void Update () {
  if (Input.GetKeyDown (KeyCode.LeftArrow)) 
  {
    _audioSource.PlayOneShot(_se1); //音(_se1)を鳴らす
   }
 }
}
```

### 余談「上記のスクリプトを使いこなす」
スクリプトから鳴らすのであれば、`public AudioClip _se1;`の行を量産してInspectorからアサインしていけば複数のSEも一括で管理できそうですね。
音を鳴らしたいオブジェクトひとつひとつにSEのファイルをアサインしていくのは少々手間なので、うまく使えるといいかもしれないなと思いました。

```
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SETest : MonoBehaviour {

public AudioClip _se1;
public AudioClip _se2;
AudioSource _audioSource;

 void Start () {
   _audioSource = GetComponent<AudioSource>(); //Componentを取得
 }

 void Update () {
    KeyDownPlay();
 }

// キーが押されたら音を鳴らす
 public void KeyDownPlay(){
    if (Input.GetKeyDown (KeyCode.LeftArrow)) 
  {
    _audioSource.PlayOneShot(_se1);
   }
   if (Input.GetKeyDown (KeyCode.Space)) 
  {
    _audioSource.PlayOneShot(_se2);
   }
 }

// ボタンを押したら音を鳴らす
// ※このやり方をする場合EventTriggerは不要です。ボタンを押したらこの関数を呼び出すようにしてください
 public void PlaySE1(){
    _audioSource.PlayOneShot(_se1);
 }

}
```

# 最後に

シーン遷移同様、SEもできるだけ楽に、また簡単に管理できるよう心がけていきたいと思います。
AudioSourceやEventTriggerに対する知識がまだ少ないので、そこはまたこれから別の記事でまとめられたらいいかなと思っています。実装だけでなくパラメーター調整の方も知りたいという方はもう少々お待ちくださいませ。
RubyKaigi2024に参加しました！

# はじめに
ハイサイ！ 楽天ラクマでサーバーサイドエンジニアをしている[ななな](https://x.com/na8Ka23_09)と申します！ 今年でエンジニア生活3年目です！
今回、人生初のRubyKaigiに参加してきました！(沖縄！:island:）
本記事では実際に参加したセッションをいくつかピックアップして振り返りをしていきたいと思います。(何か間違いがあれば是非教えていただけると:bow:) 
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3797507/44a10957-55e7-344e-aa77-d0bbc22fcbe9.jpeg" width=400 height=400>
↑那覇空港にも案内がありました！うれしい！!

# いくつかセッションをピックアップ
## An adventure of Happy Eyeballs
https://rubykaigi.org/2024/presentations/coe401_.html#day1

スライド： https://speakerdeck.com/coe401_/an-adventure-of-happy-eyeballs

Happy Eyeballs Version2(HEv2)とは、DNSの名前解決においてIPv4, IPv6に対し並列に問い合わせを行い、早く名前解決できた方で接続を確立する、というアルゴリズムです。
RFC 8305で定義されています。

これをRubyのsocketライブラリに実装されたという内容でした。

HEv2では各状態によって指定時間の待ちが発生したり、ソケットの状態を考慮したりと、実装の際に考慮することが多いですがこれをステートマシンを用いて実装されたとのことでした。 今回のSocketライブラリの実装はRuby3.4に取り込まれる予定だそうです。

デモではIPv6のアドレスの名前解決に時間がかかる(sleepした場合)でも、無事に接続を確立することができていました！

実際の発表ではより詳細に実装について説明があり、ステートマシンを用いて複雑な仕様を実装に落とし込むところがとても勉強になりました。

## Leveraging Falcon and Rails for Real-Time Interactivity
https://rubykaigi.org/2024/presentations/ioquatix.html#day2

pumaの代わりに[socketry/falcon](https://github.com/socketry/falcon)と[socketry/live](https://github.com/socketry/live)を用いて、railsと組み合わせてインタラクティブなゲームを作るといった発表でした。
socketry/liveと[socketry/live-js](https://github.com/socketry/live-js)がwebsocketで通信を行いブラウザにレンダリングするそうです。
またサーバー側でゲームロジックを実装してhtmlをクライアントに返すアーキテクチャでした。

発表ではflappy-birdが題材でしたが、実装もシンプルでとても理解しやすかったです。
デモではmatzが壇上に上がり実際にプレイしていました。とても会場も盛り上がっていました！

## RubyGems on ruby.wasm
https://rubykaigi.org/2024/presentations/kateinoigakukun.html#day2

スライド: https://speakerdeck.com/kateinoigakukun/rubygems-on-ruby-dot-wasm

ruby.wasm作者の方の発表でした！このほかにも3つほどwasm関連の発表がありました。
- https://rubykaigi.org/2024/presentations/udzura.html#day2
- https://rubykaigi.org/2024/presentations/remore.html#day3
- https://rubykaigi.org/2024/presentations/ledsun.html#day3

ruby.wasmでRubyGemsのインストールの方法は以下の2つあるそうです。
- On-the-fly installation -> ランタイムにgemのインストールを行う。なのでランタイムにfetch APIの外部アクセスが飛ぶ
- Pre-installation -> ビルド時にgemのインストールを行う。なのでランタイムに外部アクセスしなくてよい

On-the-fly installationではできなかったC-Extensiton Gemのインストールを、Pre-installationで近日中にできるようになるそうです！

技術的には[component-model](https://github.com/WebAssembly/component-model)をruby.wasmにも導入することで上記を実現したようです。
component-modelはAOT dynamic linkingという手法を用いて動的リンキングを実現しているようです。
最新のwasm関技術を取り入れていることにとても感動しました:thumbsup: 
将来的にはPR上でステージング環境を生やすことができるかも？という話もありました。

デモではmastodonを実際にブラウザで動かすことに成功していました！会場もかなり盛り上がりました！！

# さいごに
初めてのRubyKaigiでしたが、雰囲気含めとても楽しかったです！
day3のRubyコミッターたちの座談会(?)は、Rubyの今後についてフランクに話し合う感じで、Rubyの雰囲気が出ててとてもおもしろかったです！
心残りがあるとすれば、parserの話などは正直わからなかったのが悔しかったです:cry:
もっとCSの予習してから参加すればより楽しめたのかな〜と思いました。来年までに本読むぞ~~

After partyは他の会社のRubyistたちと話すことができてとても楽しかったです！
ハブ酒などもいただき沖縄を最後まで満喫することができました！

最後にbluesealのアイスです！
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3797507/ad1a9cf2-79f0-4dcc-11b4-91de70e6870b.jpeg" width=200>

会場でも配られましたが美味しかったので空き時間に買って食べました！
塩ちんすこう味が特に美味しかったです！
Self-Supervised Learningのlibrary比較

# Self-Supervised Learningのlibrary比較
- まだサポートされているか
- pipから簡単にinstall出来るか
- maintainerは信頼出来るか
- training pipelineのlibraryは何か
- comercial use出来るか

| | last-update | pip package | maintainer | training-library |
|--|--| ---| ---| ---|
| [lightly](https://github.com/lightly-ai/lightly/tree/master) | up-to-date | Yes | Lightly.ai | pytorch-lightning |
|[EasyCV](https://github.com/alibaba/EasyCV) |up-to-date| Yes | alibaba | mmcv |
| [solo-learn](https://github.com/vturrisi/solo-learn/tree/main) | 2024Jan | No | Individual | pytorch-lightning |
|[mmselfsup](https://github.com/open-mmlab/mmselfsup)| 2023Jul| Yes | mmlab | mmcv |
|[vissl](https://github.com/facebookresearch/vissl/tree/main)| archived | No | facebook | own |

# 結論
lightlyがオススメ。
好みでEasyCVでも良いが、mmcvは良くversion mismatchが頻発するので注意が必要。
特定の子要素のみにクリックイベントを割り当てたいときはe.stopPropagation();を使用する

# はじめに
React×TypeScriptでアプリを作成しています。
「特定の要素だけをクリックしたい！」と思うことがあり、初めて`e.stopPropagation();`を使用したので概要を軽くまとめます。
# e.stopPropagation();とは
**クリックイベントのパブリング（特定のイベントが親要素に伝播する現状）のを防ぐために使用されます。**
つまり、**特定のイベントを特定の要素のみに割り当てたい時に使用します。**
***
**イベントパブリングとは** 


JavaScriptのDOMツリー内で発生したイベントが、**発生した要素から親要素に向かって順番に伝播していく現象**です。

仮に子要素のボタンをクリックした場合、クリックイベントは下記の順番で発生します。
```jsx:jsx
<div id="parent">
  <button id="child">Click me</button>
</div>
```
1.子要素（ボタン）
2.親要素（div）
3.（存在する場合）さらに上位の親要素へ

**1→2への伝播を防ぐ場合に`e.stopPropagation();`を使用します。**
# 具体例
```tsx:tsx
import React from 'react';

const App = () => {
  const handleParentClick = () => {
    console.log("親要素がクリックされました");
  };

  const handleChildClick = (e) => {
    e.stopPropagation(); // 親要素へのバブリングを停止
    console.log("子要素がクリックされました");
  };

  return (
    <div onClick={handleParentClick} style={{ padding: '20px', border: '1px solid red' }}>
      親要素
      <button onClick={handleChildClick}>子要素のボタン</button>
    </div>
  );
};

export default App;
```
# 必要ないケース
**・親要素にクリックイベントが設定されていない**場合
・子要素のクリックイベントが親要素のイベントに影響を与えない場合
# 参考

https://developer.mozilla.org/ja/docs/Web/API/Event/stopPropagation
cinで１文字目が消えてる・・・。（備忘録）

## 本ページの構成
- やりたいこと
- 結論
- 理由
- 雑談


## やりたいこと
住所登録を名前でファイリングするアプリを作っています。
日本語では文字化け対策が必要なので、ひとまずローマ字入力でファイルを作って云々・・・。
chatGPT先生に質問をしつつ、コーディングを進めていると、

```ターミナル
名前を入力してください：tanaka yasusi
住所を入力してください：america
anaka_yasusi.txt住所が追加されました。
```
**なんでやねん**
てなわけで、結論

### 結論
ignore()が原因だったみたい。
```adress.cpp
cout << "名前を入力してください：";
  cin.ignore(); //コイツ
  getline(cin, name);
```

## 理由
~~リファレンスを参考にしてみたけど、まだイマイチ読み取れないのですがこのように考えました。
入力値の一時保持をクリアするために書いたコードだったのですが、ignore()は仮引数が入るので、0が入っていることが原因。
つまり、 0番目の文字が消えていると。~~
全くのignoreのことを理解できていないようでご指摘をいただきました。
詳しくはコメント欄参照
（@SaitoAtsushiさん、ありがとうございます）

### 久しぶりの投稿
しばらくテスターでプログラミングの勉強ができなかった結果、プログラマとしての人生を出発できないでいました。
Rubyの開発に携わったけど、複数案件の掛け持ちで鬱っぽくなったので休職。
そして今回、現場でC++の案件に携わることができました。
ポートフォリオの作成をしつつスキルアップするために投稿しようと思います。
2024年開催ハッカソンまとめ

## はじめに
本記事では、2024年に開催されるハッカソンをまとめました。
記載されている情報に誤りがある場合は、
コメントなどで教えていただけると幸いです。

## enXross Hackathon
- **日程・場所**: 
    - 説明会および現地見学会（DAY1）
        日時：2024年6月4日(火) 10:00~18:00
        会場：東京ドーム ローラースケートアリーナ
    - 提出作品締切 / 予選審査会
        日時：2024年6月中旬ごろ
        会場：オンライン開催（予定）
    - 最終プレゼンテーション・審査会
        日時：2024年7月4日(木)
        会場：東京ドームホテル 地下1階「天空」
        ※「enXross 2nd」イベントステージにて開催
- **賞金**: 
    - 最優秀賞（1チーム）：賞金300万円
        ＋「Augmented World Expo Aisa 2024（8月26-28日 / シンガポール）」へのご招待
        ※チーム最大5名分までの航空券・宿泊費を東京ドームが手配
        ※AWE Asia 2024 東京ドーム出展ブース内でのデモコーナー設置権
        ※専門家によるメンタリングの実施
    - 優秀賞（1チーム）：賞金100万円
    - 優良賞（1チーム）：賞金50万円
    - 優良賞（1チーム）：スポンサー賞などを予定

https://www.tokyo-dome.co.jp/enxross/overview/

## TechSeeker Hackathon
- **日程**: 6月8日、9日
- **場所**: 
    - 6月8日、9日アイデアソン・チームビルディング
    ATC特設会場（大阪市住之江区南港北2-1-10ATC内）
    - 7月6日、7日： 展示発表（審査会 7月7日）
ATC特設会場（大阪市住之江区南港北2-1-10ATC内）

https://techseeker.jp/hackathon2024/

## RSS Hackathon 2024 Beyond
※学生向けハッカソン
- **日程**: 2024年6月21日〜6月23日
- **締切**: 2024年6月9日(日)23:59
- **場所**: 東京都中央区京橋3-1-1 東京スクエアガーデン7F
- **賞金**: 総額75万円
- **補助**: 一都三県（東京都、千葉県、神奈川県、埼玉県）以外にお住まいの方には交通費・宿泊費一部支給あり
- **詳細**: [RSS Hackathon 2024 Beyond公式サイト](https://race-ss.co.jp/hackathon)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3795089/f43f6a3f-aa9c-8cd9-d152-9b7267f44507.png)

## 国内版バイオハッカソン BH24.6
- **日程**:2024年6月24日(月)〜6月28日(金)
- **場所**:水上高原ホテル200 (群馬県利根郡)

https://github.com/dbcls/bh24.6/wiki

## Qiita Hackathon 2024
- **日程**: 
    - 予選：2024年9月21日（土）、22日（日）
    - 本選：2024年10月19日（土）、10月20日（日）
※本選は予選通過チームのみの参加となります。
※本選2日目の18：00～に懇親会を予定しております。
- **場所**: 
    - 予選：オンライン
    - 本選：東京都内近郊
    
https://corp.qiita.com/releases/2024/04/qiita-hackathon-2024/


## Web×IoT メイカーズチャレンジ PLUS
- **日程**: 
    - 秋田会場 (講習会 10/5–6・ハッカソン 11/16–17)
    - 三重会場 (日程調整中)
    - 鳥取会場 (日程調整中)
    - 岡山会場 (講習会 8/10–11・ハッカソン 9/28–29)
    - 香川会場 (講習会 9/14–11/2・ハッカソン 12/14)

https://webiotmakers.github.io/2024/


## NASA Space Apps Challenge 2024
- **日程**: 
    - 2024/10/5(土)10:00 〜 2024/10/6(日) 20:30
- **場所**: 
    - 山手縁乃庭（神奈川県横浜市中区）

https://spaceapps.yokohama/

## 第11回 石巻ハッカソン2024
- **日程**: 
    - 2024/10/12(土)14:00 〜 2024/10/14(月)15:00
- **場所**: 
    - 石巻グランドホテル2階 宮城県石巻市千石町2-10

https://techplay.jp/event/922653


## Vonage Hackathon 2024
- **日程**: 
    - 9/28(土)12:00-17:00
    - 10/12(土)12:00-17:00
- **場所**: 
    - Day1　9/28(土）は全員 オンライン 　
    - Day2　10/12(土)はオンライン・オフライン（東京・外苑前駅）の ハイブリッド 開催

https://mashupawards.connpass.com/event/328317/


## データ利活用やってみよう！ハッカソン2024
- **日程**: 
    - 2024年10月12日(土) キックオフ @QUINTBRIDGE
    - 2024年10月19日(土) 14:00-17:00 ハンズオン・アイデアソン・チームビルディング @ QUINTBRDIGE
    - 2024年11月9日(土) 14:00-17:00 中間発表会 @ QUINTBRDIGE
    - 2024年11月16日(土) 14:00-17:00 成果発表会 @ QUINTBRDIGE

https://enjoy-pda.connpass.com/event/327540/


## PLATEAU Hack Challenge
- **日程**: 
    - 複数あり
    
https://www.mlit.go.jp/plateau-next/#introduction

## 学生向けのハッカソンはこちら

https://qiita.com/_sayako21/items/684bad8aaa8ae0ec406c
【python】配列の要素の値を簡単に変える方法

# はじめに
pythonで特定の要素の値を変える方法を簡単に実装しました。

## 問題
>1 行目に整数 A, B, N が与えられます。
>2 行目に N 個の整数 a_1, a_2, ..., a_N が与えられます。
>N 個の整数のうち、その数が A だった場合、B に書き換えてください。
>書き換えた N 個の整数を改行区切りで出力してください。

## 実装したソースコード
実装したソースコードは下記になります。

```python
b,t,n = map(int,input().split())
array1 = list(map(int,input().split()))
for i in range(n):
    if array1[i] == b:
        array1[i] = t
    print(array1[i])

```

## 実行した結果
![test2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1055346/3835438e-735f-2615-0d80-00154be14b69.jpeg)

# 最後に
map関数を使えば簡易に実装できますね。
技術書典 16 に「開発論論」を出してみた

昨年 (2023年) 末のこと

https://qiita.com/e99h2121/items/6dca74e4b270646041bc#%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AF%E4%BD%93%E5%8A%9B%E3%81%A0

> 本を出す

と、宣言していました。その「有言実行」をした記録です。


## 「開発論論」

https://techbookfest.org/product/suzuALeaBg8uu7jvn6YBXM

> 私の「前職」の考え⽅は「開発は⾃分で考え抜け」が根底にありました。これは⽇本のソフトウェア屋さんとしては珍しく、この考え⽅を共通認識にする、皆で浸透させていくことに成功したのは、「開発論」というものの存在が⼤きいです。⼤きいですが、⾔葉にしてみると「開発論」って⼤層な名前ですよね。常にその説明に苦慮してきまして、まあ、なんかそういう参考図書みたいなものがほしいと思っていました。

> なんとなく当時⽇系 IT 史の奇跡とも⾔われた会社のプロダクト開発が、どういった理念のもとに築かれたのか、イチ開発者 n=1 ⽬線の戯⾔として楽しんでいただけたらと思います。

こう書くと真面目な本ですが、まあ前職関係の人だけにブッッ刺されば良いかなと思っていたところ、Twitter (現 X) 上でもささやかに反応を頂いたりしてとても嬉しい経験ができています。



## 執筆環境

Re:VIEW Starter です。

https://qiita.com/e99h2121/items/72b21cb104f8dee523e0

https://qiita.com/kauplan/items/d01e6e39a05be0b908a1


## ゲスト、小ネタ

書いているうちに、レビューを挟んだ方が良いだろうという気持ちになりました。レビューがてら前職の先輩 2 名に、「開発論論」に寄せて を書いてもらいました。ほか...


https://x.com/e99h2121/status/1793193729257308402

https://x.com/e99h2121/status/1779301804230291723

https://x.com/e99h2121/status/1778237666565447871

https://x.com/e99h2121/status/1780344705559015861

https://x.com/e99h2121/status/1778500505876005235

https://x.com/e99h2121/status/1770186213304983957


## 関連

https://qiita.com/e99h2121/items/96617b041637e2bd7828


## ほか参考

https://qiita.com/Subara3/items/f3d2ebcac0cddf791eb6


本を出したい！と思ったときに商業誌、同人誌は選択の分かれるところだと思います。圧倒的に多くの人に届く商業誌がどう考えても格好良いだろう、としか思えていなかった私ですが、同人誌には自分の一存で、どんなに狭くても届いてほしい人に届く魅力があります。そしてそれだけではない、同人誌だからこそ攻められるテーマがあると感じ、とても楽しい経験です。

というわけでよろしければ。

https://techbookfest.org/product/suzuALeaBg8uu7jvn6YBXM

以上です～