<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>技術情報 | 株式会社ファーストペンギン</title>
	<atom:link href="https://www.firstpenguin.co.jp/category/technical-information/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.firstpenguin.co.jp</link>
	<description></description>
	<lastBuildDate>Tue, 22 Jul 2025 14:46:40 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.firstpenguin.co.jp/wp-content/uploads/2019/09/cropped-icon-32x32.png</url>
	<title>技術情報 | 株式会社ファーストペンギン</title>
	<link>https://www.firstpenguin.co.jp</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
<atom:link rel="hub" href="https://websubhub.com/hub"/>
<atom:link rel="self" href="https://www.firstpenguin.co.jp/category/technical-information/feed/"/>
	<item>
		<title>Vue3+Vuetify3+TypeScript+Viteの開発環境を構築する</title>
		<link>https://www.firstpenguin.co.jp/vue/</link>
					<comments>https://www.firstpenguin.co.jp/vue/#respond</comments>
		
		<dc:creator><![CDATA[webmaster]]></dc:creator>
		<pubDate>Tue, 22 Jul 2025 14:20:30 +0000</pubDate>
				<category><![CDATA[技術情報]]></category>
		<category><![CDATA[Vue3]]></category>
		<guid isPermaLink="false">https://www.firstpenguin.co.jp/?p=930</guid>

					<description><![CDATA[Windows 10 / 11 に Vue 3 + Vuetify 3 + TypeScript + Vite の開発環境を構築する手順をわかりやすく説明します。]]></description>
										<content:encoded><![CDATA[<p>Windows 10 / 11 に Vue 3 + Vuetify 3 + TypeScript + Vite の開発環境を構築する手順をわかりやすく説明します。<br />
<div class="su-animate" style="opacity:0;-webkit-animation-duration:0.5s;-webkit-animation-delay:0.2s;animation-duration:0.5s;animation-delay:0.2s;" data-animation="fadeInUpBig" data-duration="0.5" data-delay="0.2">

  <div id="toc" class="toc tnt-number-detail toc-center tnt-number_detail border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">前提条件</a><ol><li><a href="#toc2" tabindex="0">Node.js の確認・インストール</a></li></ol></li><li><a href="#toc3" tabindex="0">プロジェクトの作成</a><ol><li><a href="#toc4" tabindex="0">Vite で Vue 3 + TypeScript プロジェクトを作成</a></li></ol></li><li><a href="#toc5" tabindex="0">依存パッケージのインストール</a><ol><li><a href="#toc6" tabindex="0">Vuetify 3 のインストール</a></li></ol></li><li><a href="#toc7" tabindex="0">Vuetify のセットアップ</a><ol><li><a href="#toc8" tabindex="0">ディレクトリ作成</a></li><li><a href="#toc9" tabindex="0">src/plugins/vuetify.ts を作成</a></li></ol></li><li><a href="#toc10" tabindex="0">main.ts に Vuetify を組み込む</a></li><li><a href="#toc11" tabindex="0">Vite の設定（vite.config.ts）</a></li><li><a href="#toc12" tabindex="0">実行して確認</a></li><li><a href="#toc13" tabindex="0">動作確認用のサンプルコンポーネント</a></li><li><a href="#toc14" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">前提条件</span></h2>
<ul>
<li data-start="107" data-end="147">Node.js がインストールされていること（推奨: Node.js 18以上）</li>
<li data-start="107" data-end="147">npm（Node.js インストール時に自動で入る）</li>
</ul>
<h3 data-start="186" data-end="208"><span id="toc2">Node.js の確認・インストール</span></h3>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-bash" data-lang="Bash"><code>node -v
npm -v</code></pre>
</div>
<div>
<p data-start="236" data-end="293">インストールされていなければ、公式サイトからインストールしてください。<br data-start="271" data-end="274" /><a class="cursor-pointer" target="_new" data-start="274" data-end="293">https://nodejs.org/<span class="fa fa-external-link internal-icon anchor-icon"></span></a></p>
</div>
<div class="su-animate" style="opacity:0;-webkit-animation-duration:0.5s;-webkit-animation-delay:0.2s;animation-duration:0.5s;animation-delay:0.2s;" data-animation="fadeInUpBig" data-duration="0.5" data-delay="0.2">
<h2 data-start="236" data-end="293"><span id="toc3">プロジェクトの作成</span></h2>
<h3><span id="toc4">Vite で Vue 3 + TypeScript プロジェクトを作成</span></h3>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-bash" data-lang="Bash"><code>npm create vite@latest my-vue-vuetify-app -- --template vue-ts
cd my-vue-vuetify-app</code></pre>
<p>my-vue-vuetify-app は任意のプロジェクト名に変更可</p>
<h2><span id="toc5">依存パッケージのインストール</span></h2>
</div>
</div>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-bash" data-lang="Bash"><code>npm install</code></pre>
</div>
<h3><span id="toc6">Vuetify 3 のインストール</span></h3>
<p>Vuetify 3 は Vue 3 に対応しています。<br data-start="609" data-end="612" />Vuetify 3 とアイコンフォントなど必要なパッケージを入れます。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-bash" data-lang="Bash"><code>npm install vuetify@latest
npm install @mdi/font
npm install sass</code></pre>
</div>
<ul>
<li data-start="730" data-end="778"><code data-start="730" data-end="741">@mdi/font</code> は Material Design Icons のフォントを使用するため</li>
<li data-start="730" data-end="778"><code data-start="781" data-end="787">sass</code> は Vuetifyのスタイルで使われるため必要</li>
</ul>
</div>
<div class="su-animate" style="opacity:0;-webkit-animation-duration:0.5s;-webkit-animation-delay:0.2s;animation-duration:0.5s;animation-delay:0.2s;" data-animation="fadeInUpBig" data-duration="0.5" data-delay="0.2">
<h2 data-start="818" data-end="839"><span id="toc7">Vuetify のセットアップ</span></h2>
<p data-start="841" data-end="892"><code data-start="841" data-end="854">src/plugins</code> フォルダを作成し、<code data-start="864" data-end="876">vuetify.ts</code> ファイルを作るのが一般的です。</p>
<h3 data-start="894" data-end="911"><span id="toc8">ディレクトリ作成</span></h3>
<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary">
<div class="overflow-y-auto p-4" dir="ltr">
<div class="hcb_wrap">
<pre class="prism line-numbers lang-bash" data-lang="Bash"><code>mkdir src/plugins</code></pre>
</div>
</div>
</div>
<h3 data-start="943" data-end="980"><span id="toc9">src/plugins/vuetify.ts を作成</span></h3>
<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary">
<div class="overflow-y-auto p-4" dir="ltr">
<div class="hcb_wrap">
<pre class="prism line-numbers lang-ts" data-lang="TypeScript"><code>// @ts-ignore  ※@ts-ignore を使って型チェックだけ無視して問題ありません
import 'vuetify/styles' // Vuetify のスタイルを読み込む
import { createVuetify } from 'vuetify'
import { aliases, mdi } from 'vuetify/iconsets/mdi-svg'

export const vuetify = createVuetify({
  icons: {
    defaultSet: 'mdi',
    aliases,
    sets: {
      mdi,
    }
  },
})
</code></pre>
</div>
</div>
</div>
</div>
<div class="su-animate" style="opacity:0;-webkit-animation-duration:0.5s;-webkit-animation-delay:0.2s;animation-duration:0.5s;animation-delay:0.2s;" data-animation="fadeInUpBig" data-duration="0.5" data-delay="0.2">
<h2 data-start="1300" data-end="1331"><span id="toc10">main.ts に Vuetify を組み込む</span></h2>
<p data-start="1333" data-end="1360"><code data-start="1333" data-end="1346">src/main.ts</code> を以下のように編集します。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-ts" data-lang="TypeScript"><code>import { createApp } from 'vue'
import App from './App.vue'

import { vuetify } from './plugins/vuetify'

import '@mdi/font/css/materialdesignicons.css' // アイコン用CSS

const app = createApp(App)

app.use(vuetify)

app.mount('#app')</code></pre>
</div>
</div>
<div class="su-animate" style="opacity:0;-webkit-animation-duration:0.5s;-webkit-animation-delay:0.2s;animation-duration:0.5s;animation-delay:0.2s;" data-animation="fadeInUpBig" data-duration="0.5" data-delay="0.2">
<h2 data-start="1616" data-end="1648"><span id="toc11">Vite の設定（vite.config.ts）</span></h2>
<p data-start="1650" data-end="1721">Vuetifyのコンポーネントやスタイルを正しくビルドするために、<code data-start="1683" data-end="1699">vite.config.ts</code>にVuetify用プラグイン設定を入れます。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-ts" data-lang="TypeScript"><code>import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vuetify from 'vite-plugin-vuetify'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    vuetify({ autoImport: true }), // Vuetifyの自動インポート
　],
})<span style="background-color: #ffffff; color: #333333; font-family: 'Kosugi Maru', sans-serif; font-size: 16px;"></span></code></pre>
</div>
</div>
<div class="su-animate" style="opacity:0;-webkit-animation-duration:0.5s;-webkit-animation-delay:0.2s;animation-duration:0.5s;animation-delay:0.2s;" data-animation="fadeInUpBig" data-duration="0.5" data-delay="0.2">
<h2 data-start="2010" data-end="2022"><span id="toc12">実行して確認</span></h2>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-bash" data-lang="Bash"><code>npm run dev</code></pre>
</div>
<p>ブラウザで <a rel="nofollow noopener" target="_blank" href="http://localhost:5173"><code data-start="2055" data-end="2078">http://localhost:5173</code><span class="fa fa-external-link external-icon anchor-icon"></span></a> にアクセスし、Vue + Vuetify アプリが起動すれば成功です。<br />
</div>
<div class="su-animate" style="opacity:0;-webkit-animation-duration:0.5s;-webkit-animation-delay:0.2s;animation-duration:0.5s;animation-delay:0.2s;" data-animation="fadeInUpBig" data-duration="0.5" data-delay="0.2">
<h2 data-start="2121" data-end="2144"><span id="toc13">動作確認用のサンプルコンポーネント</span></h2>
<p data-start="2146" data-end="2192"><code data-start="2146" data-end="2159">src/App.vue</code> の内容を簡単にVuetifyのボタンを置いて確認してみましょう。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-ts" data-lang="TypeScript"><code>&lt;template&gt;
&lt;v-app&gt;
&lt;v-main&gt;
&lt;v-container class="pa-4"&gt;
&lt;v-btn color="primary"&gt;Vuetify Button&lt;/v-btn&gt;
&lt;/v-container&gt;
&lt;/v-main&gt;
&lt;/v-app&gt;
&lt;/template&gt;

&lt;script lang="ts" setup&gt;
// 特に記述なし
&lt;/script&gt;

&lt;style&gt;
/* 必要ならスタイルを追記 */
&lt;/style&gt;</code></pre>
</div>
</div>
<div class="su-animate" style="opacity:0;-webkit-animation-duration:0.5s;-webkit-animation-delay:0.2s;animation-duration:0.5s;animation-delay:0.2s;" data-animation="fadeInUpBig" data-duration="0.5" data-delay="0.2">
<h2 data-start="2472" data-end="2478"><span id="toc14">まとめ</span></h2>
<ul>
<li data-start="2482" data-end="2498">Node.js インストール済み</li>
<li data-start="2482" data-end="2498">npm create vite@latest プロジェクト名 &#8212; &#8211;template vue-ts</li>
<li data-start="2557" data-end="2588">Vuetify, sass, @mdi/font インストールVuetify プラグイン作成</li>
<li data-start="2557" data-end="2588">main.tsでVuetifyを登録</li>
<li data-start="2557" data-end="2588">vite.config.tsにvuetifyプラグイン追加</li>
<li data-start="2557" data-end="2588">npm run dev で起動</li>
</ul>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.firstpenguin.co.jp/vue/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>C# ユーザーコントロールを配置する時の注意点</title>
		<link>https://www.firstpenguin.co.jp/c-usercontrol-1/</link>
					<comments>https://www.firstpenguin.co.jp/c-usercontrol-1/#respond</comments>
		
		<dc:creator><![CDATA[takashima.kentaro]]></dc:creator>
		<pubDate>Mon, 15 Jun 2020 11:07:53 +0000</pubDate>
				<category><![CDATA[技術情報]]></category>
		<category><![CDATA[開発]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[ユーザーコントロール]]></category>
		<category><![CDATA[フォントサイズ]]></category>
		<category><![CDATA[AutoScaleMode]]></category>
		<guid isPermaLink="false">https://www.firstpenguin.co.jp/?p=319</guid>

					<description><![CDATA[今回はユーザーコントロールを配置した時に少し躓いた点について紹介します。 以下のようなユーザコントロールを作成しました。 メインのフォームに配置してみると、何度やってもコントロールの位置やフォントサイズがおかしくなります [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>今回はユーザーコントロールを配置した時に少し躓いた点について紹介します。</p>
<p>以下のようなユーザコントロールを作成しました。<br />
<img fetchpriority="high" decoding="async" class="alignnone size-full wp-image-322" src="https://www.firstpenguin.co.jp/wp-content/uploads/c-usercontrol-1.png" alt="" width="735" height="413" srcset="https://www.firstpenguin.co.jp/wp-content/uploads/c-usercontrol-1.png 735w, https://www.firstpenguin.co.jp/wp-content/uploads/c-usercontrol-1-300x169.png 300w, https://www.firstpenguin.co.jp/wp-content/uploads/c-usercontrol-1-120x68.png 120w, https://www.firstpenguin.co.jp/wp-content/uploads/c-usercontrol-1-160x90.png 160w, https://www.firstpenguin.co.jp/wp-content/uploads/c-usercontrol-1-320x180.png 320w, https://www.firstpenguin.co.jp/wp-content/uploads/c-usercontrol-1-406x228.png 406w" sizes="(max-width: 735px) 100vw, 735px" /></p>
<p>メインのフォームに配置してみると、何度やってもコントロールの位置やフォントサイズがおかしくなります。<br />
<img decoding="async" class="alignnone size-full wp-image-323" src="https://www.firstpenguin.co.jp/wp-content/uploads/c-usercontrol-2.png" alt="" width="735" height="537" srcset="https://www.firstpenguin.co.jp/wp-content/uploads/c-usercontrol-2.png 735w, https://www.firstpenguin.co.jp/wp-content/uploads/c-usercontrol-2-300x219.png 300w" sizes="(max-width: 735px) 100vw, 735px" /></p>
<p>配置したユーザーコントロールのプロパティ(AutoSizeなど)を確認してもおかしくなる理由が見つからず、作り直してまた配置してみようかと思い始めました。</p>
<p>もう一度プロパティの設定を確認してみようと、先ほどとは違いユーザーコントロールをデザイナで開きプロパティを一つ一つ確認していくと、<br />
<img decoding="async" class="alignnone size-full wp-image-325" src="https://www.firstpenguin.co.jp/wp-content/uploads/c-usercontrol-3.png" alt="" width="782" height="426" srcset="https://www.firstpenguin.co.jp/wp-content/uploads/c-usercontrol-3.png 782w, https://www.firstpenguin.co.jp/wp-content/uploads/c-usercontrol-3-300x163.png 300w, https://www.firstpenguin.co.jp/wp-content/uploads/c-usercontrol-3-768x418.png 768w" sizes="(max-width: 782px) 100vw, 782px" /></p>
<div class="info-box">「AutoScaleMode」</div>
<p>なるものを発見。説明文を見てみると、</p>
<div class="info-box">解像度またはフォントが変更されたとき、フォームまたはコントロールのサイズ変更方法を決定します。</div>
<p>と書かれていました。<br />
設定するAutoScaleMode定数を見てみると、</p>
<div class="hcb_wrap blank-box">
<pre class="prism line-numbers lang-csharp" data-lang="C#"><code>//
// 概要:
// 自動スケーリングが無効になっています。
None = 0,
//
// 概要:
// クラスが使用するフォント (通常はシステム フォント) のサイズに応じてスケールを制御します。
Font = 1,
//
// 概要:
// ディスプレイの解像度に応じてスケールを制御します。 一般的な解像度は 96 dpi と 120 dpi です。
Dpi = 2,
//
// 概要:
// クラスの親のスケーリング モードに従ってスケールを制御します。 親が存在しない場合、自動スケーリングは無効になっています。
Inherit = 3</code></pre>
</div>
<p>初期値では「Font」が設定されていたため、「None」を設定し再コンパイル。<br />
メインのフォームをデザイナで開いてみると、無事ユーザーコントロールを作成した通りの見た目で配置することが出来ました。<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-326" src="https://www.firstpenguin.co.jp/wp-content/uploads/c-usercontrol-4.png" alt="" width="785" height="521" srcset="https://www.firstpenguin.co.jp/wp-content/uploads/c-usercontrol-4.png 785w, https://www.firstpenguin.co.jp/wp-content/uploads/c-usercontrol-4-300x199.png 300w, https://www.firstpenguin.co.jp/wp-content/uploads/c-usercontrol-4-768x510.png 768w" sizes="(max-width: 785px) 100vw, 785px" /></p>
<div class="alert-box">原因となっていたのは、配置先であるメインフォームのフォントを変更していたためでした。<br />
AutoScaleModeプロパティで「Font」が設定されていると配置先のフォントに合わせて自動でスケーリングされるようです。</div>
<p>もし同じような現象が起きて困ったら、参考に設定を見直してみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.firstpenguin.co.jp/c-usercontrol-1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>C# 自作DLLからapp.configの読み書き</title>
		<link>https://www.firstpenguin.co.jp/c-appconfg/</link>
					<comments>https://www.firstpenguin.co.jp/c-appconfg/#respond</comments>
		
		<dc:creator><![CDATA[takashima.kentaro]]></dc:creator>
		<pubDate>Wed, 10 Jun 2020 09:16:49 +0000</pubDate>
				<category><![CDATA[技術情報]]></category>
		<category><![CDATA[開発]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[App.config]]></category>
		<category><![CDATA[DLL]]></category>
		<category><![CDATA[ライブラリ]]></category>
		<guid isPermaLink="false">https://www.firstpenguin.co.jp/?p=299</guid>

					<description><![CDATA[自作DLLからアプリケーション設定を読み書きする方法についてご紹介。 目次 アプリケーションからの読み書き方法自作DLLからの読み書き方法 アプリケーションからの読み書き方法 アプリケーション自身のアプリケーション設定を [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>自作DLLからアプリケーション設定を読み書きする方法についてご紹介。</p>

  <div id="toc" class="toc tnt-number-detail toc-center tnt-number_detail border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">アプリケーションからの読み書き方法</a></li><li><a href="#toc2" tabindex="0">自作DLLからの読み書き方法</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">アプリケーションからの読み書き方法</span></h2>
<p>アプリケーション自身のアプリケーション設定を読み書きする場合は以下の方法で簡単に操作できます。<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-300" src="https://www.firstpenguin.co.jp/wp-content/uploads/c_appconfig_1.png" alt="" width="830" height="456" srcset="https://www.firstpenguin.co.jp/wp-content/uploads/c_appconfig_1.png 830w, https://www.firstpenguin.co.jp/wp-content/uploads/c_appconfig_1-300x165.png 300w, https://www.firstpenguin.co.jp/wp-content/uploads/c_appconfig_1-768x422.png 768w, https://www.firstpenguin.co.jp/wp-content/uploads/c_appconfig_1-406x223.png 406w" sizes="(max-width: 830px) 100vw, 830px" /></p>
<p>設定内容（Sample）を取得する場合は以下のように記述することで取得できます。</p>
<div></div>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-csharp" data-lang="C#"><code>var value = Properties.Settings.Default.Sample; 
Console.WriteLine(value); //出力結果：サンプル</code></pre>
</div>
<p>変更したい場合は以下の通りです。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-csharp" data-lang="C#"><code>Properties.Settings.Default.Sample = "サンプル2";
var value = Properties.Settings.Default.Sample;
Console.WriteLine(value); //出力結果：サンプル2</code></pre>
</div>
<div></div>
<p>変更した値が反映されない場合は、以下の要領で再読み込みを行うと設定した内容が取得できます。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-csharp" data-lang="C#"><code>//アプリケーション設定を再読み込み
Properties.Settings.Default.Reload();</code></pre>
</div>
<div></div>
<h2><span id="toc2">自作DLLからの読み書き方法</span></h2>
<p>別に作成したライブラリ(DLL)で呼び出し元のアプリケーション設定を読み書きする場合、Propertiesから取得しようとしても「Sample」とうプロパティ自体がありません。<br />
ライブラリから呼び出し元アプリケーション設定を取得する場合は参照設定より「System.Configuration」を追加し、以下のように記述します。</p>
<div>
<div></div>
</div>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-csharp" data-lang="C#"><code>var appConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var group = appConfig.SectionGroups["userSettings"];
var section = (ClientSettingsSection)group.Sections[0];
var setting = section.Settings.Get("Sample");
//値を取得
var value = setting.Value.ValueXml.InnerText;
Console.WriteLine(value);//出力結果：サンプル</code></pre>
</div>
<p>また、値を書き込む場合は以下のように記述します。</p>
<p>&nbsp;</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-csharp" data-lang="C#"><code>//既存値を削除する
section.Settings.Remove(setting);
//値を変更
setting.Value.ValueXml.InnerText = "サンプル2";
//アプリケーション設定へ追加
section.Settings.Add(setting);

//呼び出し元のアプリケーションで出力してみる
//アプリケーション設定を再読み込み
Properties.Settings.Default.Reload();
Console.WriteLine(Properties.Settings.Default.Sample); //出力結果：サンプル2</code></pre>
</div>
<div></div>
<p>以上で自作DLLから呼び出し元アプリケーションの設定を読み書きする方法をご紹介しました。<br />
少し大変になりますが、必要になった場合はご参照ください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.firstpenguin.co.jp/c-appconfg/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>FTPファイル転送の実装</title>
		<link>https://www.firstpenguin.co.jp/c-sftp/</link>
					<comments>https://www.firstpenguin.co.jp/c-sftp/#respond</comments>
		
		<dc:creator><![CDATA[takashima.kentaro]]></dc:creator>
		<pubDate>Mon, 08 Jun 2020 10:29:06 +0000</pubDate>
				<category><![CDATA[技術情報]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[SFTP]]></category>
		<category><![CDATA[ファイル転送]]></category>
		<category><![CDATA[開発]]></category>
		<guid isPermaLink="false">https://www.firstpenguin.co.jp/?p=285</guid>

					<description><![CDATA[SSH.NET(Renci.SshNet)でファイルを転送する方法を紹介。 ※SSH.NETとは.NET向けのSSHライブラリです。 目次 SSH.NETパッケージのインストールコーディング要領実装サンプル SSH.NE [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>SSH.NET(Renci.SshNet)でファイルを転送する方法を紹介。<br />
※SSH.NETとは.NET向けのSSHライブラリです。</p>

  <div id="toc" class="toc tnt-number-detail toc-center tnt-number_detail border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8" checked><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">SSH.NETパッケージのインストール</a></li><li><a href="#toc2" tabindex="0">コーディング要領</a></li><li><a href="#toc3" tabindex="0">実装サンプル</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">SSH.NETパッケージのインストール</span></h2>
<p>SSHを操作するためにパッケージをインストールします。</p>
<div class="info-box">「ツール」→「NuGetパッケージマネージャー」→「ソリューションのNuGetパッケージの管理」</div>
<p>を選択し管理画面を開きます。</p>
<p><img loading="lazy" decoding="async" src="https://www.firstpenguin.co.jp/wp-content/uploads/c_sftp_1.png" alt="" width="880" height="493" class="alignnone size-full wp-image-290" srcset="https://www.firstpenguin.co.jp/wp-content/uploads/c_sftp_1.png 880w, https://www.firstpenguin.co.jp/wp-content/uploads/c_sftp_1-300x168.png 300w, https://www.firstpenguin.co.jp/wp-content/uploads/c_sftp_1-768x430.png 768w, https://www.firstpenguin.co.jp/wp-content/uploads/c_sftp_1-120x68.png 120w, https://www.firstpenguin.co.jp/wp-content/uploads/c_sftp_1-160x90.png 160w, https://www.firstpenguin.co.jp/wp-content/uploads/c_sftp_1-320x180.png 320w, https://www.firstpenguin.co.jp/wp-content/uploads/c_sftp_1-406x227.png 406w" sizes="(max-width: 880px) 100vw, 880px" /></p>
<p>検索窓へ「SSH.NET」を入力し、参照タブへ移動します。その中から、</p>
<div class="info-box">「SSH.NET」</div>
<p>をインストールしてください。</p>
<h2><span id="toc2">コーディング要領</span></h2>
<p>初めにSSH接続用のクライアントを生成します。</p>
<div class="info-box">var client = new SftpClient(ホスト名, ユーザ名, パスワード);</div>
<p>次に接続を行います。</p>
<div class="info-box">client.Connect();</div>
<p>接続が確立したら、ファイルをダウンロードまたはアップロードするコードを記述します。</p>
<div class="info-box">//ダウンロード<br />
client.DownloadFile(ダウンロードするファイルパス, ダウンロード先のファイルストリーム);<br />
//アップロード<br />
client.UploadFile(アップロードするファイルストリーム, アップロード先ファイルパス);</div>
<p>ここまでで、ファイルのダウンロードまたはアップロードが実装できます。</p>
<h2><span id="toc3">実装サンプル</span></h2>
<p>上記までの内容を元に実装してみました。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-csharp" data-lang="C#"><code>using System.IO;
using Renci.SshNet;
private void sample()
{
  var sHost = "ホスト名";
  var sUser = "ユーザ名";
  var sPass = "パスワード";

  //SSHクライアント生成
  using (var client = new SftpClient(sHost, sUser, sPass))
  {

    //接続
    client .Connect();
    if (!client.IsConnected)
    {
      Console.WriteLine("SSH接続が確立しませんでした。");
      return;
    }

    //ファイルをアップロード
    using (Stream fs = File.OpenRead(@"C:\Temp\UploadFile.txt"))
    {
      client.UploadFile(fs, "/home/user1/UploadFile.txt");
    }

    //ファイルをダウンロード
    using (Stream fs = File.OpenWrite(@"C:\Temp\DownloadFile.txt"))
    {
      client.DownloadFile("/home/user1/UploadFile.txt", fs);
    }
  }
}</code></pre>
</div>
<p>メソッドを実行すると、「C:\Temp\UploadFile.txt」というファイルがアップロードされ、<br />
アップロードしたファイルが「C:\Temp\DownloadFile.txt」という名前で保存されます。</p>
<p>以上、SSH接続でのファイル転送をご紹介しました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.firstpenguin.co.jp/c-sftp/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>C# でSQLiteにアクセスする処理を実装</title>
		<link>https://www.firstpenguin.co.jp/sqlite/</link>
		
		<dc:creator><![CDATA[takashima.kentaro]]></dc:creator>
		<pubDate>Wed, 03 Jun 2020 10:32:19 +0000</pubDate>
				<category><![CDATA[技術情報]]></category>
		<category><![CDATA[開発]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[SQLite]]></category>
		<category><![CDATA[SQLite3]]></category>
		<category><![CDATA[データベース]]></category>
		<guid isPermaLink="false">https://www.firstpenguin.co.jp/?p=231</guid>

					<description><![CDATA[C#でSQLite3を使ってみたのでまとめてみました。 目次 SQLiteをインストールコマンドラインツールでデータベース作成コマンドラインツールでテーブル作成C#によるデータベースアクセスパッケージのインストールプログ [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>C#でSQLite3を使ってみたのでまとめてみました。</p>

  <div id="toc" class="toc tnt-number-detail toc-center tnt-number_detail border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-10" checked><label class="toc-title" for="toc-checkbox-10">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">SQLiteをインストール</a></li><li><a href="#toc2" tabindex="0">コマンドラインツールでデータベース作成</a></li><li><a href="#toc3" tabindex="0">コマンドラインツールでテーブル作成</a></li><li><a href="#toc4" tabindex="0">C#によるデータベースアクセス</a></li><li><a href="#toc5" tabindex="0">パッケージのインストール</a></li><li><a href="#toc6" tabindex="0">プログラムでデータ抽出</a></li><li><a href="#toc7" tabindex="0">最後に</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">SQLiteをインストール</span></h2>
<p>SQLiteをコマンドから使用するためのコマンドラインツールのダウンロードとインストールを行います。</p>
<div class="information-box">コマンドラインツールはプログラムの開発時には必要ありません。<br />
先にデータベースやテーブルを作成しておく場合はインストールしてください。</div>
<p>まずはじめに<a rel="nofollow noopener" target="_blank" href="https://www.sqlite.org/">公式ページ<span class="fa fa-external-link external-icon anchor-icon"></span></a>にアクセスします。</p>
<div><a rel="nofollow noopener" target="_blank" href="https://www.sqlite.org/">https://www.sqlite.org/<span class="fa fa-external-link external-icon anchor-icon"></span></a></div>
<p>ページが表示されたら、画面上部の「Download」をクリックし、ダウンロードページに移動します。<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-241" src="https://www.firstpenguin.co.jp/wp-content/uploads/SQLite_1.png" alt="" width="1200" height="792" srcset="https://www.firstpenguin.co.jp/wp-content/uploads/SQLite_1.png 1200w, https://www.firstpenguin.co.jp/wp-content/uploads/SQLite_1-300x198.png 300w, https://www.firstpenguin.co.jp/wp-content/uploads/SQLite_1-1024x676.png 1024w, https://www.firstpenguin.co.jp/wp-content/uploads/SQLite_1-768x507.png 768w" sizes="(max-width: 1200px) 100vw, 1200px" /></p>
<p>今回はWindows10(64bit)の環境で利用しますので、ダウンロードページが表示されたら「Precompiled Binaries for Windows」まで移動し、「sqlite-tools」をダウンロードします。<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-248" src="https://www.firstpenguin.co.jp/wp-content/uploads/SQLite_2-1.png" alt="" width="1196" height="1008" srcset="https://www.firstpenguin.co.jp/wp-content/uploads/SQLite_2-1.png 1196w, https://www.firstpenguin.co.jp/wp-content/uploads/SQLite_2-1-300x253.png 300w, https://www.firstpenguin.co.jp/wp-content/uploads/SQLite_2-1-1024x863.png 1024w, https://www.firstpenguin.co.jp/wp-content/uploads/SQLite_2-1-768x647.png 768w" sizes="(max-width: 1196px) 100vw, 1196px" /></p>
<p>ダウンロードしたファイルを任意のフォルダに解凍すればインストールは完了です。<br />
※コマンドラインツールなので、必要であればパスを通してください。</p>
<h2><span id="toc2">コマンドラインツールでデータベース作成</span></h2>
<p>コマンドプロンプトを起動し、先ほどインストールしたコマンドラインツールを使用してデータベースを作成します。<br />
※「データベース名＝ファイル名」となります。どのような拡張子でもよさそうですが、.dbや.sqlite3などをつけておくとわかりやすいと思います。</p>
<div>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-bash" data-lang="Command"><code>&gt; sqlite3 データベース名</code></pre>
</div>
</div>
<p>データベース名を指定してコマンドラインツールを実行すると、データベースが存在する場合は指定した名前のデータベースに接続し、指定した名前のデータベースが存在しない場合には新規にデータベースを作成した上で接続します。</p>
<div class="information-box">新規作成の場合、この時点ではデータベースファイルは作成されず、初めてテーブルを作成した際に作成されます。</div>
<h2><span id="toc3">コマンドラインツールでテーブル作成</span></h2>
<p>次にテーブルを作成してみます。（データベースに接続されている場合は、プロンプトに「sqlite&gt;」という表示となっています。）<br />
CREATE TABLEでテーブルが作成されますので、次のように実行してください。</p>
<div>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-sql" data-lang="SQL"><code>CREATE TABLE テーブル名(カラム1, カラム2, ...);</code></pre>
</div>
</div>
<p>最後に「；（セミコロン）」が無いとSQL文が発行されないようです。<br />
入力忘れた場合は次の行で<span class="keyboard-key">；</span>（セミコロン）と<span class="keyboard-key">Enter</span>を入力してください。</p>
<p>以上でテーブルまで作成されました。<br />
終了する場合は、「.exit」コマンドを入力してください。</p>
<div>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-sql" data-lang="Command"><code>sqlite&gt; .exit</code></pre>
</div>
</div>
<p>テーブルまで作成すると、データベース名のファイルが作成されていると思います。</p>
<div class="information-box">システム開発では作成されたファイルへ接続して処理を行いますので、データベースファイルはシステムでアクセスしやすいフォルダへ保管してください。</div>
<div>
<h2><span id="toc4">C#によるデータベースアクセス</span></h2>
<p>つぎに、C＃によるデータアクセスのためのデータベースを準備します。</p>
<p>コマンドラインツールで以下コマンドを実行しデータベースファイルを作成します。</p>
<div>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-plain" data-lang="Command"><code>&gt;sqlite3 sample.sqlite3
SQLite version x.xx.x xxxx-xx-xx xx:xx:xx
Enter ".help" for usage hints.
</code></pre>
</div>
</div>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-sql" data-lang="SQL"><code>CREATE TABLE t_sample(id, data);</code></pre>
</div>
<p>そのままデータもINSERTで追加して接続を終了します。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-sql" data-lang="SQL"><code>INSERT INTO t_sample (id, data) VALUES (1, 'data01');
INSERT INTO t_sample (id, data) VALUES (2, 'data02');
INSERT INTO t_sample (id, data) VALUES (3, 'data03');</code></pre>
</div>
<div>
<div>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-plain" data-lang="Command"><code>sqlite&gt; .exit</code></pre>
</div>
</div>
</div>
<h2><span id="toc5">パッケージのインストール</span></h2>
<p>C#でSQLiteを操作するためにパッケージをインストールします。<br />
導入するソリューションを作成するか、既存のソリューションを開いてください。</p>
<p>VisualStudioが立ち上がったら</p>
<div class="info-box">「ツール」→「NuGetパッケージマネージャー」→「ソリューションのNuGetパッケージの管理」</div>
<p>を選択し管理画面を開きます。</p>
<p>検索窓へ「SQLite」を入力し、参照タブへ移動します。<br />
すると多数の検索結果が表示されますが、今回は必要最低限の機能のみ使用しますので、</p>
<div class="info-box">「System.Data.SQLite.Core」</div>
<p>をインストールしてください。</p>
<h2><span id="toc6">プログラムでデータ抽出</span></h2>
<p>パッケージのインストールが完了したら、実際にデータを取得してみます。<br />
以下のコードを実行すると、作成したデータベースファイルへ接続し、データが抽出されます。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-csharp" data-lang="C#"><code>//データベースのファイルパスを指定
var constr =new SQLiteConnectionStringBuilder {DataSource = "sample.sqlite3" };
using (var cn = new SQLiteConnection(constr.ToString()))
{
    //データベースへ接続
    cn.Open();
    cmd = new SQLiteCommand(cn))
    {
        //データ抽出
        cmd.CommandText = $"SELECT * FROM  t_sample";
        using (var reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                Console.WriteLine(reader.GetValues().Get("data"));
            }
        }
    }
}</code></pre>
</div>
</div>
<div>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-plain" data-lang="実行結果">//実行結果
//data01
//data02
//data03</pre>
</div>
</div>
<div>
<h2><span id="toc7">最後に</span></h2>
<p>データベースの作成～コーディングの実装まで比較的簡単に行えました。<br />
まだまだ使っていない機能もたくさんありますので、今後も勉強しながら使っていこうと思います。</p>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>C# HttpClientでJSONデータ送受信</title>
		<link>https://www.firstpenguin.co.jp/c-httpclient-json/</link>
					<comments>https://www.firstpenguin.co.jp/c-httpclient-json/#respond</comments>
		
		<dc:creator><![CDATA[takashima.kentaro]]></dc:creator>
		<pubDate>Mon, 18 May 2020 01:31:13 +0000</pubDate>
				<category><![CDATA[技術情報]]></category>
		<category><![CDATA[開発]]></category>
		<category><![CDATA[C#]]></category>
		<guid isPermaLink="false">https://www.firstpenguin.co.jp/?p=209</guid>

					<description><![CDATA[HttpClient(System.Net.Http)でデータの送受信(GET、POST)を紹介。 先ずはJSONデータを受信するだけならGETで取得する。 private static async void Get(s [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>HttpClient(System.Net.Http)でデータの送受信(GET、POST)を紹介。</p>
<p>先ずはJSONデータを受信するだけならGETで取得する。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-csharp" data-lang="C#"><code>private static async void Get(string url)
{
    using (var client = new HttpClient())
    {
        //GETリクエスト
        var res = await client.GetAsync(url);

        //取得
        var _response = await res.Content.ReadAsStringAsync();
    }
}
</code></pre>
</div>
<p>取得した<code>_response</code>に文字列型でJSONが返却される。</p>
<p>次にJSONデータを送受信する場合はPOSTを使用する。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-csharp" data-lang="C#"><code>private static async void Post(string url, string request)
{
    using (var client = new HttpClient())
    {
        //POSTリクエスト
        var content = new StringContent(request, Encoding.UTF8, "application/json");
        var res = await client.PostAsync(url, content);

        //取得
        _response = await res.Content.ReadAsStringAsync();
    }
}</code></pre>
</div>
<p>JSONデータをPOSTする場合、PostAsyncメソッドの第二引数に送信データをStringContent型で指定する。</p>
<p>また、SendAsyncメソッドを使用し、GETでデータの送受信、POSTでデータの受信のみ<br />
を実行しようとすると、例外エラーが発生したため断念。。。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.firstpenguin.co.jp/c-httpclient-json/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
