OmniAICreator/Qiita-1.07M huggingface dataset:
DaVinci Resolve 19 日本語化

* う～ん「Webサイトを日本語にしてからダウンロードか？」など、迷走したのでメモを残します。
* 要は、起動直後の画面には設定メニューが無く、ダミーで良いのでプロジェクトを作成してから、設定メニューを開くのがポイントです。
* フリーなので、あまり文句言えないですが、***起動直後の画面に「こそ」設定メニューへの導線が必要***な気がします。

### 1. 最下段、右から２番目「New Project」を押下して、ダミーのプロジェクトを作成
![111.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3130948/074826af-6b29-9131-3391-3a258e79e76b.jpeg)
![1.1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3130948/af0a4219-8c7b-6f9e-bea4-25bc84e535af.jpeg)

### 2. 「DaVinci Resolve」→「Preferences...」メニューを選択
![2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3130948/2aafaa8a-0d2a-3a46-a717-e539b5a63a71.jpeg)

### 3. 「UI Setteings」画面が表示されるので「User」タブの「Language」のプルダウンメニューから「日本語」を選択し、「Save」
![3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3130948/25d35e14-7063-c652-6015-f63b6c49deb6.jpeg)

### 4. アプリを再起動すると日本語化されます
![4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3130948/ab15d131-27c4-582f-0100-63f49c94d82e.jpeg)
C++ init-statementをもっとうまく使おうよという話

C++17ぐらいから，if-initstatementという文法が追加されている．最近の教科書では紹介されないので代わりに私が紹介．

# 拡張for文

```C++
for(auto v: vector){
    // do something concern about v
}
```
この文法は非常にメジャーである．コンテナ型であるところのvectorの要素を一つずつコピーしてきて，その要素をブロック内で執り成すよ，という文法である．

# forwarding reference+拡張for文

```C++
for(auto& v: vector){
    // do something concern about v
}
```

C上がりたての人たちはあまり使用していないが，C++にはlvalue reference, rvalue referenceという概念がある． lvalue rvalueについて細かく解説はしないが，名前がついているものがlvalue, 名前がついていないもので使用されている部分以外では即時破棄されてしまうようなものをrvalueと呼ぶ，とでも誤魔化しておく．
`auto&& x`という文法はforwarding referenceeという文法で，lvalueかrvalueを取り出してきて，その値を参照するためにxを用意する，という文法である．C#に慣れている人であれば関数越しではないoutやrefのようなものと理解してもらえればよい．
この文法を利用することで，vector->vへコピーせずに参照だけ用意するので，vectorの中身がリテラルではないような，例えば2重vectorであるかのような時にオーバーヘッドを少なく取り出すことができる． 


# if init-statement
本題．
```C++
if (const auto err = cudaHostRegister(p, s, cudaHostAllocMapped);
    err != cudaSuccess)
{
    printf("error code: %d\n\t%s\n", err, cudaGetErrorString(err));
}
```
C++っぽいことがしたかったので，試しにcudaの例を持ってきた．
cuda APIでは，ほとんどの関数をたたいた時に返り値にそのエラーコードを吐き出す．
このとき，エラーコードはcudaError型の値として取り出されるのである．

Try-Catchなどでも利用するこのようなエラー変数はエラー処理が終わったら基本的には使わない．ifの外ではスコープが切れてほしいとさえ思う．そのような方のためにif init-statementという構文が存在する．if文の中でセミコロン付きで変数を宣言し，それをif文の中で使用できる．if文のブロックを抜けるとスコープが切れる．for文のinitとスコープは同じ挙動を示す．




これだけだと，ただの便利構文になってしまうのだが，さらに安全な点がある．
```c++
if (char buffer[256] = {0};
    scanf("%s", buffer)){
    // do something    
}
```
ポインタ型を利用するような構文をif init-statementで利用する時，このスコープから外れるだけではなく，破棄されるのである．

以上．
絶望的なコードミス

## はじめに
こんにちは、Qiitanのぬいぐるみが欲しくて参加したbockringです。私は過去に直すのがとぉ〜っても面倒なミスをしたので教訓というか戒めというか、と言った感じです。

ちなみにミスの舞台はArduino上で動作するOS。安直に「ArduOS」していました。

## どんなミス
その時書いたコードはもう使ってないので出しませんけど(あまりにバグが多過ぎて1から作り直しています…笑)、変数でとんでもないミスをしたんですよね。変数のミスです。←え？w

私は英語は全然ダメ(スペルが本当に…)です。なのに数々の変数名をスペルミス続出するような名前にしたんです。

**スペルミスその1**
1つ目は`different`です。単に前回の処理との差分を処理するために一時キャッシュ的な変数です。単純に`diff0`,`diff1`,`diff2`…のように短くすれば良かったのに。fの数がズレたりeが抜けたり。直すの、しんどかったです。

**スペルミスその2**
次に`cache`。まさかのここでもミスです。その1のものよりさらに下層のキャッシュ変数です。`cache`が`chache`になったり`cashe`になったり…　英語を学ばねばっ！

**演算子多用**
これはスペルミスを直すより面倒でした。1回目に書いた時、何を血迷ったのか演算を分けたんですよね。確かにこれでバグは回避できるんですけど、流石に分けすぎってことですね。

**変数型指定ミス**
本当に終わってます。泣きそうです。これはコメントで気づいたので追加しましたが、まさかコメントでミスをするとは…(日常)

上記3つのミスを極端に合わせるとこうなります。
```C:Demo
float value1;
long value2; //float型
int diffrent = 0; //diff"e"rent(スペルミス)
long cache = 1;

void setup () {
  value = rondom(-10.00, 10.00); //value"1"(ID指定忘れ)   r"a"ndom(スペルミス)
  value2 = random(-10.00, 1000); //10"."00(小数点忘れ)
  chache = value1 * value2 //;忘れ
  diferent = value1 / value2; //dif"f"erent(スペルミス)
  different = cache / different
}

void loop () {
  delay(1000);
}
```
ちょっとこれは過激に書きましたが本当にこの調子です。酷いですね。最後の`delay(1000);`は無限ループの無処理回避なので気にしないでください。もっと綺麗にできますよね。演算だけ整えましょうか。
```C:After
  different = value1 * value2 / value1 * value2;
```
ちょっと1行が長くなろうとこっちの方が絶対にいいです。なんなら`cache`変数を無くせてスペルミスも減らせます(もしくは変数の総数を減らしてバイト数確保)。

## おわりに+教訓
短いですがありがとうございました。これを書いていて自分でもミスが恥ずかしく思いました。それとともに自分を恐ろしく思ったり…　ということで教訓です。

**教訓**
コードの行数は減らし、変数名は短く明確に。(←当たり前のことを言っているだけです)

これでコンパイル後の手直しも幾分が楽になります。

それではまた今度〜
【AppSheet】Googleスプレッドシート内の画像をAppSheetで使用する方法

# はじめに
AppSheetを使ってメニュー画面を作成し、メニュータイル用にアイコン画像を使用しました。
その際、以下の画像のように表示されない問題が発生しました。
この問題について調査し、スプレッドシートで画像をデータソースとして取り込む方法について記載します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3516839/cd55c4d6-9a36-7b3f-4451-954bf25c31fa.png)

# 前提
メニュータイル内にアイコン画像を読み込みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3516839/34d799f0-1e14-2410-b279-16843cc3bc73.png)


## 事前準備
使用するアイコン画像をGoogleドライブに保存します。

:::note warn
画像ファイルは、データソースに使用するスプレッドシートと同じフォルダ内、もしくはそのサブフォルダに保存してください。
:::

今回は以下のフォルダに保存しています。
``マイドライブ/appsheet/data/作成されたアプリのフォルダ/アイコン/``

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3516839/24eeed42-a8b2-0f1f-a6c6-8609b33ca759.png)


アイコンは以下のサイトからダウンロードしました。

https://icooon-mono.com/

## 画像の追加手順
**①データソース用のスプレッドシートを作成します。**
保存場所：``マイドライブ/appsheet/data/作成されたアプリのフォルダ``

「ホーム画面」という名前でスプレッドシートを作成し、項目としてMenuとimegeを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3516839/5ac47e1f-cdcb-159d-33e5-ea380eae0e92.png)


**②データを追加します。**
menu:表示する名前
image:画像のファイルパス

:::note info
画像のファイルパスは``アイコン/ファイル名``形式または``ファイル名``のみで参照可能です。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3516839/20042da9-b0f4-2279-d5a2-f9a19a3c1016.png)

**③作成したスプレッドシートをAppSheetに追加します。**
1.「+」ボタンを押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3516839/f1572aeb-edbc-9ec3-0332-2658f1ffcb03.png)

2.「GoogleSheets」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3516839/e1637cb0-4b86-75b1-2ea2-f338edd7e588.png)

3.データを選択し、「Add 1 table」を押下します。
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3516839/08f6522e-4e0a-c201-3bda-7f6fae0e3398.png)

**④テーブル追加後、データの「TYPE」を修正します。**
| NAME     | TYPE   | 
|:--------|----------:|
| Menu    | Text      |
| image   | Image     |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3516839/ab8667e2-174e-62ba-6548-7e0af073aece.png)

プレビューを確認すると、アイコンが表示されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3516839/7efe4282-13c0-04d4-6ccb-fc600ad7ade3.png)


# さいごに
画像がうまく表示されない原因は、画像の保存場所でした。
Appsheetに画像を取り込む方法は複数ありますが、その中でもデータソースとして取り込む方法を紹介しました。
当記事が参考になれば幸いです。
【ChatGPT＋DALL-E3】で苦戦している方（初心者）でもイメージを言語化できれば、盛ってくれるPromptShare


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

　今回は、苦戦している方や初心者でもイメージを言語化できれば、ChatGPTが盛ってくれるPromptをShareします。

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

　昨夜（2024/06/11 2:00）
　　Apple社のWWDC24がありました。

　私は眠気に勝てませんでした😅

　詳しくはこちら。
[WWDC 2024 基調講演 まとめ](https://qiita.com/mashunzhe/items/7e7bc2684a132b96bb61)

　一緒に発表されたのが
　　OpenAIとの提携。
[OpenAIポスト](https://x.com/OpenAI/status/1800240380220473552?t=zBVfKcJr14OLmR6pY_J5SA&s=03)

　今年後半には
　　Appleのデバイスと
　　　連携予定とか。
***
　さて、本題です。

　今回は、
　　昨日（2024/06/10）の記事で
　　　使ったPromptを発展させて、
　　　　イメージを伝えて、
　　　　　描画してもらう
　　　　　　Promptを書きました。
[【ChatGPT＋DALL-E3】絵文字で画像生成](https://qiita.com/kabumira/items/b0cc1b3be7665ca3965e)

　このPromptにより、
　　ChatGPTでの描画に
　　　**苦戦している方々**や
　　　　**初心者さん**でも
　　　　　イメージさえ
　　　　　　言語化できれば、
　　　　　　　あとはChatGPTさんが
　　　　　　　　膨らませてくれます。

　ではさっそく
　　Promptをどうぞ。
```Text:
[]　描画条件として、[STYLE]スタイル、アスペクト比[ASPECT RATIO]
[]　[IMAGE]になるようにプロンプトを作成
[]　そのプロンプトで画像を生成
```
　描画条件やアスペクト比は
　　指定しないと、
　　　勝手に決定されてしまいます。
　　　　ここは必ず指定しましょう。

　各変数の説明ですが、
　　[STYLE] ……画風スタイル
　　[ASPECT RATIO]
　　　　　　……アスペクト比
　　[IMAGE] ……言語化したイメージ

　画風スタイルは
　　写真
　　水彩画
　　油絵
　　アニメ
　　イラスト
　　マンガ
　　フィギュア　などなど。

　アスペクト比は
　　1024x1024　または、正方形
　　1792x1024　または、横長
　　1024x1792　または、縦長

　イメージは
　　誰が、どこで、何してるのか
　　　そんな簡単なものでも
　　　　構いません。
　　　　　5W1Hでも参考に
　　　　　　してください。
　　　　　　　“若い女性”だけでも
　　　　　　　　イケます。確認済。
***
　別に
　　このPromptを
　　　使わずにやっても
　　　　生成はされます。

　でも
　　決まったフォーマットがあれば、
　　　そこにイメージを入力するだけで
　　　　右往左往せずに済みます。

　ほどよい画像が得られたら、
　　その画像のPromptを編集して
　　　より理想に近付けることが
　　　　可能になります。

　また、
　　ChatGPTやDALL-E3には
　　　回数制限があります。
　　　　具体的にはわかりませんけどw

　生成回数を
　　抑えれば、
　　　それだけ出来ることが増えます。

　このPromptは
　　三つの処理を一度で
　　　済ませているので、
　　　　それだけでも
　　　　　リソースを減らさずに
　　　　　　いられます。
***
　サンプルは
　　以下のX-Twitterのポストを
　　　参照してください。

[荒野のアウトロー](https://x.com/kabumira862571/status/1800066218415796323?t=ljjR01ZaYIhHZtenO7wVcg&s=19)

[喫茶店にいるひとりの客](https://x.com/kabumira862571/status/1800057285630447927?t=v_9LlI7ydVDWNLW38ghfig&s=19)

[女子高生](https://x.com/kabumira862571/status/1800069878810038613?t=GGyv8CrgbRqAIVHYHT606Q&s=19)

[蒼の洞窟](https://x.com/kabumira862571/status/1800083382405324977?t=9T_RiJ08YPA-QvFXqkB5OQ&s=19)

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

　今回は、ここまで。
【Python】NotImplementedError: isna is not defined for MultiIndex

## 起きたエラー
seabornでbarplotしようとした際に以下のエラーに遭遇。
```NotImplementedError: isna is not defined for MultiIndex```

実行したコードは以下(データは某Titanicを使用)：
```python
data_count = train.groupby(["Sex","Survived"])["Survived"].count()
sns.barplot(x=data_count.keys(), y=data_count.values)
plt.show()
```

どうやら、data_count.keys()の戻り値がMultiIndexになっているらしい。
※groupbyで2つカラムを入れるとMultiIndexになるっぽいですね。

## 解決法
MUltiIndex.to_flat_index()を使うとOK！
※MultiIndexではなくIndexを使わないといけない。
```python
data_count = train.groupby(["Sex","Survived"])["Survived"].count()
sns.barplot(x=data_count.keys().to_flat_index(), y=data_count.values)
plt.show()
```

### MuntiIndexって？
↓みたいなやつ
|female<br>child|<br>adult|male<br>child|<br>adult|
|-|-|-|-|

適当な例ですが、
まず女性/男性で分けた後に
女性かつ子ども/大人、男性かつ子ども/大人
に分けるイメージです。

今回のdata_count.keys()の戻り値は実際にこのようになっていることが確認できます。
```python
MultiIndex([('female', 0),
            ('female', 1),
            (  'male', 0),
            (  'male', 1)],
           names=['Sex', 'Survived'])
```
MultiIndexをto_flat_index()で展開すると普通のIndexになっていることも確認できます。
```python
Index([('female', 0), ('female', 1), ('male', 0), ('male', 1)], dtype='object')
```
修正後取得したbarplotでも上記Indexを確認できました。
![download.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/594896/88b3de27-ee4b-f315-067e-0ccebafa7f3a.png)

PandasMultiIndexについては以下も参照

https://qiita.com/papi_tokei/items/05fe87195f7a772c567a
JetBrains 必須級拡張機能

賛否両論ある物は含めないです．


## catppuccin

https://plugins.jetbrains.com/plugin/23029-catppuccin-icons

https://plugins.jetbrains.com/plugin/index?xmlId=com.github.catppuccin.jetbrains&utm_source=product&utm_medium=link&utm_campaign=CL&utm_content=2023.3

catppucinというパステルカラーでかわいいテーマである．
IDEにはめずらしいことにデフォのDarkも悪くはないが，個人的にはカラースキームをそろえるために導入している．これを機にどうぞ．

## Github Copilot

https://plugins.jetbrains.com/plugin/17718-github-copilot

学生なら無料なので，持ってないならぜひどうぞ．学生ではないなら，買ったほうがいいと思います．

Copilotは初心者のエラッタのためのヒントを生成してくれるツールとして役立つ．そのまま使うだけでは何の勉強にもならず害悪であるが，その出力をもとにググると周辺知識が手に入って高速学習に役立つ．たぶんそうだろう．

## GitToolBox

https://plugins.jetbrains.com/plugin/index?xmlId=zielu.gittoolbox&utm_source=product&utm_medium=link&utm_campaign=CL&utm_content=2023.3

IDEに乗ってるデフォのgitのGUI機能じゃ満足できない人にとってはこれがいいんじゃないだろうか．筆者はCLIで全部やっているので知らない．


## IdeaVim

https://plugins.jetbrains.com/plugin/164-ideavim

IDEを用いるのを否定しにかかっているが，正直マウスを触るのが面倒なので入れておくといいだろう．ペイン内のウィンドウ切り替えはAlt + <- ->で，ペイン切り替えはctrl+w + <- ->がデフォルトで設定されている．

## Japanese LP

https://plugins.jetbrains.com/plugin/index?xmlId=com.intellij.ja&utm_source=product&utm_medium=link&utm_campaign=CL&utm_content=2023.3

しょうもないところで消耗するのは無駄なので，言語パックは入れておこう．とはいうものの適宜オンオフしてほしくて，CLionの日本語文献が非常に少ないので英語記事を読むときは無効化したほうが便利だ．

## Key Promoter X

https://plugins.jetbrains.com/plugin/9792-key-promoter-x

ある機能が存在して，その機能にショートカットキーが存在する場合に，その機能をIDEのボタンなどショートカットキー以外を通して実行したとき，そのショートカットキーを右下にプロンプトしてくれる．高速開発のため入れておいたほうがいいと思う．そんなショートカット知らんし，という現象を無くしてくれる．

## ProgressBar

https://plugins.jetbrains.com/plugin/15090-pokemon-progress

JetBrains系統の共通弱点として，プログレスバーが貧弱なことがあげられる．なんでもいいので適当に入れておこう．筆者の友人がお勧めしていたポケモンバーをお勧めしておく．

## WakaTime

https://plugins.jetbrains.com/plugin/7425-wakatime

Vulkanプログラミングのモチベが出ない人はこれ入れておくといいと思う．なんか計時してくれる．

## .ignore

https://plugins.jetbrains.com/plugin/index?xmlId=mobi.hsz.idea.gitignore&utm_source=product&utm_medium=link&utm_campaign=CL&utm_content=2023.3


なんとかignoreを自動生成してくれる．gitignoreのために入れたがなかなか便利である．
【C♯】ファイル読み込みの際に文字コードを自動で判定したい

皆さんはファイル読み込みの際に
文字コードで苦戦したことはありますか？

今回は文字コードを判定する試みを
したいと思います。

100% 正確にとはいかないかもしれませんが
用意した実験データでは
全て正常に判定された実績のある
コードを公開したいと思います。

***

判定に使用したコード

```Csharp:判定に使用したコード
public partial class FileLoadTest
{
    private string LoadFile(string filePath)
    {
        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); // GetEncoding(932) を使用するためのおまじない
        string utf8 = File.ReadAllText(filePath); // utf8 で読み込んだ文字列
        string shift = File.ReadAllText(filePath, System.Text.Encoding.GetEncoding(932)); //shift-jis で読み込んだ文字列

        string utf8Replace = utf8.Replace("�", ""); //代用文字を取り除いた文字列(ここは代用文字を調べて置き換えて下さい)
        string shiftReplace = shift.Replace("�", ""); //代用文字を取り除いた文字列(ここは代用文字を調べて置き換えて下さい)

        int utf8Length = System.Text.Encoding.UTF8.GetByteCount(utf8);
        utf8Length += 12 * (utf8.Length - utf8Replace.Length); //shiftLength と同じ内容のペナルティ

        int shiftLength = System.Text.Encoding.UTF8.GetByteCount(shift);
        shiftLength += 12 * (shift.Length - shiftReplace.Length); //代用文字に対し 12 byte のペナルティ

        if (utf8Length < shiftLength)
        {
            return utf8;
        }
        else
        {
            return shift;
        }
    }
}
```

使用する場合は
「utf8.Replace("�", "")」
「shift.Replace("�", "")」
の部分に対して代用文字を調べて
置き換える必要があります。
ひし形にハテナマークの文字だと思います。

utf8 と shift-jis の
代用文字に 12 byte のペナルティを課した上で
文字数を比較する事で
どちらの可能性が高いかチェックしています。

チェックする文字コードを増やすことで
対応できる文字コードの種類も増えます。

***

以上文字コードの判定方法について紹介しました。

昔苦戦した覚えがあるため
皆さんの作業量が減れば良いと思い
記事にしました。

昔に作ったコードを記事にしたため
もしかしたらペナルティシステムに関しては
参考にしたサイトがあるかもしれません。

しかしながら現在調べた限りでは
そのサイトが見つからなかったため
申し訳ありませんが参考サイトの記載は無しです。

万一参考にしたサイトに心当たりがある方は
是非コメント欄で教えて頂けると幸いです。

皆さんの助けになれますように。
閲覧ありがとうございました。
ポータルサイトとカスタムWebサイト開発サービスの重要性

デジタル時代において、企業が競争力を維持し、顧客との効果的なコミュニケーションを図るためには、強力なオンラインプレゼンスが不可欠です。ポータルサイトとカスタムWebサイト開発サービスは、企業がオンラインでの存在感を高めるための重要なツールです。本記事では、これらのサービスの重要性と、それがどのようにビジネスを支援するかについて詳しく説明します。
ポータルサイトとは
ポータルサイトの概要
[ポータルサイト](https://newwave-solutions.co.jp/build-a-portal-website/)は、インターネットユーザーが様々な情報やサービスにアクセスするための入り口として機能するウェブサイトです。ニュース、天気予報、検索エンジン、メール、フォーラム、ショッピングなど、さまざまなコンテンツを一つの場所に統合しています。これにより、ユーザーは複数のサイトを訪れる手間を省き、必要な情報やサービスを迅速に見つけることができます。
ポータルサイトの利点
ユーザーエンゲージメントの向上: 豊富なコンテンツとサービスを提供することで、ユーザーの滞在時間を延ばし、エンゲージメントを高めることができます。
広告収入の増加: 多くの訪問者を引き付けるポータルサイトは、広告主にとって魅力的なプラットフォームとなり、広告収入を増やすことができます。
ブランド認知度の向上: 広範なユーザー層にリーチできるポータルサイトは、ブランド認知度を高めるための効果的な手段となります。
企業におけるポータルサイトの活用例
企業は、ポータルサイトを利用して社員や顧客に向けた情報提供を行ったり、社内ポータルとして業務効率を向上させたりすることができます。例えば、イントラネットポータルは社員が必要なリソースやツールに迅速にアクセスできるようにし、コラボレーションを促進します。
カスタムWebサイト開発サービスとは
カスタムWebサイト開発の概要
[カスタムWebサイト開発サービス](https://newwave-solutions.co.jp/custom-website-development-services/)は、特定の企業のニーズや目標に合わせて、オーダーメイドのウェブサイトを設計・開発するサービスです。既製のテンプレートでは対応できない独自の要件やブランドイメージに応じたウェブサイトを提供します。
カスタムWebサイト開発の利点
ビジネスニーズへの完全な適合: 企業の特定の要件に合わせてカスタマイズされたウェブサイトは、ビジネスプロセスや目標に完全に適合します。
独自のブランド表現: デザインや機能を自由に設定できるため、企業のブランドイメージを効果的に表現することができます。
スケーラビリティと拡張性: カスタムWebサイトは、企業の成長に応じて柔軟に拡張することができ、新しい機能やサービスを追加する際にも対応しやすいです。
カスタムWebサイト開発のプロセス
要件定義: クライアントとの詳細な打ち合わせを通じて、ウェブサイトの目的や必要な機能を明確にします。
デザインとプロトタイピング: 要件に基づいてウェブサイトのデザインを作成し、プロトタイプを作成してクライアントと確認します。
開発とテスト: デザインに基づいてウェブサイトを開発し、徹底的なテストを行ってバグや不具合を修正します。
導入とサポート: ウェブサイトを本番環境に導入し、必要なトレーニングやサポートを提供します。
ポータルサイトとカスタムWebサイト開発サービスの連携
ポータルサイトとカスタムWebサイト開発サービスは、それぞれの強みを活かして相互に補完し合うことができます。例えば、企業はカスタムWebサイトを通じてブランドの独自性を強調しつつ、ポータルサイトを利用して多様なコンテンツやサービスを提供することで、ユーザーエンゲージメントを高めることができます。
まとめ
ポータルサイトとカスタムWebサイト開発サービスは、企業がデジタル時代に成功するための重要なツールです。ポータルサイトは多様なコンテンツとサービスを一つの場所に統合し、ユーザーの利便性を高めます。一方、カスタムWebサイト開発サービスは、企業の特定のニーズに合わせて設計されたウェブサイトを提供し、ビジネスの目標達成を支援します。
企業がこれらのサービスを活用することで、オンラインプレゼンスを強化し、競争力を高めることができます。成功するためには、信頼できる開発パートナーを選び、綿密な計画と実行が必要です。これにより、企業はデジタル時代における成長と革新を実現できるでしょう。
闘魂Elixir ーー AtCoder Beginner Contest 356(A)を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`関数を定義するわけです。

# [A - Subsegment Reverse](https://atcoder.jp/contests/abc356/tasks/abc356_a)

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


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

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

ポイントはリストの分割です。

左側、中央、右側のリストの分割は、[Enum.split/2](https://hexdocs.pm/elixir/Enum.html#split/2)関数と[Enum.slice/2](https://hexdocs.pm/elixir/Enum.html#slice/2)関数を使うことで上手にわけることができます。


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

  def solve(n, l, r) do
    {left, _} = Enum.split(1..n, l - 1)
    center = Enum.slice(1..n, (l - 1)..(r - 1))
    {_, right} = Enum.split(1..n, r)

    left
    |> Kernel.++(Enum.reverse(center))
    |> Kernel.++(right)
    |> Enum.join(" ")
  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>
NFTマーケットプレイス開発会社とスマートコントラクト開発会社

ブロックチェーン技術の進化により、NFT（非代替性トークン）はデジタル資産の所有権を証明する新たな手段として注目されています。NFTの普及に伴い、NFTマーケットプレイス開発会社とスマートコントラクト開発会社の需要が急増しています。この記事では、これらの開発会社の役割と重要性について解説します。
NFTマーケットプレイス開発
NFTとは
NFT（Non-Fungible Token）は、ブロックチェーン技術を基盤にしたデジタル資産で、唯一無二の特性を持ちます。デジタルアートや音楽、ビデオクリップなどのデジタルコンテンツの所有権を証明する手段として活用されています。
NFTマーケットプレイスの役割
NFTマーケットプレイスは、ユーザーがNFTを売買、展示、オークションできるプラットフォームです。これにより、アーティストやクリエイターは自分の作品をデジタル化し、グローバルな市場で取引できます。
NFTマーケットプレイス開発会社の役割
[NFTマーケットプレイス開発会社](https://newwave-solutions.co.jp/nft-marketplace-development-company/)は、以下の機能を提供します：
ユーザーインターフェースの設計：使いやすいインターフェースを提供
セキュリティ対策：ブロックチェーン技術で取引の透明性とセキュリティを確保
スマートコントラクトの統合：取引の自動化と信頼性を確保
ウォレットの統合：ユーザーがNFTを購入、保管、転送できるデジタルウォレットを提供
スマートコントラクト開発
スマートコントラクトとは
スマートコントラクトは、ブロックチェーン上で自動的に実行される契約です。契約の実行と履行がプログラムコードに基づいて自動化され、信頼性の高い取引が可能になります。
スマートコントラクト開発会社の役割
[スマートコントラクト開発会社](https://newwave-solutions.co.jp/smart-contract-development-company/)は、以下のサービスを提供します：
契約の要件定義：クライアントのビジネスニーズに基づいて要件を定義
コーディングとデプロイ：要件に基づいてスマートコントラクトをコーディングし、デプロイ
テストと検証：スマートコントラクトが正しく機能するかをテスト
セキュリティ監査：スマートコントラクトのセキュリティを監査
NFTマーケットプレイスとスマートコントラクトの連携
NFTマーケットプレイスでは、スマートコントラクトを活用することで、取引の自動化と信頼性を確保します。例えば、NFTの購入、販売、オークションのプロセスを自動化し、ロイヤリティの管理や取引の透明性を高めます。
まとめ
[NFTマーケットプレイス開発](https://newwave-solutions.co.jp/how-to-build-an-nft-marketplace/)会社とスマートコントラクト開発会社は、ブロックチェーン技術の進化とともに新たなビジネスチャンスを創出しています。NFTマーケットプレイスはデジタル資産の取引を可能にし、スマートコントラクトはその取引を自動化し、信頼性を高めます。
これらの技術を効果的に活用することで、企業は新たな収益源を開拓し、クリエイターは自身の作品の価値を最大化できます。企業がこれらの技術を導入し成功するためには、信頼できる開発パートナーを選び、綿密な計画と実行が必要です。NFTマーケットプレイス開発会社とスマートコントラクト開発会社の専門知識と経験を活用することで、持続可能な成長とイノベーションを実現できるでしょう。
【GitHub】プライベートリポジトリのコントリビューションを公開する方法


GitHubを使い始めましたが、プライベートリポジトリで活動していたため
ログアウトしてプロフィールを見ると草（コントリビューション・カレンダー）が真っ白…


・自分が見たとき
![スクリーンショット2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392337/12cd0715-f7e1-e857-a85a-885596c4c540.png)


・他者が見たとき
![スクリーンショット1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392337/e69a5cd5-3578-8df1-ff2d-90b22f0cf99a.png)


プライベートリポジトリのContributionsを公開する方法がありました。


## やり方

ログイン状態でContribution settingsをクリック

![スクリーンショット3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392337/01ae3f9a-b3be-a933-89e1-a97e67690996.png)


Private contributionsのチェックを入れる

![スクリーンショット4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392337/e9f051aa-f6ff-6691-8d68-c9c68fe76063.png)


ログアウト状態でも草が生えるようになりまいた！

![スクリーンショット5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392337/22cc27b6-e1c5-d959-8898-3c3d56330d38.png)

※草をクリックしても「contributions in private repositories」と表記されるのみで、
プライベートリポジトリの内容は表示されませんのでご安心ください。
Discord Developerにメンバーを追加する方法

# はじめに
Discord DeveloperのApplicationsを作成しましたが、他のメンバーの追加方法がわからず苦戦したためこちらにまとめました。

# Discord Developerとは

Discord Developerは、開発者がDiscordのエコシステムを活用してカスタムボットやアプリケーションを作成できるようにするためのプラットフォームです。これには、ボットの作成、アプリケーションのインテグレーション、Webhookの設定、カスタム機能の実装などが含まれます。

# Teamsの追加
Applicationsからメンバーを追加すると思っていましたが、Teamsを作成する必要がありました。
しかし、Teamsを追加する際に２段階認証が求められました。
![スクリーンショット 2024-06-11 10.18.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1991303/050c936d-79b3-af05-a96d-e0f7e7b814e0.png)

Discordの左下の歯車マークからマイアカウントを選択し、**認証アプリの有効化**を行うことで２段階認証を行うことができます。
![スクリーンショット 2024-06-11 10.24.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1991303/57bf3a5c-1ef8-f6bb-1f81-2cc0495add15.png)

認証を通すことで無事にTeamsを作成することができました！

# Teamメンバーの追加
Team Membersから追加するメンバーとReadOnly, Developer, Adminの権限を選ぶことができます。
また、追加するメンバーも２段階認証が必要になります。

# アプリケーションの権限移動

対象のアプリケーションを開きGeneral Informationを選択します。
Tranfer Apps to Teamを選択し、作成したチームに所有権を移動します。
これで無事にteamでDeveloper画面を操作することができました！
![スクリーンショット 2024-06-11 11.03.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1991303/261e1e54-f27b-35dc-60f2-949aa250c165.png)

# さいごに
Discord Developerのプラットフォームは、個人開発からチーム開発まで多様なニーズに対応できるツールが揃っています。チーム機能を活用することで協力してボットやアプリケーションの開発・管理ができるようになるため、ぜひ積極的に使用してみてください！
エンタープライズアプリケーション開発とカスタムアプリケーション開発サービス

現代のビジネス環境において、企業が競争力を維持し、業務効率を向上させるためには、効果的なITソリューションが必要不可欠です。エンタープライズアプリケーション開発とカスタムアプリケーション開発サービスは、そのようなニーズに対応するための重要な手段です。この記事では、これらの開発サービスの重要性とそれが企業にもたらす利点について解説します。
エンタープライズアプリケーション開発とは
[エンタープライズアプリケーション開発](https://newwave-solutions.co.jp/enterprise-application-development/)は、大規模な企業向けに設計されたソフトウェアアプリケーションの開発プロセスを指します。これらのアプリケーションは、企業の複雑なビジネスプロセスを効率化し、データ管理、リソース計画、顧客関係管理（CRM）、サプライチェーン管理（SCM）などの分野で重要な役割を果たします。
エンタープライズアプリケーション開発の主な利点
業務効率の向上: エンタープライズアプリケーションは、業務プロセスを自動化し、データの一元管理を可能にすることで、業務の効率を大幅に向上させます。
データの統合と分析: 企業全体のデータを統合し、リアルタイムでのデータ分析を可能にすることで、迅速かつ正確な意思決定を支援します。
スケーラビリティと拡張性: エンタープライズアプリケーションは、企業の成長に伴うニーズの変化に対応できるように設計されており、柔軟なスケーラビリティを提供します。
カスタムアプリケーション開発サービスとは
[カスタムアプリケーション開発サービス](https://newwave-solutions.co.jp/custom-application-development-services/)は、特定の企業のニーズや要件に合わせて、オーダーメイドのソフトウェアソリューションを設計・開発するサービスです。既製のソフトウェアでは対応できない独自のビジネスプロセスや要件に対応するために、カスタムアプリケーションが求められます。
カスタムアプリケーション開発サービスの主な利点
ビジネスプロセスに完全に適合: 既存のソフトウェアでは対応できない特定のビジネスニーズやプロセスに完全に適合するソリューションを提供します。
競争優位性の確保: 独自の機能やプロセスを実装することで、競合他社に対する競争優位性を確保できます。
柔軟性と拡張性: カスタムアプリケーションは、企業の成長や市場の変化に対応できる柔軟性と拡張性を備えています。
カスタムアプリケーション開発のプロセス
要件定義: クライアントのビジネスニーズを詳細にヒアリングし、要件を明確に定義します。
設計とプロトタイピング: 要件に基づいてアプリケーションの設計を行い、プロトタイプを作成してクライアントと確認します。
開発とテスト: 設計に基づいて開発を進め、品質保証のために徹底的なテストを実施します。
導入とサポート: アプリケーションを本番環境に導入し、必要なトレーニングとサポートを提供します。
まとめ
エンタープライズアプリケーション開発とカスタムアプリケーション開発サービスは、企業が業務効率を向上させ、競争力を強化するための重要なツールです。エンタープライズアプリケーションは、企業全体のプロセスを統合し、効率化を図ります。一方、カスタムアプリケーション開発サービスは、特定のニーズに合わせたソリューションを提供し、独自の競争優位性を確保します。
企業がこれらのアプリケーション開発サービスを効果的に活用するためには、信頼できるパートナーを選び、綿密な計画と連携が必要です。エンタープライズアプリケーションとカスタムアプリケーションの専門家による支援を受けることで、企業はより高い成果を達成することが可能になります。
アメリカのモバイルアプリ開発会社：技術革新とビジネス成功のパートナー

デジタル時代において、モバイルアプリは私たちの生活とビジネスにおいて重要な役割を果たしています。企業にとって、モバイルアプリは顧客との接点を増やし、サービスを向上させるための不可欠なツールです。アメリカには、多くの優れたモバイルアプリ開発会社が存在し、革新的な技術と優れたデザインで企業の成功を支援しています。ここでは、アメリカの主要なモバイルアプリ開発会社とその役割について紹介します。
モバイルアプリ開発会社の役割
1. コンセプト策定と計画
モバイルアプリの成功は、明確なコンセプトと綿密な計画から始まります。開発会社はクライアントと連携し、市場調査を行い、アプリの目標と機能を明確にします。これにより、アプリの方向性が定まり、スムーズな開発が可能となります。
2. デザインとユーザーエクスペリエンス（UX）
使いやすく魅力的なデザインは、ユーザーの満足度を高める重要な要素です。アメリカの開発会社は、最新のデザイントレンドとユーザビリティのベストプラクティスを取り入れたデザインを提供し、ユーザーエクスペリエンスを最大化します。
3. 開発とテスト
モバイルアプリの開発は、高度なプログラミングスキルと最新技術を必要とします。開発会社はiOS、Android、クロスプラットフォームに精通し、クライアントの要件に合わせた最適な技術スタックを選定します。また、品質保証（QA）チームがテストを行い、バグや不具合を修正します。
4. デプロイとメンテナンス
アプリが完成すると、App StoreやGoogle Playにリリースされます。しかし、リリース後も継続的なメンテナンスとアップデートが必要です。ユーザーのフィードバックを基に改善を続けることで、アプリのパフォーマンスとユーザー満足度を維持します。
アメリカの主要なモバイルアプリ開発会社
Fueled
Fueledは、ニューヨークを拠点とするモバイルアプリ開発会社で、創造的なデザインと革新的な技術で知られています。大手企業からスタートアップまで幅広いクライアントにサービスを提供しています。
Intellectsoft
Intellectsoftは、カリフォルニア州に拠点を置き、エンタープライズ向けのカスタムソフトウェアソリューションを提供しています。特にモバイルアプリ開発に強みがあり、さまざまな業界での実績があります。
WillowTree
WillowTreeは、バージニア州に本社を構え、ユーザー中心のデザインと開発で評価されています。彼らは、クライアントのビジネスニーズに応じた高品質なモバイルアプリを提供しています。
まとめ
[アメリカのモバイルアプリ開発会社](https://newwave-solutions.co.jp/best-mobile-app-development-company-in-usa/)は、企業のビジョンを現実のアプリとして形にする重要なパートナーです。Fueled、Intellectsoft、WillowTreeなどの主要な開発会社は、革新的な技術と優れたデザインで企業の成功を支援しています。モバイルアプリの開発を検討している企業にとって、信頼できるパートナーを選ぶことが成功への第一歩です。
米国のSalesforceコンサルティング会社：ビジネス成功のためのパートナー

現代のビジネス環境は日々進化し、競争が激化しています。このような状況下で企業が成功するためには、効率的な顧客関係管理（CRM）が不可欠です。Salesforceは、世界中の多くの企業に採用されているCRMプラットフォームであり、顧客関係の強化と業績向上に貢献しています。しかし、Salesforceの導入と最適化は専門知識を要するため、多くの企業はSalesforceコンサルティング会社の支援を求めています。
Salesforceコンサルティング会社の役割
Salesforceコンサルティング会社は、企業がSalesforceを最大限に活用できるようにサポートします。主な役割には以下の3つが含まれます。
1. Salesforceの導入とセットアップ
Salesforceの導入は単なるソフトウェアのインストールではなく、企業のビジネスプロセスに合わせたカスタマイズが必要です。コンサルティング会社は企業のニーズに基づき、Salesforceを適切に設定し、データ移行やシステムの統合を行います。これにより、企業は迅速にSalesforceを活用できるようになります。
2. カスタマイズと統合
Salesforceは非常に柔軟なプラットフォームであり、企業のニーズに応じてカスタマイズが可能です。コンサルティング会社は、企業のビジネスプロセスに最適なカスタマイズを行い、Salesforceと他のビジネスシステムのシームレスな統合を実現します。これにより、企業は一元化されたデータ管理と効率的な業務運営が可能になります。
3. トレーニングとサポート
Salesforceの導入後、従業員が新しいシステムを効果的に使用できるようにするためのトレーニングが不可欠です。コンサルティング会社は、従業員向けのトレーニングプログラムを提供し、システムの使用方法やベストプラクティスを指導します。また、問題が発生した際のサポートも提供し、企業がSalesforceを最大限に活用できるよう支援します。
米国の主要なSalesforceコンサルティング会社
米国には多くの優れたSalesforceコンサルティング会社が存在し、それぞれが独自の強みを持っています。以下に、いくつかの主要な会社を紹介します。
Accenture
Accentureは、グローバルなコンサルティング会社であり、Salesforceの導入と最適化に豊富な経験を持っています。大規模な企業向けにカスタマイズされたソリューションを提供し、複雑なビジネスプロセスの最適化を支援します。
Deloitte
Deloitteは、総合的なビジネスコンサルティングサービスを提供する大手企業であり、Salesforceの専門知識を活かして企業の成長を支援します。業界特化型のソリューションを提供し、各業界のニーズに対応したカスタマイズを行う点が特徴です。
Bluewolf
Bluewolfは、IBMの子会社であり、Salesforceの導入とカスタマイズに特化したコンサルティング会社です。中小企業から大企業まで幅広いクライアントにサービスを提供し、Salesforceの迅速な導入とROIの最大化を目指します。
Appirio
Appirioは、SalesforceとGoogleのクラウドソリューションに特化したコンサルティング会社であり、企業のデジタルトランスフォーメーションを支援します。クラウドテクノロジーを駆使して業務効率を向上させるアプローチが特徴です。
まとめ
Salesforceは、企業の顧客関係管理を改善し、ビジネスの成長を促進する強力なツールです。しかし、その導入と最適化は専門知識と経験を必要とします。[米国のSalesforceコンサルティング会社](https://newwave-solutions.co.jp/salesforce-consulting-companies-in-usa/)は、企業がSalesforceを効果的に活用し、競争力を高めるためのパートナーとして重要な役割を果たします。Accenture、Deloitte、Bluewolf、Appirioなどの主要なコンサルティング会社は、それぞれ独自の強みを持ち、企業のニーズに応じたカスタマイズされたソリューションを提供しています。
これからのビジネス環境で成功を収めるためには、Salesforceのような強力なツールと、専門知識を持つパートナーの支援が不可欠です。企業がSalesforceを効果的に活用し、持続的な成長を実現するための第一歩として、信頼できるSalesforceコンサルティング会社を選びましょう。
Markdown AIを使ってみたので正直な感想を書いてみる

# はじめに
この記事は、Qiita Engineer Festa2024のキャンペーンテーマ[「Markdown AIで記事を投稿しよう！」](https://qiita.com/official-events/142fdd0d69ff6bb2d547)に関する内容です。
実際にMarkdown AIを使って記事を書いてみたので使用感などをレビューしてみます！

# Markdown AIのコンセプト
https://mdown.ai/content?id=335b81b2-bcb0-4dbb-83d0-531aa132181f

> The concept is not only for engineers to easily exchange information, but also for children to easily create websites and interact with people around the world.

Markdown AIの主なコンセプトは、エンジニアだけではなく子供たちも簡単にウェブサイトを作成し、世界中の人々と交流できる環境を提供することのようです。
素晴らしいコンセプトだと思いました！

# 使ってみて良かったところ
## 爆速で使い始められる
- Markdown AIを使い始めるにはGoogleアカウントでサインインするだけ。数秒で書き始められる。

## 爆速で記事を公開できる
- 記事を書いたら3クリックで公開できる。


## WebUIがとにかくシンプルで使いやすい
- 余計なノイズがない（Markdownエディタのみ）ので、記事の執筆に集中できる。
![スクリーンショット 2024-06-11 10.48.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319375/2350e8b6-4a45-5648-58f8-881696d94f75.png)


## 難しいITスキルは不要
- 最低限Markdownの記法を知っていればキレイな記事を書ける。
- Markdownのテンプレートが用意されているのが親切。
なので確かに子供でも使えるなぁと思った。

## 今後の追加機能が楽しみ
- 特にAI機能！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319375/c9b5f706-e7f1-95b7-2c1f-3acba2eaca2f.png)


# 個人的にあったらいいなぁと思うこと
## QiitaやZenn等のように見出しのプレビューがほしいです！
特に記事の内容が長くなった場合、書き手としてはh1, h2... の階層構造がわかりづらくなることがあるため。
また、プレビューの見出しにページ内リンクがあると目的の見出しに一発で飛べるので読み手としても助かると思いました！

## 記事にタイトルを付けて管理したい！
記事の数が多くなると「これってなんの記事だっけ？」になると思うのでタイトルで判別できるといいと思いました！
（以下、青枠の部分）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319375/771a943d-0c58-2eda-26cc-5d5990485578.png)



# Markdown AIの活用例
> 子供が真似をしたくなるような内容

というお題があったので、
- 学校の課題とか感想文（特に長文で表現するようなもの）をMarkdown AIにまとめて公開すれば、友達同士や先生、家族と効率的に情報共有ができるのでは？
- ありきたりだが、趣味や興味のあるトピックを発信する場としても使えると思う。


ただ、ITリテラシのない子供が記事を書いて発信する場合、機密情報や個人情報等を安易に公開してしまう危険性があると思った。
（Markdown AIの利用に限らず）このあたりは使い始める前にインターネットにおける危険性を最低限インプットすることが前提になるが、加えてMarkdown AIのなんらかの仕組みでも防止できたらいいなと思った。AI機能で判定するとか？

# まとめ
Markdown AIは難しい知識も不要で、万人が手軽に利用できるプラットフォームだと思いました。
これまで技術的な知識やツールの複雑さが原因で発信できなかった人もMarkdown AIを使えば簡単に自分の声を世界中に発信できるようになると思います。

また、今後追加が予定されているAI機能が実装されればより効率的に良質な記事が書けると思います。
今後のアップデートを楽しみにしています！
組織で立場を築くため、新人がすべき立ち回り2選。

## はじめに
どうも、ほぼほぼ新人の者です。

組織に所属する中で、人間関係を構築することは避けては通れません。コミュニケーションで悩む方も多いのではないでしょうか。

今回は新人（特に新卒）が立場を築くために意識すべき点を考え、結果2つに絞ってみました。

**①知名度を上げる**
**②自分のレッテルを考えて振る舞う**

自分が中小企業に所属しているため中小企業に焦点を当てた話になっていますが、大手企業や会社でないコミュニティでも通ずる点はあるかと思います。

皆さんのご意見もいただけると幸いです。

## ①知名度を上げる
少し大袈裟な見出しにしてしまいましたが、要は **｢できるだけ多くの人に存在を認識してもらう｣** ことです。

業務も社会人のイロハもわからない初期状態において、 **一番大きな効果が出るのはここだと思っています。**

全体の範囲が狭い中小企業では、社長をはじめ立場の離れた方が直接関わる機会も多いです。いかに多くの人に認識されているか、これがもたらす影響は大手企業と比べて大きいでしょう。

そもそも認識されていなければ何にもなりません。まずは **「ごく浅くでも、なるべく広く」** を目指して行動すべきだと考えます。

### とにかく顔を合わせる！
当たり前のことではありますが、会ったことない人・話したことがない人を覚えている人はなかなかいないと思います。
どのように印象付ければよいのか、例を挙げてみます。

#### ・挨拶は隙あらばする。
世間話は苦手という方でも、定型文だけでコミュニケーションを取れるのが挨拶の良いところです。

人見知りで挨拶をするのも怖い……という方もいるかもしれません。向き不向きは人それぞれありますが、**「相手からしたら人見知りどうこうは知ったことではない」** ということは意識しないと損しかないので気を付けたいところです。

:::note info
**「名前の聞き覚え・顔の見覚え」**
まずはどちらかだけでも、持ってもらえるように頑張る。
:::

#### ・新人歓迎会や飲み会など、社内イベントが開催される会社の場合はできる限り参加する。
業務外交流は好みが分かれますが、**「最低限、存在を知らしめるまでは頑張る」** の意識でも変わる部分はあると思います。

特に二次会は社内で声が大きい方や顔が広い方が多い印象です。一次会で話せなかった方と交流する機会にもなるので、はじめのうちは参加すると効果的でしょう。（毎回メンツが固定になりがちなので、充分だと感じたらやめるのも手です。）

:::note info
**「業務外だからこそ持てる交流」**
印象を残すにはもってこいなので、初めのうちだけでも参加すると吉。
:::


### 目立つ行動をする！
「会社の中で話題になるようなことをする」という意味です。
こちらはなかなか難しい話で、会社によってはそもそも適した環境ではない場合もあります。

例でいうとこのような感じでしょうか。
**・研修で飛び抜けた成果を出す。**
**・人前に出る機会があったら積極的に担当する。**
**・社内活動で能動的な働きをする。**

効果的かどうかでいうと微妙な部分もあるので、ここよりは挨拶といった交流面で頑張る方が私は楽だと思っています。

:::note info
目立つスキルがあるなら、遺憾なく発揮する。
:::

## ②自分のレッテルを考えて振る舞う
①では「存在を認識してもらうこと」を重要視していましたが、次に大事なのは **「どういうイメージを持たれるか、意識して行動すること」** だと考えます。


### アウトな印象を与えない！
これは一番大事ですね、当たり前だと言われるかもしれません。当たり前すぎて意識していない人もいるのではないでしょうか。

無視や無愛想といった消極的なマイナスイメージはわかりやすいですが、案外意識から抜けがちなのが **積極的なコミュニケーションにおけるアウト認定**です。

【積極的でアウトな印象を持たれる例】
・初手から距離が近すぎる
・デリカシーのない言動
・マウント行為、自慢
・コンプラ違反
その他諸々……。

**「ヤバイ奴」と認定された瞬間、そこからプラスに持っていくのは至難の業です。** 周囲の空気に流されず、自分は安全な行動・言動を心掛けましょう。

:::note warn
**「初めは守りのコミュニケーション」**
攻めるのは信頼関係を築いてから！
:::

### どういうキャラクターになりたい？
一言で「頼りになる」といっても、どこで頼りになるのかによって人物像は変わると思います。自身がどういう目で見られてどういう風に立ち回る人間になりたいのか、具体的に考えてみましょう。

**「与えたイメージでレッテルを貼られ、レッテルに沿った扱いをされる」** ことを意識して行動すべきです。
※初めに定着したイメージを覆すのは難しいので、最初が肝心！

【例】
資格取得を頑張る **⇒真面目で勤勉**
挨拶や世間話を多くする **⇒コミュニケーションが得意**
代表して人前で話す機会が多い **⇒リーダーシップがある**
など……。

ただ作りこみ過ぎると疲れるため、あくまで自分が振る舞いやすい姿や向いていると思う役から発展させましょう。

「こう思われる（このような扱いされる）のは嫌だ！」から回避策を練るのも手です。

:::note info
**「自分の振る舞いでレッテルは決まる」**
定着していない初めのうちに、考えながら行動し構築していく。
:::

## おわりに
組織で立場を作ることにおいて、新人でもできるプラス事項を考えてみました。
取り返しのつかないこともあります。どうせならマイナスよりプラスなことをしましょう。

「考えながら行うコミュニケーションなんて、打算的でよろしくない！」という考えもあるかもしれません。人それぞれ考えがあると思うので、こういう考え方もあるのだな程度に思っていただけたら幸いです。

自分もまだまだ学習中です。
ご意見・経験談等、コメントにてお待ちしております。
新卒2ヶ月目のエンジニアがキャメルケースについて学んだ件

# 1.自己紹介
こんにちはレンです。新卒1年目で2ヶ月しか経っていない駆け出しすぎるエンジニアです！
アウトプットの意味も含めて緩く記事投稿していきます。
今回はキャメルケースについて書いて行きます。

# ２.キャメルケースにとは
```
String bookId;
```
上記のように、変数名や関数名などで広く使われている命名規則であり、先頭の文字は小文字かつ先頭以降の単語の最初の文字は大文字にするというものです。同期がコードレビューで注意されているの聞いて自分も初めて知りました。

# ３.なんでキャメルケースが必要なのか
基本的に変数名は何でもつけられます。実際に「a」「b」といった数字で変数を定義している人を見かけた事があります。しかし、大人数で開発をする際、変数名がわかりにくいことで、可読性も下がり結果として時間のロスにつながります。また2単語以上が小文字のままつながっていると、これまた見にくいことになってしまいます。そのためキャメルケースといった命名規則が重要になってくるのです。

# ４.まとめ
拙い文章ですがここまで読んでくださってありがとうございました。まだ2ヶ月目の新米ですがキャッチアップ頑張っていきます。命名規則って大事！！！！！
最近やって良かった引継ぎの方法

相も変わらずSES系で働いているのですが、この度案件が変わることとなり、引継ぎを行いました。普段あまり引継ぎをされて業務に臨める環境が少ないため、どのような引継ぎをしたら後任者は業務理解が進むのかを考えつつ引継ぎを行ったので、備忘録として書き残そうと思います。

## 前提条件

### 前任者

- 基本的に業務を一人で行っていた
- 主な業務は運用設計および構築、それに付随するスクリプト等の管理
- 引継ぎの最中にも業務がある
- 業務に携わる際には前任者不在で、丁寧な引継ぎはされていない

### 後任者

- 現場には引継ぎ時に赴任（現場の状況をほぼ知らない）
- スキル的にはスクリプトは扱えるが、運用の経験はあまりない

### その他

- 引継ぎ期間は1ヶ月
- 基本的にリモートでの引継ぎがメイン

## 事前準備

### 引継ぎの方法を考える

今回引継ぎをするにあたって、重要視した点は以下の通りです。

- 作業の内容や構築物、定常業務を概要レベルで資料にまとめて振り返れるようにする
- レクチャーする時間と手を動かす時間、質問をする時間を設ける
- 質問がある際はドキュメントに残す

### 資料作成

資料は以下のような目次で作成しました。

1. システムの概要図
1. 業務で使用するシステムの概要及び注意点
1. 業務内容ごとにターゲットを絞った概要及び注意点

基本的には、
1. システムがどのような目的で存在しているか
1. システム間の連携はどうされているか
1. 各システムはどういう振る舞いをするか
1. どういった業務でシステムを使うか

といった流れを資料で表現したかったため、この構成にしました。業務の説明から入ると、その業務ではこれを使うといった感じになり、システム全体の連携が頭から抜けてしまうことを危惧したため、まずはシステムがどういった目的を持って全体的にはどうなっているのかを説明することに重点を置きました。

### 引継ぎのプロセスについて

基本的には以下のように引継ぎを実施することを計画しました。

1. レクチャーMTG（1時間）
1. 自己学習（2時間）
1. QA&レクチャーMTG（1時間）

一度教えられたことを実際にコードを触ってみたり資料を確認してもらい、質問があればQ&Aの時間で聞いてもらうというプロセスを取りました。

質問を五月雨式にチャットされるとこちらの業務が進まないこともあり、決まった時間にまとめて聞いてもらうようにしました。基本的に同じ質問が何度来ても答えますが、簡単に質問事項と回答をまとめられるスプレッドシートを作成し、その中で質疑応答を行うことで過去の質問が振り返れるようにしています。

## 引継ぎ時

### 引継ぎのプロセス説明

引継ぎでよく忘れられがちですが、前任者は後任者に対して引継ぎをどのように実施するかの説明を全段階でしておくべきだと思います。理由は、後任者が新しい現場で何をしていいのか分からない状況で入ってくるため、まず何をすればいいのかを事前に説明しておいたほうが迷わなくなるからです。

### レクチャーMTG

レクチャーのMTGでは以下のような構成で話をしました。

1. このレクチャーでどこまで説明するかを明言
1. レクチャー内容の概要を説明
1. 概要に沿って詳細を説明（場合によっては実演）

最初に何をするのか言っておいたほうが相手のインプットに良いと考え、このような形にしました。1回のレクチャーは1時間以内にし、最初に範囲を話すことで話題がぶれなくて良かったです。

### 自己学習

個人的には引継ぎで最も重要なのは自己学習の時間だと感じています。理由は、

1. 人間は言われただけで物事を完璧に理解できない
1. 実際に開発環境等で手を動かすことで、インプットの効率が良くなる

実際に触ってみないと分からないこともありますし、前任者がうっかり資料に入れ忘れていたことや説明し忘れていた事項が質問として出てくることもあります。このプロセスは重要です。

### Q&A

質問はスプレッドシートで管理し、画面共有しながら回答しています。回答する際に気を付けたことは、

1. 相手の質問を尊重する
1. 回答する際には、資料を交えてわかりやすく説明する
1. 回答から派生した質問も必ずシートに記載する

相手は現場に入ってきて右も左も分からないので、基礎的な質問が出てくることもありますが、面倒がらずに丁寧に説明する必要があります。ここを怠ると引継ぎの意味がありません。

## 現状

後任者が入ってきて一週間ですが、この一週間でほぼ全ての内容をレクチャーし終えることができました。正直2週間くらいかかりそうな業務量がありましたが、このプロセスを取ったことでかなりスムーズに引継ぎが行えました。もちろん、後任者の経験や実力が豊富だったことも大きな要因です。優秀な人材には感謝です。

## まとめ

普段の引継ぎは資料を作って説明してあとは覚えて！という感じが多いですが、ちゃんとプロセスを組むことでしっかりと理解が進み、より効率的に引継ぎが行えると感じました。

前任者の皆さんには、後任者があとはいい感じにやってくれるだろうと無責任なことは思わず、ちゃんと引継ぎをしてあげてください。
Automation Anywhere A360 デバイス削除できない場合の対処法

## 概要
先日、Automation Anywhere A360の実行端末に対してWin11のFUを適用したところ、
CR上に『切断』ステータスのままデバイス情報が残り、デバイスの削除もできなくなる事象が発生しました。
試行錯誤の結果、APIによるデバイス情報リセットを行うことでデバイス削除できるようになったので、今回はAutomation Anywhere A360でCR上からデバイス削除ができなくなった場合の対処法を記載します。

## APIによるデバイス情報リセット手順
1．CRのデバイス画面から、削除したいデバイスIDを確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3811534/95b9cc81-11e8-f722-b08a-e8353aad49d2.png)

2．POSTMANを起動。
   POST Methodで [CR URL]/v1/authentication を入力する。
   Bodyタブで「raw」「JSON」を選択、下記を入力する。 
   {"username":"XXXX",
   "password":"XXXX"
   }
　※XXXXはAdminUserのID/PW 
　「Send」を押下する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3811534/9b691ec7-409c-757c-521a-d5b300d6b6c5.png)

3．"token":の後ろの""で囲まれたToken情報をコピーする。

4．POST Methodで [CR URL]/v2/devices/reset を入力する。
   Headersタブをクリックし、下記2つのKeyを設定する。
   Content-Type：application/json
   X-Authorization：手順3でコピーしたToken情報 ※""は除く
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3811534/7f5f7f01-1c44-b384-8139-182eb52060e9.png)

   Bodyタブをクリックし、「raw」「JSON」を選択、下記を入力する。
   {
   "deviceIds":{
   "ids":[XX]
   }
   }
   ※XXは手順1で確認したデバイスID
   「Send」を押下する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3811534/b13c2869-79ae-bb06-60d9-b1a55b86cd7c.png)

   CRにログインし、対象のデバイスを削除する。

   以上
パソコンのスペックについて分かったことをまとめてみた

# はじめに
こんにちは，Umamusume22です．私は日頃私物のpcではmacを使っています．私が在籍していた大学がmacを推奨していたためmacを購入しました．しかし，購入して使っているpcのファン音がうるさい，開発するならもう少しストレージが欲しい，officeのインストールができないなど不満が溜まっています．5年以上使っています．そのため，pcの買い替えを検討中で様々なpcを調べています．
パソコンのスペックに関しては知っているつもりでしたが調べるほど新たに分かったこともありました．そこで，記事にまとめて整理することにしました．なお，本記事ではノートパソコンを対象にしています．


# パソコンのスペックについて[1,2,3]
パソコンのスペックとはパソコンの性能を表現したものです．pcの活用目的によって要求されるスペックが異なります．スペックが低いパソコンほど処理能力が遅く，重たかったりします．一方，高性能なpcほど処理能力が早くてゲーム画面のフリーズを招く恐れが少ないです．以下はパソコンの主要な役割を果たすスペックです．

#### OS：パソコンを操作するために必要なソフトウェアのこと．<br>
パソコンの基本的なソフトウェア．OSがないとpcの役目を果たせません[1,2]
#### CPU：パソコンの頭脳に該当する部分．計算や制御などの処理を行います．<br>
CPUには半導体チップが含まれている．このCPUが高性能であればpcの動作がスムーズに動いて快適です．しかし，低性能であった場合はpcの動作が重たいため，非常に不快な思いをすることになります[1,2]．
#### メモリ：CPUが動作している時のデータを一時的に記憶する記憶装置．<br>
作業している時に使う机のようなものです．メモリの容量が大きいほど複数のアプリを開いても高速に動作します[1,2]．
#### ストレージ：パソコンにデータを保存することができる記憶装置のこと．<br>
パソコンの電源をオフにしても保存することができます．写真やファイル，動画などの保存が可能です．SSDやHDDのことを指しています．SSDとは記憶装置の一つでメモリーチップに読み書きを行います．一方，HDDとはSSDと同じ記憶装置ですが回転する円盤にデータの読み書きを行います[3]．

# ノートパソコンの価格[4,5]
次にノートパソコンの価格について分かったことをまとめます．
- 相場としては５万〜１５万
- 高いpcになると20万以上
- 5万円以下のpcは安い．wordを使う程度であれば十分かもしれない
    - 中古パソコンには注意
        - 故障のリスクが高い
        - 新品のパソコンほど保証期間が長くない
        - 故障または不具合で部品を買い換えることになった場合，余分にお金を支払うことになる

# ノートパソコンの重量[6,7,8]
ノートパソコンなのでデスクトップパソコンとは異なってリュックの中に入れて持ち運ぶことができます．しかし，重量も視野に入れなければ外出の時にpcを持ち運ぶのが体力的に辛くなります．以下はノートパソコンの重量について分かったことをまとめます．


- パソコンのディスプレイの大きさをチェック
    -  画面のサイズが15インチ以上は重たい
    - 　インチとはpcモニター画面の対角線の長さのこと．対角線を測定して2.54で割ると何インチか計算することができます
- 1kg未満から2kg以上までのノートパソコンが存在する
- 1.3kg未満は軽量
- 1.5kg前後でも軽い方に入る
- 2kg前後は少し重たくなる



# 最後に
ザッと調べて分かったことを簡易的にまとめてみました．今はmacを使っていますが買い換える時は引き続きmacにするかwindowsにするかは悩んでいます．この点はもう少し吟味します．次回，パソコンに関する記事を書くときはmacとwindowsの違いやキーボードやマウスについて分かったことなどを投稿を考えています．

# 参考文献
[1]"パソコンのスペックや確認方法をわかりやすく解説！"
https://flets-w.com/chienetta/pc_mobile/cb_pc-operate75.html

[2]"「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典"
https://wa3.i-3-i.info/word11055.html

[3]"【かんたん解説】SSDとは？HDDとの違いは？"
https://www.buffalo.jp/topics/select/detail/ssdhdd.html

[4]"パソコンの価格相場はいくら？低価格で高スペックなパソコン5選"
https://www.mouse-jp.co.jp/mouselabo/entry/2023/12/08/100018

[5]"値段で決めるパソコンの選び方 安いノートpcから高性能デスクトップpcまで徹底解説"
https://www.nec-lavie.jp/products/contents/how-much-budget-needed.html

[6]"ノートパソコンの持ち運びに適した重さは？ おすすめのレッツノートも紹介!"
https://ec-plus.panasonic.jp/store/page/pc/sp/organic/202211/

[7]"ノートパソコンはサイズが重要! 持ち運びやすい・使いやすいpcを選ぼう"
https://www.nec-lavie.jp/products/contents/best-pc-size-for-you.html

[8]"pcモニターのサイズはどれがおすすめ？"
https://monitors.allabout.co.jp/a16967/
行政区域ポリゴンをいい感じに簡略化する方法

# はじめに
[国土数値情報](https://nlftp.mlit.go.jp/)からダウンロードできる行政区域ポリゴンは、とても高精細につくられていて、そのままではデータが重すぎて使いにくいことがあります。  
GISでポリゴンの簡略化をすると下図のようにすき間ができてしまい、残念な感じになってしまいます。（高価なGISなら、すき間ができない簡略化があるようですが…）  

![sukima.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587941/66a19b8e-c28c-76fa-4f97-5161497fa0d3.png)

# やり方
すき間ができない簡略化は以下の手順で行います。
* GeoJSONをTopoJSONに変換する
* TopoJSONで簡略化する
* GeoJSONに戻す

# 準備
TopoJSONをインストールする。  
※TopoJSONの使い方の詳細については、[こちら](https://github.com/topojson/topojson)を参照してください。
```shell
> npm install topojson
```
:::note info
Windowsの人はMicrosoftストアの[公式Ubuntu](https://apps.microsoft.com/detail/9pn20msr04dw?hl=ja-JP&gl=US)をインストールして、そこから実行するのがおすすめです
:::
# TopoJSONに変換
以下のコマンドでTopoJSONに変換します。  
* geo2topo -q 1e6 [name]=[input] > [output]
    * name　：オブジェクト名（なんでもよい）
    * input　：入力ファイル名（GeoJSONファイル）
    * output　：出力ファイル名（TopoJSONファイル）
    * -q 1e6　： 隣接する二つのポリゴンの座標間に誤差を持つ場合の判定パラメータ
```shell
> geo2topo -q 1e6 hoge=input.geojson > output.topojson
```
# 簡略化
以下のコマンドでTopoJSONを簡略化します。
* toposimplify -p [planar] < [input] > [output]
    * planar　：単純化の閾値 1.0～0.0までの値、大きい値ほど強く単純化する
    * input　：入力ファイル名（TopoJSONファイル）
    * output　：出力ファイル名（TopoJSONファイル）
```shell
>  toposimplify -p 0.0001 < input.topojson > output.topojson
```
# GeoJSONに戻す
以下のコマンドでGeoJSONに変換します。
* topo2geo [name]=[output] < [input]
    * name　：　オブジェクト名（TopoJSONに変換したときの名前）
    * input　：　入力ファイル名（TopoJSONファイル）
    * output　：　出力ファイル名（GeoJSONファイル）
```shell
> topo2geo hoge=output.geojson < input.topojson
```
:::note info
ここでは紹介していませんがtopomergeを使用していた場合、PolygonとMultiPolygonが混在したGeoJSONが作成されます。
:::
# 一括変換
パイプラインでコマンドをつなげて使うのが一般的です。
```shell
> geo2topo -q 1e6 hoge=input.geojson | toposimplify -p 0.0001 | topo2geo hoge=output.geojson
```
フローメールアクションにCCアドレスを追加する


+ [Is there a way to preset CC and BCC for Lightning Email Template?](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007epMk1)
+ [【ヘルプ】Adding CC Address in Flow Email Action](https://help.salesforce.com/s/articleView?id=001979871&type=1)

Salesforce フローには、メールを送信できるアクションがあります。このアクションは、特に Salesforce 管理者にとって、コードベースのソリューションの非常に優れた回避策です。これらのアクションは、メール テンプレートと複数のメールに対応できます。本文、受信者アドレス リスト、リッチ テキスト形式の本文 (true または false)、送信者のメール アドレス、件名などを定義できます。これらはすべてフロー メール アクションの入力として機能し、変数を定義することで動的に追加できます。これにより、メール関連のタスクで比類のない柔軟性が得られます。標準のフロー メール アクションでは、メールへの CC アドレスの追加はサポートされていません。そこで、ここでは、ユーザーがフローを通じて CC メール アドレスを追加する方法について説明します。

この問題に対する最適な解決策は、フロー内で Apex が提供するカスタム機能を使用できる中間点を持つ、呼び出し可能なカスタム アクションを作成することです。このアプローチでは、フロー内にカスタム Apex アクションを組み込み、ジョブを完了するために必要なパラメーターを提供するブラック ボックス アプローチが提供されます。そのアクション内で何が起こっているかを知る必要はありませんが、パラメーターを提供して目的の結果を得ることができます。

```Java
public class EmailSender {

    @InvocableMethod(label='Send Email with CC')
    public static List<List<String>> sendEmailWithCC(List<EmailRequest> requests) {
        List<List<String>> responses = new List<List<String>>();
        for (EmailRequest req : requests) {
            Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
            mail.setToAddresses(new String[] {req.toAddress});
            if (req.ccAddress != null) {
                mail.setCcAddresses(new String[] {req.ccAddress});
            }
            mail.setSubject(req.subject);
            mail.setPlainTextBody(req.body); 
            Messaging.SendEmailResult[] results = Messaging.sendEmail(new Messaging.SingleEmailMessage[] {mail});
            if (results[0].isSuccess()) {
                responses.add(new List<String>{'Email sent successfully'});
            } else {
                responses.add(new List<String>{'Error sending email: ' + results[0].getErrors()[0].getMessage()});
            }
        }
        return responses;
    }
    public class EmailRequest {
    @InvocableVariable(required=true)
    public String toAddress;

    @InvocableVariable(required=true)
    public String ccAddress;

    @InvocableVariable(required=true)
    public String subject;
    
    @InvocableVariable(required=true)
    public String body;
}
}
```
AlarmManagerを用いた定期実行が上手くいかなかった話【AndroidStudio】

↓を参考にしてみたができない。なんで?
https://pg.akihiro-takeda.com/android-alarm/

定期実行のテストのために実行間隔を短かくしたのが問題らしい。

問題のコード。30s毎に実行するように指定している。
`alarmManager.setRepeating(AlarmManager.RTC,calendar.getTimeInMillis(),30*1000,pendingIntent);`

成功したコード。60s毎に実行するように指定している。
`alarmManager.setRepeating(AlarmManager.RTC,calendar.getTimeInMillis(),60*1000,pendingIntent);`

よく見たらこんなエラーメッセージが出てた。
`Value will be forced up to 60000 as of Android 5.1; don't rely on this to be exact`
60s未満だと60sになると書いてあるけど、僕の場合はそもそも実行されなかった。
そもそもAlarmManagerでこんな短時間の定期実行を行うこともないだろうし、大人しくAlarmManagerの定数を入れとこう。
exceljsでシートのコピー方法

# 概要
exceljsでシートの複製をしたいときに、セルのスタイルがうまくコピー出来ずに四苦八苦していましたが、自分なりの解決策を見つけたときの記録です。

# 本題
論より動くものなのでCodeSandBoxを参照ください。
https://codesandbox.io/p/devbox/exceljs-clonesheet-655dcj?file=%2Fsrc%2FExport.tsx%3A21%2C10

ポイントとしてはWorksheet.modelを新しいシートにコピーすればデータはコピー出来るのですがstyleはコピーされないため、styleは別途セル単位でコピーさせることです。

```tsx
import { useCallback } from "react";
import { Workbook, Worksheet, Border } from "exceljs";
import saveAs from "file-saver";

export function Export() {
  const cloneSheet = (
    wb: Workbook,
    baseWs: Worksheet,
    newWsName: string,
  ): Worksheet => {
    const newWs = wb.addWorksheet();
    newWs.model = Object.assign(baseWs.model, {
      name: newWsName,
      mergeCells: baseWs.model.merges,
    });

    baseWs.eachRow((baseRow, rowIdx) => {
      const newRow = newWs.getRow(rowIdx);
      baseRow.eachCell((baseCell, colIdx) => {
        newRow.getCell(colIdx).style = baseCell.style;
      });
    });

    return newWs;
  };

  const save = async (wb: Workbook) => {
    try {
      const uint8Array = await wb.xlsx.writeBuffer();
      const blob = new Blob([uint8Array], {
        type: "application/octet-binary",
      });
      saveAs(blob, `sample.xlsx`);
    } catch (err) {
      console.error(err);
    }
  };

  const handleClick = useCallback(() => {
    const wb = new Workbook();
    const ws = wb.addWorksheet("Sample1");

    ws.mergeCells(1, 1, 2, 3);
    const mergedCell = ws.getCell(1, 1);
    mergedCell.value = "MergedCell";

    const styledCell = ws.getCell(3, 1);
    const borderStyle: Partial<Border> = {
      style: "medium",
    };
    styledCell.value = "StyledCell";
    styledCell.style = {
      fill: {
        type: "pattern",
        pattern: "solid",
        fgColor: { argb: "fff2dcdb" },
      },
      border: {
        top: borderStyle,
        left: borderStyle,
        right: borderStyle,
        bottom: borderStyle,
      },
    };

    cloneSheet(wb, ws, "Clone1");
    cloneSheet(wb, ws, "Clone2");

    save(wb);
  }, []);

  return <button onClick={handleClick}>Export</button>;
}

```

# まとめ
結合されたセルをコピーする方法は探したら色々ありましたが、それだけではセルのボーダーがおかしなことになったりして、セルのスタイルをコピーする記事は自分が探した限りでは見つからなかったです。
同じ悩みを抱えている方の参考になればと思います。
GOをHerokuにデプロイする際の「Permission denied」

# エラー内容

### エラーコード
```
C:\Users\myname\GitHub\study_go>heroku restart --app go-api       
Restarting dynos on ⬢ go-api... done

C:\Users\myname\GitHub\study_go>heroku logs --tail
2024-06-10T17:43:11.476157+00:00 app[web.1]: /bin/bash: line 1: ./starter: Permission denied
2024-06-10T17:43:11.523112+00:00 heroku[web.1]: Process exited with status 126   
2024-06-10T17:43:11.546061+00:00 heroku[web.1]: State changed from starting to crashed
2024-06-10T17:43:11.548837+00:00 heroku[web.1]: State changed from crashed to starting
2024-06-10T17:43:12.291243+00:00 heroku[web.1]: Starting process with command `./starter`
2024-06-10T17:43:12.968051+00:00 app[web.1]: /bin/bash: line 1: ./starter: Permission denied
2024-06-10T17:43:13.027358+00:00 heroku[web.1]: Process exited with status 126   
2024-06-10T17:43:13.050687+00:00 heroku[web.1]: State changed from starting to crashed
2024-06-10T17:43:32.000000+00:00 app[api]: Build succeeded
2024-06-10T17:43:48.130101+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=go-api-7c4e0807af28.herokuapp.com request_id=73332a2b-cc71-47e5-afec-74ddc1a4beb1 fwd="121.81.190.72" dyno= connect= service= status=503 bytes= protocol=https
2024-06-10T17:43:49.342060+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=go-api-7c4e0807af28.herokuapp.com request_id=7017cbb0-a00f-46b4-8a3c-05f34538e9e7 fwd="121.81.190.72" dyno= connect= service= status=503 bytes= protocol=https
```
### 原因箇所
```
2024-06-10T17:43:11.476157+00:00 app[web.1]: /bin/bash: line 1: ./starter: Permission denied
```

どうやらstarterに実行権限が与えられていないらしい．

:::note info
starterとは？
下記のコマンドで作成した実行可能ファイル
```
go build -o starter main.go
```
:::

作成したstarterをWSLで権限を見ても一見問題なさそう？
777な時点でダメか？ｗ
```
-rwxrwxrwx 1 myname myname 9912472 mayname 11 04:13 starter
```

デプロイ後のstarterの権限を見てみると
変更されてる??
```
-rw------- 1 u37039 dyno 14393782 misname 10 19:00 starter
```

# 対処法

もともとはProcfileを使用して下記のコマンドで実行していた
```Procfile
web: ./starter
```

それを
**Procfileを書かない**ようにした．
OneDrive自体のフォルダ名を任意に変更する

:::note warn
この記事の内容はWindowsのみで確認しています。
:::

:::note alert
仮にうまくいかなくても復旧できるよう、ローカルファイルがクラウドと同期されていることを確認してから実行してください。
:::

## 目的
OneDrive自体のフォルダ名を任意に変更する

## 背景
OneDriveをWindowsにインストールすると、`OneDrive - 組織名`という形式のフォルダが作成されてその中にOneDriveのファイル一式が保存されることになります。
しかしこれには次の2つの問題があります
- フォルダ名にスペースを含む
- （場合によっては）フォルダ名に日本語を含む

このことから、OneDrive内に保存したファイルにプログラムからアクセスしようとすると、ファイルが見つからないエラーとなることが多々あります。

## 方法
1. 下のタスクバーの右にあるOneDriveアイコンからOneDriveを終了
1. OneDrive側の設定
    1. `Users\user_name\AppData\Local\Microsoft\OneDrive\settings`フォルダを開く
    1. `Business1`フォルダを開く（いくつかのアカウントでログインしている場合は`Business2`、`Business3`…になっているかもしれません）
    1. 長くてランダムな名称がついた`.ini`ファイルを見つける。例えばこんな感じ: `31c26d83-4db2-4503-a8g0-a3e14e7bcchd.ini`
    1. `.ini`ファイルを開き、OneDriveのフォルダ名を書き換えて保存する
1. フォルダ側の設定
    1. 既存のOneDriveフォルダの名前を新しいものに変更する
1. OneDriveを起動する。警告ダイアログが表示されるので、「再試行」をクリック

以上で無事に既定のフォルダ名が変更されているはずです。

## 参考
https://learn.microsoft.com/en-us/answers/questions/876464/change-default-name-for-onedrive-for-business-fold
システム開発の成果物一覧

# はじめに
システム開発において、一般的に必要な成果物の一覧をまとめます。他あればコメントください

# 管理
・PJ計画書
・WBS
・マスタースケジュール
・見積
・課題管理表
・進捗管理表
・品質管理表
・コーディング規約
・レビュー管理表

# 要件定義
・要件一覧
・業務フロー図
・全体図
・システム概要
・システム構成図
・機能要件
・非機能要件

# 基本設計書
・機能一覧
・画面遷移図
・画面定義書
・帳票設計
・バッチ設計
・ER図
・DB設計
・API定義書
・ファイル設計
・インターフェイス一覧

# 詳細設計
・クラス図
・シーケンス図
・モジュール構成図
・処理フロー
・詳細設計書

# テスト
・単体テスト
・結合テスト
・総合テスト
・ユーザテスト
・負荷テスト