2016年11月07日

C#の入門書が2冊と画像処理に関する入門書が新発売


VisualC#2015パーフェクトマスター (Perfect Master)

VisualStudio 2015 Communityの基本操作やC#の基本文法から平易に解説。C#以外のプログラミング経験がない人でも大丈夫な構成。

著者の金城さんはC#以外にもPythonやVBやJavaなどの入門書の著作が沢山ある方。初心者が躓くところを熟知されていて、図解で分かりやすく説明するのが得意みたい。

アマゾンのレビューを見ると誤字が多いなんてあるけど出版社のサイトには正誤表がまだない。



ひと目でわかるVisualC# 2015 アプリケーション 開発入門

こちらも初学者向けの内容で、基本文法から取り上げらている。実際にコードを書きながらWindowsフォームアプリケーションとWPFとの実装方法を身に着けるスタイル。データバインディングやMVVMまで触れているが、そういう時代なのかも。サンプルプログラムはダウンロードで入手だそうです。

著者の伊藤さんもC#の歴代入門書を書いてこられた方。



Visual C# 2013 画像処理・数値プログラミング

C#言語を用いて画像処理・数値計算に関する解説。ちょっと珍しい系統。

あまり文献がないところだけに貴重なんですけど、Win8.1のVS2013のWinFormsなんだそうです。Win10のVS2015 のWPFでの改版があるといいですね。

posted by RR at 03:18 | Comment(0) | 書籍 | このブログの読者になる | 更新情報をチェックする

川俣さんの新著「C#プログラマーのための デバッグの基本&応用テクニック」


統合開発環境であるVisualStudioを用いたC#言語による開発は生産性がとても高いと言われています。その大きな理由の一つにデバッグのしやすさが挙げられます。

VisualStudioがデバッキングツールとしてとても高機能であることや、実際の不具合の原因と表示出力されるエラーメッセージとに牽連性が強くわかりやすいこと、エラーに関する情報がMSDNを中心に日本語文献だけでも充実していることなどが理由でしょう。

但し、デバッグが容易になっているとはいえ、すべての不具合が簡単に見つかり解消できる訳でもありません。難解な構造による特殊な組み合わせ、非同期処理による例外的なタイミングに起因したもの、外部モジュールやプラットフォームとの版の違いによる差異、動作環境に依存したソフトの外側の問題、などなど難しいものは依然として難しいものです。

C#言語による開発経験を積むことにより勘所などを会得していくわけですが、そうした内容に関する系統だった解説書はありませんでした。プログラムを組み上げる方のノウハウは沢山見つけることができますが、デバッグについてはほとんど個人の経験に依拠しているのが現実です。

周りにハイスキラーの先輩同輩仲間がいて、そうしたノウハウの教育共有に積極的なら幸いですが、なかなかそういう理想的な環境にはめぐり合わせられないもの。そうした時に優秀な先達の指南書はとても参考になるものです。一読の価値ありでした。

posted by RR at 03:54 | Comment(0) | 書籍 | このブログの読者になる | 更新情報をチェックする

2016年11月14日

Visual Studio for Mac が発表される

既に発表されている Visual Studio CodeによりMac上での開発は可能となっていますが、今回はこれとは異なり、Xamarin Studioを基に開発されたVisual Studio for Macがリリースされるとのこと。

その内容については以下で述べられています。正式な発表は今週水曜(日本時間木曜)の予定。

https://msdn.microsoft.com/en-us/magazine/mt790182.aspx

こんなことが書かれています。

・クラウドファースト開発ツール
・既存のVisual Studioと同じような機能(インテリセンス・リファクタリング・MSBuild)
・エディタはTextMate
・WindowOSとのプロジェクト共有が可能
・Native iOS,Andoroid, .NET Core, Azuruのためのサーバー開発・モバイル開発用
・C#以外にF#もサポート
・Xamarin.Forms UIライブラリが使える
・IDEはC#で記述されており、拡張可能
・NuGetも勿論


posted by RR at 21:22 | Comment(0) | 開発環境 | このブログの読者になる | 更新情報をチェックする

2016年11月17日

データベースから値の取得 環境作成

内容

.NETでのデータベースへのアクセスにはいくつか異なる方法がある。
それらデータを取得する方法を挙げてみる。

概要

データストアとして近年はNoSQLなどが普及し始めているが、まだまだRDBMSが主流。
Oracle,MySQL,DB2,PostgreSQLなどいろいろあるが、ここではマイクロソフト社からリリースされているSQL Serverを使用。

SQL Serverのインストール

現時点での最新版は SQL Server 2016です。
無償版であるExpress版があるのでそれをインストールします。
下記からダウンロードできます。
https://www.microsoft.com/ja-JP/download/details.aspx?id=52679

SQL Server Management Studioのインストール

SQL Server Management Studioはデータベースを操作するためのMS謹製ソフト。
今回はあまり使いませんが、実際の開発では必須のツールです。
ダウンロード
https://msdn.microsoft.com/ja-jp/library/mt238290.aspx
詳しい使い方
https://msdn.microsoft.com/ja-jp/library/ms174173.aspx

サンプルデータ取り込み

最近はデフォルトでサンプルデータが入らないんですね。
アドベンチャーワークスなる架空企業のDBが使われるんですが、うまく入らなかった。
NorthWindは一発で上手く行った。

AdventureWorks
https://www.microsoft.com/en-us/download/details.aspx?id=49502

NorthWind
https://northwinddatabase.codeplex.com/

サーバーエクスプローラーでの表示

VisualStudioを起動しサーバーエキスプローラで表示させると、SQL Server Management Studioで取り込んだNorthWindのテーブル一覧が列挙されています。
テーブルの中身を表示させようとしたら以下の警告が表示されました。
ErrorDialog.png

「互換性のないバージョンのSQL Serverが検出されました」とあります。

警告メッセージの意味はくみ取れませんが、どうやらアドインが必要とのことなのでNuGetします。

NuGetSSDT.png

更新プログラムのところにあったMicrosoft SQL Server Data Tools(SSDT) Updateを適用したら下図のように無事表示されました。

VSServerExplorer.png

環境作成は以上。
posted by RR at 02:14 | Comment(0) | DBアクセス | このブログの読者になる | 更新情報をチェックする

Visual Studio 2017 RC版 リリースと C#7の情報

今年初めに買収したXamarin社が実装していたXamarin Studioをベースに開発されたVisual Studio for Macのプレビュー版が発表されたのは既報どおり。

同時にVisual Studio 2017のRC版も公開されました。製品版のリリースは2017年早々に予定されているとのこと。

此方に情報があります。

https://docs.microsoft.com/en-us/visualstudio/welcome-to-visual-studio

https://docs.microsoft.com/en-us/visualstudio/ide/whats-new-in-visual-studio

主な変更点

Boosted productivity. Enhancements to code navigation, IntelliSense, refactoring, code fixes, and debugging, saves you time and effort on everyday tasks regardless of language or platform. In addition, for teams embracing DevOps, Visual Studio 2017 streamlines the developer inner loop and speeds up code flow with brand new real-time features such as live unit testing and real-time architectural dependency validation.
Redefined fundamentals. There is a renewed focus to enhance the efficiency of the fundamental tasks that developers encounter on daily basis. From a brand-new lightweight and modular installation tailored to a developer's need, a faster IDE from startup to shut down, to a new way to view, edit, and debug any code without projects and solutions, Visual Studio 2017 helps developers stay focused on the big picture.
Streamlined Azure development. Built-in suite of Azure tools that enable developers to easily create cloud-first applications powered by Microsoft Azure. Visual Studio makes it easy to configure, build, debug, package, and deploy applications and services on Microsoft Azure directly from the IDE.
Five-star mobile development. With advanced debugging and profiling tools and unit test generation features, Visual Studio 2017 with Xamarin makes it faster and easier than ever for developers to build, connect, and tune mobile apps for Android, iOS, and Windows. Developers can also choose to develop mobile apps with Apache Cordova or with Visual C++ cross-platform library development, all in Visual Studio.


これを最近賢くなったといわれるグーグル翻訳にお願いすると。

生産性を高めました。コードナビゲーション、IntelliSense、リファクタリング、コード修正、デバッグの機能拡張により、言語やプラットフォームに関係なく、日々の作業に手間と時間を節約できます。さらに、DevOpsを採用しているチームにとって、Visual Studio 2017は開発者の内部ループを合理化し、ライブユニットテストやリアルタイムのアーキテクチャ依存性検証などの新しいリアルタイム機能を使用してコードフローをスピードアップします。
基本を再定義しました。開発者が日常的に遭遇する基本的なタスクの効率を高めるために、新たに焦点が当てられています。開発者のニーズに合わせたまったく新しい軽量でモジュラーなインストール、スタートアップからシャットダウンまでのより速いIDE、プロジェクトやソリューションなしでコードを表示、編集、デバッグするための新しい方法から、Visual Studio 2017は開発者が大きな絵。
合理化されたAzureの開発。開発者がMicrosoft Azureを搭載したクラウドファーストアプリケーションを簡単に作成できるようにする、Azureツールスイートを内蔵しています。 Visual Studioを使用すると、IDEからMicrosoft Azure上のアプリケーションやサービスを簡単に構成、ビルド、デバッグ、パッケージ化、展開することができます。
5つ星のモバイル開発。高度なデバッグ/プロファイリングツールや単体テスト生成機能を備えたVisual Studio 2017は、開発者がAndroid、iOS、Windows用のモバイルアプリケーションを構築、接続、チューニングできるようになりました。開発者は、Apache CordovaまたはVisual C ++クロスプラットフォームライブラリ開発(いずれもVisual Studio)でモバイルアプリを開発することもできます。


確かに翻訳精度は上がっていますね。

C#7.0の情報はこちら。

https://docs.microsoft.com/en-us/dotnet/articles/csharp/csharp-7

大きな変更はなさそう。

・outパラメータ
・Tuples
・パターンマッチング
・refローカルと戻型
・ローカルメソッド
・非同期の戻型の一般化

などがサンプルコードを用いて説明されています。

※正式版とは異なる可能性は十分あります。
posted by RR at 18:58 | Comment(0) | 開発環境 | このブログの読者になる | 更新情報をチェックする

接続型データアクセス

一番プリミティブなデータアクセスの方法

文字列のSQL文からコマンドを作成し、データリーダーを廻して該当データを取得したりする。

結局ここに戻ってくる気がする。

using System.Collections.Generic;
using System.Data.SqlClient;

namespace ClassLibraryConnection
{
    // 非接続型サンプル
    public class ClassSample
    {
        readonly string ConnectionString = @"Server=localhost\SQLEXPRESS;Database=NORTHWND;Integrated Security=True";
        public IList<object[]> GetEmployeesList()
        {
            var list = new List<object[]>();

            using (var con = new SqlConnection(ConnectionString))
            {
                con.Open();

                using (var cmd = new SqlCommand("SELECT * FROM Employees where City='London'", con))
                {
                    var reader = cmd.ExecuteReader();

                    if (reader.HasRows)
                    {
                        while (reader.Read())
                        {
                            var rowdata = new object[reader.FieldCount];

                            reader.GetValues(rowdata);

                            list.Add(rowdata);

                        }
                    }
                }
            }

            return list;

        }
    }
}
posted by RR at 22:07 | Comment(0) | DBアクセス | このブログの読者になる | 更新情報をチェックする

非接続型データアクセス

文字列のSQL文からアダプターを生成し、これを使ってマップ先のデータセットにカポっとFillする。

System.Data.DataSetExtension.dllへ参照を張れば、Linq To DataSetが使える。

下記サンプルはロンドンの従業員を取得している。
最初のは、SQL文の条件式で絞り込んでる。
2つめは、全件取得後にLinqで絞ってる。

using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;

namespace ClassLibraryDisconnect
{
    // 接続型サンプル
    public class ClassSample
    {
        string connectionString = @"Server=localhost\SQLEXPRESS;Database=NORTHWND;Integrated Security=True";
        public DataRowCollection GetEmployeesList()
        {

            var commandText = "SELECT * FROM Employees where City = 'London'";

            var adapter = new SqlDataAdapter(commandText, connectionString);

            DataSet ds = new DataSet();

            adapter.Fill(ds);

            return ds.Tables[0].Rows;
        }

        public List<DataRow> GetEmployeesList2()
        {
            var commandText = "SELECT * FROM Employees";

            var adapter = new SqlDataAdapter(commandText, connectionString);

            DataSet ds = new DataSet();

            adapter.Fill(ds);

            DataTable employees = ds.Tables[0];

            return employees.AsEnumerable().Where(row => row.Field<string>("City") == "London").ToList();
        }
    }
}
posted by RR at 22:18 | Comment(0) | DBアクセス | このブログの読者になる | 更新情報をチェックする

非接続型データアクセス 型付データセット

予めデータベースにある対象のスキーマ情報からエンティティやアダプターなどを生成しておき、タイプセーフにコーディングできるようにしておく。

一時期は大流行りしたが、諸々の事情により廃れつつある。

新規のプロジェクトならEntity Frameworkを使えばよいのだが、既存資産の流用とか考えるとUI層までビッシリ這い込んでいたりするので、それなりに良く見かける。

NewItemDataSet.png

「新規追加」から「データ」にある「データセット」を選択する。名前もそれらしいのを付けておく。

TyoedDataSet.png

拡張子XSDというデザイナー画面が追加される。ここで操作対象のテーブルとかビューとか関連とかGUIで選択していく。

using System.Collections.Generic;
using System.Linq;

namespace ClassLibraryTyedDataSet
{
    public class ClassSample
    {
        public List<DataSetNorthWind.EmployeesRow> GetEmployeesList()
        {
            var ds = new DataSetNorthWind();

            var adapter = new DataSetNorthWindTableAdapters.EmployeesTableAdapter();

            adapter.Fill(ds.Employees);

           return ds.Employees.AsEnumerable().Where(emp => emp.City.Equals("London")).ToList();

        }
    }
}

非接続型とやってることはほぼ同じだが、データセットやデータアダプタークラスがxsdファイルから自動生成された専用のクラスになっており、Linq To DataSetも型情報を指定することなくフィールドへアクセスする方式となっている。
posted by RR at 22:36 | Comment(0) | DBアクセス | このブログの読者になる | 更新情報をチェックする

Linq To SQL

Linqの有用性を示すために作られたものの、Entity Frameworkの登場により、Linq To SQLは開発中止で今後はEFを使いましょうって話だったような気がするけど、未だに現役だったりしてます。

NewItemLinqToXML.png

「新しい項目の追加」で「データ」より「LINQ to SQLクラス」を選択すると、拡張子dbmlというデザイナ画面が追加されます。

LinqToXML.png

型付データセットと同様に操作対象のテーブルなどを乗っけてけばよい。

このデザイナ画面分に相当するのがSystem.Data.Linq.DataContextクラスを継承して生成されるコンテクストクラスであり、このコンテクストを操作して値を取ったりする。

using System.Collections.Generic;
using System.Linq;

namespace ClassLibraryLinqToSQL
{
    public class ClassLinqToSQL
    {
        public List<Employees> GetEmployeesList()
        {
            using (var context = new DataClassesNorthWndDataContext())
            {
                return context.Employees.Where(emp => emp.City == "London").ToList();
            }
        }
    }
}
posted by RR at 22:51 | Comment(0) | DBアクセス | このブログの読者になる | 更新情報をチェックする

Entity Framework

新規開発案件でデータベースアクセスが必要な場合に、最初に候補となるアクセス方式。

最近はこればっかり良く見かけます。

非常に豊富な機能がある分だけ落とし穴もあるような気がします。

「新らしい項目追加」で「データ」から「ADO.NET Entity Data Model」を選択し、適当に名前を付ける。
NewItemEF.png

「モデルのコンテンツ選択」で「データベースから EF Designer」を選択
EFModelSelection.png

EFはデータベースのスキーマ情報からリバースしてCSコードを生成するのと同様に、デザイナ画面の設定情報からデータベースのスキーマを作成させることも可能です。

「データ接続の選択」はそのまま「次へ」
EFDatabaseSelection.png

「バージョンの選択」は新しい方を選択
EFVsersionSelect.png

操作対象のテーブルを選択。ここでは全部選んでみます。
EFSelectTarget.png

これで終了。拡張子edmxというファイルが生成されれば成功。このようなデザイナが表示されます。
VSEF.png

サンプルコードは以下の通り

using System.Collections.Generic;
using System.Linq;

namespace ClassLibraryEF
{
    public class ClassEntityFramework
    {
        public List<Employees> GetEmployeesList()
        {
            using (var context = new NORTHWNDEntities())
            {
               return context.Employees.Where(emp => emp.City == "London").ToList();
            }
        }
    }
}

Linq To SQLとほぼ同等のコードですが、NORTHWNDEntitiesの親クラスはSystem.Data.Entity.DbContextクラスになります。また、リンクで対象を絞っていますが、これはLinq To Entityになります。

Entity Frameworkによりデータアクセスする処理が記述されたライブラリとメインアセンブリ(エントリポイントがあるアセンブリ)とが異なる場合だと、もう少し手間が必要です。

・メインアセンブリのアプリケーション構成ファイルにEF用の設定を転記
 接続文字列などは実装したDLLの構成ファイルに配置されるので、それをコピペする必要あり。
・アセンブリのプレロードが必要
 メインアセンブリ内でDBアクセス処理を行っていなくても、EF系ライブラリへの参照が必要。NuGetしておく。
posted by RR at 23:17 | Comment(0) | DBアクセス | このブログの読者になる | 更新情報をチェックする

2016年11月22日

フリーソフトのフリーの意味 "Free as in speech, Free as in beer"

ネット上をちょっと検索しただけでも、フリーウェアとかフリーソフトと呼ばれる類のものをいくらでも探し出すことができます。

アプリケーションの開発時でも、これらフリーソフトやフリーライブラリのお世話になることが多いのですが、このフリーという語には大きく2つの意味があります。

それが表題の"Free as in speech"と"Free as in beer"との違いです。

「ビールをご自由に」という文脈で使われる自由とは(日本文化ではほとんど意味わかりませんが)、無料という意味で、入手に際して対価の支払いが不要であるということ。タダってことですね。

これがフリーソフトの場合、ダウンロードやインストールして使う分には無料だということになります。但し、勝手に解析や改竄したり、自分のプログラムに組み込んだり再配布したりすることは意味しません。

一方、「言論の自由」という文脈で使われる自由とは、法的な束縛がないことを意味し、解析したり改良したり自分のプログラムに組み込んだり、それを商用利用したりすることが出来ます。(こちらの意味を強調する場合にオープンソースソフトウェアという語が使われる場合もあります)

つまり、フリーソフトでいうフリーとは「対価が不要」という意味と「束縛のないこと」との二通りの意味で用いられます。

通常はフリーソフトにもライセンスに関するなんらかの制約が付随したり、寄付歓迎だったりするので、必ずどちらかを満たすとか言う訳でもないですが。
posted by RR at 02:24 | Comment(0) | その他 | このブログの読者になる | 更新情報をチェックする

2016年11月24日

.NETアプリ開発に関する書籍2冊紹介

C#プログラマのための.NETアプリケーション最適化技法

2013年発売ですが、内容は全然古くありません。一般的にはネイティアプリと比べて.NETアプリは遅いと言われますが、その理由はなにか。どうすれば高速化できるのか。実行時の.NETランタイムの動きやOSとの関連など、あまり見かけない情報が満載です。何がボトルネックとなりうるのか、そのヒントが多分に記述されています。

.NET開発テクノロジ入門2016年版Visual Studio 2015対応版

Visual Studioがウインドウズ用アプリケーションの開発にのみ使われていた時代は終わり、様々なデバイスやプラットフォーム対応が可能となっています。.NETやVisualStudioの技術体系の解説や今の時代に即した技術解説が豊富です。Roslyn,ASP.NET5 Entity Framework,Universal Windows Platform(UWP),Xamarin,Cordova,Unity,Axuruといった最新テクノロジーの動向が把握できます。

posted by RR at 05:03 | Comment(0) | 書籍 | このブログの読者になる | 更新情報をチェックする

2016年11月25日

Using 使い方は4種類

Usingディレクティブ

使用する側のコードと同じ名前空間に定義されたクラスなどはそのまま使うことができます。
異なる名前空間に定義されている場合は、「名前空間 + クラス名」といった完全修飾名を必要としますが、逐一記述するのも大変なのでファイル冒頭に使用可能な名前空間を列挙するために使います。

using System.IO;

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            // System.IO名前空間にあるDirectoryクラスを完全修飾名なしで使える
            string[] directories = Directory.GetDirectories(@"c:\test");

            // using ディレクティブの記述がない場合は以下のように完全修飾名が必要
            //string[] directories = System.IO.Directory.GetDirectories(@"c:\test");
        }
    }
}

Usingエイリアスディレクティブ

名前空間が異なるがクラス名が同じ場合にエイリアス(別名)を付与するために使う。

namespace Sample
{
    using AAA = NS_AAA; 
    using BBB = NS_BBB;

    class Program
    {
        static void Main(string[] args)
        {
            // NS_AAA名前空間にあるSameクラスが使われる
            int val = AAA.Same.Value;
        }
    }
}

namespace NS_AAA
{
    public static class Same
    {
        public static int Value => 10;
    }
}

namespace NS_BBB
{
    public static class Same
    {
        public static int Value => 20;
    }
}

Using静的ディレクティブ 

C#6.0から追加された文法。
クラス名を指定することなく静的メンバのようにアクセスできるようになる。

namespace Sample
{
    using static NS_CCC.Calc;

    class Program
    {
        static void Main(string[] args)
        {
            // クラス名の指定をせずに他クラスの静的メンバを使える
            int val = Add(3, 4);
        }
    }
}

namespace NS_CCC
{
    public static class Calc
    {
        public static int Add(int x, int y) => x + y;
    }
}

※拡張メソッドにも似ていますが、使われる側にどのクラスを拡張するかの指定はありません。C#をオブジェクト指向言語と呼ぶのはますます難しくなってきました。

Usingステートメント

インスタンス化されたオブジェクトは、使い終わるとガベージコレクションが自動で破棄してくれます。しかし時にはファイルアクセスやデータベースアクセスのように、使い終わったら明示的に終了処理(クローズ)をしてほしい場合だってあります。
使う側に明示的な終了処理をお願いするためには、IDisposableインタフェースを実現(継承)するというオヤクソクがあります。IDisposableインタフェースにはDisposeというメソッドが一つだけ定義されており、このメソッドに終了処理を定義することになっています。
逆に言うと、IDisposableインタフェースを実現(継承)しているクラスを使う場合は、使い終わったらDisposeメソッドを呼ぶ必要がある。処理中に例外発生することもあるのでTry-Catch-FinallyのFinally句内で呼ぶ必要がるが逐一記述するのはメンドイ。同じことをUsingステートメントが解釈してくれる。

    class Program
    {
        static void Main(string[] args)
        {
            // 普通に書くとこうなる
            var writer =new StreamWriter(@"C:\test.txt");

            try
            {
                // 通常処理
            }
            catch (Exception)
            {
                // 例外処理
            }
            finally
            {
                if (writer != null)
                    writer.Dispose();
            }

            // 上と全く同じことをやってくれる。
            using (var writer = new StreamWriter(@"C:\test.txt"))
            {

            }
        }
    }
posted by RR at 03:21 | Comment(0) | 基本文法 | このブログの読者になる | 更新情報をチェックする

2016年11月29日

命名や表記に関する英語と日本語の参考リンク集

命名や表記法は、文法規則のように強制されるものではありません。個人の嗜好に合わせて好きなように書けばいいのですが、多人数による開発や保守性などを勘案した場合には、ある程度の規則を決めてく必要があります。そんな時に参考になるサイトをいくつか紹介。

MSDNの名前付けのガイドライン

開発者に一貫性のある名前付けの規則集を提供することを目的に作られた命名ガイドライン

https://msdn.microsoft.com/ja-jp/library/ms229002(v=vs.110).aspx

関数名によく使われる英単語(動詞)の意味とニュアンス

メソッド名は英語で「動詞+名詞」となる場合が多い。名詞はドメイン範疇により多様多種だろうけれど動詞にくる英単語はそれほど多くはない。以下で取り上げられてるぐらいを抑えればほぼ9割はOKである。

http://php-archive.net/php/words-in-function-names/

プログラマーのためのネーミング辞書

ネットではグーグル先生を始め無料翻訳サービスが多々ありますが、ここはメソッド名の英訳に特化した無料サービスです。カスタイズもチームでの使用も可能。

https://codic.jp/

マイクロソフト ランゲージポータル

マイクロソフト社の言語表記に関する情報はここに集約されています。「スタイルガイド」から「日本語」を選択し「ダウンロード」ボタン押下でPDFファイルを無料入手できます。日本語表記に関する考慮事項などとても参考になります。国語の授業を思い出せます。

https://www.microsoft.com/Language/ja-jp/Default.aspx

ローマ字のつづり方

業務アプリケーションなどでは専門用語などを逐一英訳してられない場合にはローマ字表記を採用することが多いです。ア行を間違うこともないですが拗音や撥音や長音などが絡んでくると表記がブレてきます。文科省はこういう規則を提示してます。

http://www.mext.go.jp/b_menu/hakusho/nc/k19541209001/k19541209001.html

外来語の表記

コード上で使うこともないでしょうが、コメントやドキュメントなどではちょっと混乱が見られます。例えば情報処理業界では語末の長音を表記しない「コンピュータ」「プリンタ」といった慣例がありましたが、2008年にマイクロソフトが「コンピューター」「プリンター」と表記するよう修正すると宣言して以降、徐々にこれに倣う表記が普及してきました。文科省はこう言っています。

http://www.mext.go.jp/b_menu/hakusho/nc/k19910628002/k19910628002.html

その他 日本語クラス名やメソッド名について

C#のソースコードはユニコードなのでクラス名やメソッド名などに日本語を使うこともできます。日本語混在コードを偶に見かけますが、個人的にはやめた方が良いと思います。コーディング時に全角半角切替がマジ面倒とか「Select在庫(int 在庫種別)」なんてのは見苦しいといった理由です。また、開発メンバが保守時を含めてずーっと日本人であるという確証がないなら避けた方が無難でもあります。
日本語命名で議論の余地があるのが、DBの物理名からリバース生成されるDBアクセス系と単体テストコード関係です。個人的には同様に避けたいところですが。

posted by RR at 02:39 | Comment(0) | 規約・参考サイト | このブログの読者になる | 更新情報をチェックする