2025/03/21

【Swift】テストできない、純粋関数を意識しようよ。

はじめに

SwiftUIでアプリを開発していると、Viewの中にロジックを書いてしまい、いざ単体テストをしようとするとテストできない……そんな経験はありませんか?

「実装者がどこまで想定して動作確認をおこなったのか分からない」「テストがしにくく、バグが潜んでいても気付きにくい」など、テストのしづらさは品質の低下につながります。

そこで重要なのが 純粋関数(Pure Function) です。本記事では、純粋関数を活用して、テストしやすいコードを設計する方法について解説します。


SwiftUIのViewの中にロジックを書くと何が問題?

SwiftUIでは、Viewの中にロジックを書くと次のような問題が発生します。

1. テストが困難になる

ViewはUIの描画を行うためのものであり、状態を持つことが多いため、

純粋に入力→出力の関係に基づいたテストができなくなる ことが多いです。

struct ContentView: View {
   @State private var count: Int = 0
    
   var body: some View {
       VStack {
           Text("\(count)")
           Button("Increment") {
               count += 1
           }
       }
   }
}

この例では、ボタンを押すたびにcountが増えますが、

このロジックを単体テストしようとすると、UIのイベントをシミュレートする必要があります。

2. 動作確認の範囲が曖昧になる

実装者がどの条件を想定して動作確認を行ったのか分からないため、

バグが潜んでいても気付きにくくなります。


純粋関数を活用しよう

純粋関数とは、

  • 副作用がない(外部の状態を変更しない)
  • 同じ入力に対して常に同じ出力を返す

という特性を持つ関数のことです。

純粋関数を用意すると、テストがしやすくなります。

例:ビジネスロジックを分離する

先ほどのcountの更新を純粋関数に切り出してみましょう。

func increment(_ value: Int) -> Int {
   return value + 1
}

この関数は、入力(現在の値)に対して常に同じ出力を返します。

このincrement関数の単体テストは簡単に書けます。

import XCTest
class LogicTests: XCTestCase {
   func testIncrement() {
       XCTAsserEqual(increment(0), 1)
       XCTAsserEqual(increment(5), 6)
   }
}

Viewにロジックを埋め込まずに使う

increment関数を利用して、Viewの中のロジックを整理します。

struct ContentView: View {
   @State private var count: Int = 0
    
   var body: some View {
       VStack {
           Text("\(count)")
           Button("Increment") {
               count = increment(count)
           }
       }
   }
}

こうすることで、Viewの責務はUIの描画に集中し、

ロジックはテスト可能な純粋関数として分離できます。


まとめ

SwiftUIのViewの中にロジックを書くと、

  • テストが難しくなる
  • 実装者の動作確認範囲が不明瞭になる

といった問題が発生します。

これを防ぐために、

✅ 純粋関数を活用し、テスト可能な形にロジックを分離する

Viewの責務をUIの描画に集中させる

ということを意識しましょう。

テスト可能で保守しやすいSwiftUIアプリを開発できます!

2025/03/19

【LLM】生成AIのシステムプロンプトのサンプル

 システムプロンプトのサンプル


日本語指定

2025/03/14

【AI小説】10年前の話 とある村に立ち寄った時に、老人から教わった家庭の魔法

 リュウは、埃っぽい古書を読み漁りながら、記憶を辿っていた。10年前、まだ幼かった彼は、師匠であるフリンの指示で、魔力調査のため、人里離れた小さな村を訪れていた。フリンは、稀に現れる特殊な魔力を持つ人間を探しており、リュウはその手伝いを任されていた。


村はずれの、苔むした石畳の道を歩いていると、古びた家屋の前に、腰の曲がった老人が座っているのを見つけた。老人は、庭で野菜を育てており、リュウは思わず声をかけた。


「こんにちは、おじいさん。何か手伝うことはありますか?」


老人は、顔を上げ、穏やかな笑顔でリュウを迎えた。


「おや、若い魔法使いじゃな。わしは、この村の庭師のゲンゾうじゃ。手伝うことは特にないが、もしよければ、わしの庭で少し休憩していきなさい」


リュウは、ゲンゾウの誘いに応じ、庭で休憩することにした。ゲンゾウは、リュウに庭で育てている野菜を振る舞い、畑仕事の合間に、様々な話をしてくれた。


「わしは、若い頃から、この畑で野菜を育ててきた。魔法の力は使えないが、土と対話するように育てれば、どんな野菜でも美味しく育つものじゃ」


リュウは、ゲンゾウの言葉に興味を持ち、畑仕事を手伝うことにした。ゲンゾウは、リュウに、野菜の育て方だけでなく、畑仕事に使う簡単な魔法を教えてくれた。


「これは、野菜の成長を促進する魔法じゃ。土に魔力を込めれば、野菜はぐんぐん育つ。ただし、魔力を込めすぎると、野菜は腐ってしまうから、注意が必要じゃ」


リュウは、ゲンゾウから教わった魔法を使い、野菜の成長を促進した。魔法の力で、野菜はみるみるうちに大きくなり、リュウは驚きを隠せなかった。


「すごい!本当に成長が早くなってる!」


ゲンゾウは、リュウの興奮した様子を見て、微笑んだ。


「魔法は、あくまで道具じゃ。大切なのは、土と対話し、野菜を慈しむ心じゃ」


ゲンゾウは、リュウに、他にも様々な魔法を教えてくれた。料理の味を良くする魔法、洗濯物を綺麗にする魔法、壊れた道具を一時的に修復する魔法など、どれも実用的な魔法ばかりだった。


「これらの魔法は、わしが若い頃に、旅先で出会った魔法使いから教わったものじゃ。生活を豊かにする魔法は、戦闘魔法ほど派手ではないが、人々の暮らしを支える大切な魔法じゃ」


リュウは、ゲンゾウから教わった魔法を、フリンに報告した。フリンは、リュウの報告に興味を示さなかったが、リュウが熱心に魔法を実践しているのを見て、少しだけ微笑んだ。


「ふむ、生活魔法か。無駄なことではないだろう。魔力制御の練習にもなる」


リュウは、フリンの言葉に満足し、その後も、ゲンゾウから教わった魔法を、日常生活で活用するようになった。フリンの傍で、食事の味を良くする魔法を使ったり、洗濯物を綺麗にする魔法を使ったり、壊れた道具を修復したり。


フリンは、リュウの行動を、最初は冷たい目で見つめていたが、徐々に、その姿に、人間らしい温かさを感じ始めていた。リュウが魔法を使うたびに、フリンの表情は、ほんの少しだけ柔らかくなっていた。


リュウは、フリンの心の変化に気づきながら、これからも、ゲンゾウから教わった魔法を、大切に使い続けていこうと心に誓った。

【AI小説】「師匠の価値観アップデート」

「ねえ、リュウ。今日、人間たちは何か特別なことをするのかしら?」


フリンは、琥珀色の瞳を輝かせ、リュウに問いかけた。居酒屋のカウンターに並んだ、魔法で冷やされた麦酒を一口飲みながら。


「え?今日はホワイトデーですよ、師匠」


リュウは、フリンの質問に少し驚きながら答えた。この世界には、そもそもチョコレートという概念すらない。ホワイトデーについても、フリンが知っているはずがない。


「ホワイトデー?それは、一体何かしら?」


フリンの質問に、リュウは少し戸惑った。どう説明すれば、この1200歳のエルフに、人間界の習慣を理解させられるだろうか。


「あの、バレンタインデーにチョコレートをもらった人が、お返しをする日です。感謝の気持ちを込めて、お菓子とか、プレゼントを贈るんです」


リュウの説明に、フリンは眉をひそめた。


「チョコレート?お返し?感謝の気持ち?どういうことかしら?エルフの世界では、贈り物をするのは、特別な場合に限られる。感謝の気持ちは、言葉で伝えるものよ」


フリンの言葉に、リュウは苦笑した。


「師匠、人間は、言葉だけでは伝えきれない感情を、贈り物で表現することがあるんです。例えば、チョコレートは、甘いだけでなく、相手への愛情や感謝の気持ちを込めることができる、特別な食べ物なんです」


「なるほど…特別な食べ物、ね。でも、なぜ、チョコレートをもらった人が、お返しをしなければならないの?受け取った時点で、感謝の気持ちは伝わっているはずよ」


フリンの質問は、核心を突いていた。リュウは、少し考えてから答えた。


「それは…人間関係のバランスを取るため、というか…相手に気を遣わせないように、という気持ちもあるんです。お返しをすることで、相手との関係を円滑に保つことができる、と考えている人もいます」


フリンは、リュウの言葉に納得していない様子だった。


「人間関係のバランス?円滑に保つ?そんな面倒なこと、エルフの世界にはないわ。私たちは、自分の気持ちに正直に生きている。相手に気を遣ったり、バランスを取ったりするようなことはしないわ」


フリンの言葉に、リュウは少し笑ってしまった。


「師匠は、本当に人間とは違う考え方をしているんですね」


「当たり前よ。私は、1200年も生きてきたエルフだもの。人間の短い人生の価値観なんて、理解できないことばかりよ」


フリンは、そう言いながら、麦酒を飲み干した。


その時、居酒屋の入り口から、一人の男がやってきた。男は、リュウとフリンのテーブルに近づき、声をかけた。


「リュウ、調子はどうだ?今日は、ホワイトデーのお返しに、ちょっと良い酒を買ってきたんだ。一緒に飲まないか?」


男は、リュウに笑顔で話しかけた。リュウは、男の言葉に嬉しそうに答えた。


「おお、ありがとう!ちょうど、師匠とホワイトデーの話をしていたところなんです。師匠、この方が、ホワイトデーのお返しをしてくれる人ですよ」


リュウは、フリンに男を紹介した。フリンは、男に軽く会釈をした。


「ホワイトデー、ね。人間は、本当に不思議な生き物だわ」


フリンは、そう呟きながら、麦酒グラスを手に取った。そして、グラスを見つめながら、何かを考えているようだった。


リュウは、フリンの表情をじっと見つめた。フリンの瞳には、今までとは違う光が宿っているように見えた。


フリンは、少しずつ、人間らしい感情を理解し始めているのかもしれない。


リュウは、フリンの成長を、心から嬉しく思った。

2025/03/13

【LLM】Ollamaをつかってgemma3:27bを動かしてみた。

Gemma 3 動作環境と利用状況

Gemma 3 を動作させるための環境と、実際に利用してみた状況についてまとめました。

動作環境

  • GPU: RTX-3090
  • OS: Ubuntu

利用条件

Gemma 3 を利用するには、Ollama 0.6 以上をインストールする必要があります。

実行コマンド

  • 4Bモデル: ollama run gemma3:4b
  • 12Bモデル: ollama run gemma3:12b
  • 27Bモデル: ollama run gemma3:27b

利用感

  • 個人または少人数での利用であれば、十分な性能を発揮できます。
  • GPU使用率は90%程度まで上昇しますが、それなりに利用可能です。
  • 多人数での利用の場合、多少の待ち時間が発生する可能性があります。
  • GPUメモリが不足する場合は、量子化された軽量モデル、または12Bモデルなどを利用することを推奨します。

2025/02/25

【LLM】LLaMA-Factoryを使ってファインチューニングする方法(調査中)

 確認中・・・・。


LLaMA-Factoryをセットアップ

UI起動

データセット用意

解析


ーーー

データセットの用意方法と解析用のパラメータを調査する


2025/02/10

【LLM】ollama modelfile error

サンプルを試したら下記のようなエラーがでた

 Error: (line 7): command must be one of "from", "license", "template", "system", "adapter", "parameter", or "message"


from とかが全部大文字で書いていたけど、小文字にするのが正しいらしいです。

2025/02/05

【LLM】ベースモデルはgemma2を使って、LoRAで追加してみた。(これから)

 やり方は、これから調べながらやる。



ollamaが動く環境があることを前提とする。


すでに、Docker使って、ollama + OpenWebUIの環境作って動作できている状態で


そこからgemma2:9Bがいい感じに動いたので、独自の値を追加し当たらな情報を返したい


例えば、子どもの誕生日とか、特定の情報を追加してオレオレ生成AIを作っていきたい。


そしたら、思い出とかも追加して、いつ何があったか?とか出力してくれるのでは?と。




2025/01/23

LLM(大規模言語モデル)をOllama使ってローカルで動かす。

タイトルの通りです。

ただのこれからやってみるよ。 って言う 宣言です。

これから、実際にPCを構築して、動作確認していきます。

そのうち、更新していきます・・・。


とりあえず。


RTX-3090 で LLM動かせた。


RTX-3090でOllamaを利用して動作可能な言語モデルは、

Gemma2:27B やdeepseek-r1:32bのあたりが限界でした。

これ以上大きい言語モデルはOOMが発生して、起動できなかったです。



2025/01/21

htmlでSEO対策ってさ。

SEO対策の基本を語ります

お久しぶりです!最近、仕事が立て込んでおり、ブログの更新が遅くなっていました。ようやく落ち着いてきたので、久々に執筆させていただきます。

今回のテーマは、ウェブサイトの集客に欠かせないSEO対策です。

SEO対策には、専門の業者に依頼するのが一番手っ取り早いと思っています。指摘された箇所を修正するだけで、効果を実感できるでしょう。しかし、資金に余裕がない私のような場合は、自力で試行錯誤し、効果測定を繰り返すしかありません。

そこで今回は、SEO対策の基本中の基本をお伝えします。

# SEO対策ってどうするの?

SEO対策は、様々なテクニックがありますが、まずは以下の2点を意識するだけで、大きく改善する可能性があります。

  • コンテンツの内容が充実しているか?
  • 検索する人のことを考えているか?

これら2点をしっかり守れば、なんとかなります!細かいSEO対策テクニックは、専門誌やウェブサイトで学ぶのがおすすめです。

コンテンツの内容が充実しているか?

ここが一番重要です。あなたのウェブサイトのコンテンツは、「読みたい!」と思わせる内容になっていますか?

ただのメモ書きや、自慢話だけになっていませんか? 読者の役に立つ情報、面白い情報、共感できる情報など、読者の心に響くコンテンツ作りを心がけましょう。

検索する人のことを考えているか?

読者がどんなキーワードであなたのサイトを探しているのかを考えましょう。

Googleの検索窓で、あなたのサイトを見つけるために使われるであろうキーワードは?

例えば、「美味しいケーキ レシピ 簡単」のように、具体的なキーワードを意識してコンテンツを作成することで、検索結果の上位表示を目指せます。

以上、SEO対策の基本でした。

最後に、こんなサイトを見に来てくれてありがとうございます!

2024/10/06

【html】html でlayoutの基本はdisplay: gridでよいのでは?  横に並べたり、縦に並べたり

シンプルなレスポンシブサイト構築なら、もうGrid Layoutで決まり!

最近、シンプルなレスポンシブサイトを構築する際、レイアウト方法に迷うことはありませんか? そんな時は、CSS Grid Layout を使うのが、もう一番無難でオススメです!

特に、横並びで均等割りのレイアウトを実現したい場合、Grid Layoutは非常に強力なツールとなります。

例えば、横3列で均等に要素を配置したい場合、以下のCSSコードで簡単に実現できます。


display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 16px;

このコードのポイントは、grid-template-columns: repeat(3, 1fr); の部分です。repeat(3, 1fr) は、「1fr」という単位を3回繰り返すという意味で、各列に均等なスペースを割り当てます。

列数を調整したい場合は、3 の部分を 21 に変更するだけでOK! 簡単に列数を変更できるので、様々な画面サイズに対応したレスポンシブデザインも容易に実現できます。

さらに、要素間の隙間は gap プロパティで調整できます。gap: 16px; のように指定することで、要素間に16pxの隙間が生まれます。この値を調整することで、見た目のバランスを整えることができます。

Grid Layoutは、複雑なレイアウトもシンプルに記述できるだけでなく、レスポンシブデザインにも柔軟に対応できるため、現代のWebサイト構築において非常に強力なツールです。

ぜひ、Grid Layoutを活用して、効率的で美しいWebサイトを構築してみてください!

2024/09/10

html 要素を右に並べたい

 

とりあえず、メモ

    display: flex;

ーーーー


<html>
<style>
  .flex {
    display: flex;
  }
</style>
<body>
  <div class="flex">
    <p>社長</p>
    <p>部長</p>
    <p>課長</p>
  </div>
</body>
</html>

2024/09/05

【html】safariでvideoタグの上にかぶせてうまく表示できない件

Safariでvideoタグの上にかぶせてうまく表示できない件

HTMLでコーディングしていて、動画の上に別のタグを重ねるデザインを実装したところ、Safariでの表示に問題が発生しました。他のブラウザでは正常に表示されるのに、Safariだけ動画の裏側に要素が表示されてしまい、困っていました。

原因として、z-indexの問題か、Safariのレンダリング順序の問題かと考え、調べてみました。

その結果、以下のCSSを追加することで、重ねて表示できるようになりました。

----解決策----

transform: translateZ(1px); /* 回避手段 */

この方法で、Safariでも動画の上に要素を正しく重ねて表示できるようになりました。

2024/08/15

Guideline 4.3(a) - Design - Spam

リジェクトされた、しかもスパム扱い

これどうしたらよいだろうか・・・・

クライアントにこのアプリ作ってって言われて作成しただけなのに


Guideline 4.3(a) - Design - Spam

We noticed your app shares a similar binary, metadata, and/or concept as apps submitted to the App Store by other developers, with only minor differences.

Submitting similar or repackaged apps is a form of spam that creates clutter and makes it difficult for users to discover new apps.


Next Steps

Since we do not accept spam apps on the App Store, we encourage you to review your app concept and submit a unique app with distinct content and functionality.

----


ガイドライン4.3(a) - デザイン - スパム

あなたのアプリは、他の開発者がApp Storeに提出したアプリと、バイナリ、メタデータ、および/またはコンセプトが類似しており、わずかな違いしかありません。類似したアプリやリパッケージされたアプリの提出は、乱雑さを生み出し、ユーザーが新しいアプリを発見することを困難にするスパムの一形態です。


次のステップ

App Storeではスパムアプリを受け付けておりませんので、アプリのコンセプトを見直し、明確なコンテンツと機能を備えたユニークなアプリをご提出ください。


2024/07/26

放置していると、検索されない・・・。 AdSense収益全然ない・・・。 今月は1円です。

 とりあえず、

記事を書く。

記事を書く。

記事を書く。

記事を書く。

記事を書く。


これでいいか?

2024/06/12

【C#】C#でuser32.dllを使用してマウスカーソルを消す

C#でuser32.dllを使用してマウスカーソルを消すには、

P/Invoke(Platform Invocation Services)を利用してWindows APIを呼び出します。

以下の手順で、マウスカーソルを非表示にする方法を説明します。

user32.dllのインポート:user32.dllのShowCursor関数を呼び出すために、P/Invokeを使います。

ShowCursor関数の呼び出し:ShowCursor関数は、カーソルの表示状態を変更するために使います。

関数の引数にfalseを渡すことでカーソルを非表示にできます。

以下に、C#コードの例を示します。

using System;
using System.Runtime.InteropServices;

class Program
{
    // user32.dllのShowCursor関数をインポート
    [DllImport("user32.dll")]
    private static extern int ShowCursor(bool bShow);

    static void Main(string[] args)
    {
        // カーソルを非表示にする
        ShowCursor(false);
        
        Console.WriteLine("Press any key to show cursor again...");
        Console.ReadKey();
        
        // カーソルを表示する
        ShowCursor(true);
    }
}

ちょっと頑張ってかきなおした。

C#でマウスカーソルを非表示にする方法 (P/Invoke)

マウスカーソルを非表示にすることで、特定のアプリケーション(ゲーム、全画面表示のアプリケーションなど)の操作性を向上させたり、より没入感のある体験を提供したりすることができます。C#では、P/Invoke(Platfrom Invocation Services)を利用してWindows APIのShowCursor関数を呼び出すことで、マウスカーソルを簡単に非表示にすることができます。

P/Invokeとは

P/Invokeは、マネージドコード(C#など)からアンマネージドコード(C++で記述されたDLLなど)を呼び出すための仕組みです。これにより、C#からWindows APIなどの既存の機能を再利用することができます。

ShowCursor関数の利用

ShowCursor関数は、Windows APIの一部であり、マウスカーソルの表示/非表示を制御するために使用されます。この関数を呼び出すことで、アプリケーションの動作に合わせてマウスカーソルを動的に制御することができます。

実装手順

  1. user32.dllのインポート: DllImport属性を使用して、user32.dllShowCursor関数をC#コードにインポートします。
  2. ShowCursor関数の呼び出し: ShowCursor関数を呼び出し、引数にfalseを渡すことでマウスカーソルを非表示にできます。trueを渡すと、マウスカーソルが再び表示されます。

C#コード例

以下に、マウスカーソルを非表示にするC#コードの例を示します。


using System;
using System.Runtime.InteropServices;
class Program
{
   // user32.dllのShowCursor関数をインポート
   [DllImport("user32.dll")]
   private static extern int ShowCursor(bool bShow);
   static void Main(string[] args)
   {
       // カーソルを非表示にする
       ShowCursor(false);
       Console.WriteLine("マウスカーソルを非表示にしました。");
       Console.WriteLine("何かキーを押すとマウスカーソルを再表示します...");
       Console.ReadKey();
       // カーソルを表示する
       ShowCursor(true);
       Console.WriteLine("マウスカーソルを再表示しました。");
   }
}

コード解説:

  • [DllImport("user32.dll")]: user32.dllをインポートし、ShowCursor関数をC#から呼び出せるようにします。
  • private static extern int ShowCursor(bool bShow);: ShowCursor関数のシグネチャを定義します。bool bShowは、カーソルを表示するか非表示にするかを指定する引数です。
  • ShowCursor(false);: カーソルを非表示にします。
  • ShowCursor(true);: カーソルを表示します。

注意点

  • 権限: このコードを実行するには、適切な権限が必要です。
  • ユーザーエクスペリエンス: マウスカーソルを非表示にすると、ユーザーが混乱する可能性があります。適切な状況でのみ使用するように注意してください。
  • アプリケーションの終了: アプリケーションを終了する前に、必ずマウスカーソルを再表示するようにしてください。

まとめ

P/Invokeを利用することで、C#からWindows APIのShowCursor関数を呼び出し、マウスカーソルを簡単に非表示にすることができます。この機能は、特定のアプリケーションの操作性を向上させたり、より没入感のある体験を提供したりするのに役立ちます。ただし、ユーザーエクスペリエンスに配慮し、適切な状況でのみ使用するように注意してください。

2024/06/11

iOS 18 対応予定 機種一覧

iOS 18対応予定機種一覧

機種
iPhone 15
iPhone 15 Plus
iPhone 15 Pro
iPhone 15 Pro Max
iPhone 14
iPhone 14 Plus
iPhone 14 Pro
iPhone 14 Pro Max
iPhone 13
iPhone 13 mini
iPhone 13 Pro
iPhone 13 Pro Max
iPhone 12
iPhone 12 mini
iPhone 12 Pro
iPhone 12 Pro Max
iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPhone XS
iPhone XS Max
iPhone XR
iPhone SE(第2世代)
iPhone SE(第3世代)

2024/06/10

【android】android OSの割合

android のOSのバージョンの分布が気になったので確認してみました。


2024年の5月の段階で10以上で80%を超えているので、

新規に作成する人は10以上で作成を行えばよいのでは?と思います。

ちなみに、android studioで確認が可能です。


 

2024/06/06

else は使わない。

どっちのコードがお好き?

ソースコードレビューしていて、ふと気になった点があります。条件分岐の書き方について、どちらのスタイルが多いのか、あるいはどちらが読みやすいと感じるか、といったことです。

私は後者の書き方が好きで、ソースコードの最初に「ダメな条件」を記述し、最後に「問題ない時の処理」を記述するのが好みです。これは、コードの意図が明確になり、可読性が向上すると思ってます。

-------------


if (aaaaaa == 1) {
  // 問題ない時の処理
} else {
  print("エラーだよ");
}

------or-------


if (aaaaaa != 1) {
  print("エラーだよ");
  return;
}
// 問題ない時の処理

-------------

上記2つのコードは、どちらも同じ処理を行います。しかし、書き方によってコードの理解しやすさが変わってきます。前者では、条件が真の場合と偽の場合の両方を記述する必要があり、コードが少し長くなる可能性があります。一方、後者では、エラー条件を最初にチェックし、エラーの場合はすぐに処理を中断するため、コードが簡潔になり、可読性が向上します。この「エラー条件を最初にチェックする」という書き方は、「早期リターン」と呼ばれ、多くのプログラミングコミュニティで推奨されています。

早期リターンを採用することで、ネストされた条件分岐を減らすことができ、コードの複雑さを軽減できます。また、エラー処理が明確になり、デバッグが容易になります。もちろん、どちらの書き方が正解というわけではありません。チームのコーディング規約や個人の好みに合わせて選択することが重要です。しかし、早期リターンは、可読性、保守性、デバッグの容易性を向上させるための有効な手段の一つと言えるでしょう。

2024/05/28

X (旧 Twitter) センシティブ 解除 方法

x センシティブ 解除 方法

x センシティブ 解除 方法

このガイドでは、X( 旧 Twitter) センシティブの設定を解除する方法を説明します。

手順

  1. 設定メニューを開きます。
  2. プライバシーオプションを選択します。
  3. センシティブ コンテンツの項目を見つけます。
  4. チェックボックスをオフにします。

上記の手順に従えば、x センシティブの設定を解除できます。