2009年9月アーカイブ



Windows7(ウィンドウズ・セブン)の一般発売日が日本語を含み、

2009年10月22日、14ヶ国語対応で同時発売となっている。

 

初期の開発コードネームは「Blackcomb」と呼ばれており、

のちに「Vienna」]、さらに「Windows 7」に改められている。

社内開発コード名がそのまま製品版の名称として採用された。

 

7(セブン)の由来は想像が容易かもしれないが、

Windows 1.0 / Windows 2.0 / Windows 3.x / 4.x (95, 98, 98 SE, Me)

5.x (Windows 2000, Windows XP) / 6.0 ( Windows Vista ) に続く

7番目のクライアント向けのメジャーリリースだからである。

 

しかし、Windows 7はWindows Vistaを基に改良されていることから、

バージョン番号としては、正式には6.1となっている。

Vistaと同様、Windows 7も個人向けおよび法人向けの両バージョン、そして

リテールパッケージ版には32ビットと64ビットの両バージョン同梱で出荷される。

 

今回は、Windows7購入後の環境の移行作業ついての詳細な記事が掲載されて

いたので紹介します。

 

XP/Vista→Windows 7 完全移行マニュアル

 

 残念ながら、Windows XPからWindows 7への上書きアップグレードは

サポートされていないようなので、手動による移行作業が必要になる。

 

また、Vistaからユーザ別のドキュメント等のファイルの保存場所が変更に

なっているため、いざ環境の移行作業をしようとした際に戸惑うのではない

でしょうか?

 

事前に上記の記事を読んで、概略でも理解しておきたいです。

 

絶対現場主義Visual C#実践講座

 

著者:丸岡 孝司 

発行日:2007年7月25日

発行者:黒田 康夫

発行所:株式会社ラトルズ

411ページ

2,600円+税

 

内容

開発の現場から生まれた実践テクニック&TIPS集。

"Visual C# プログラミング"という大海原をひとりゆくプログラマのために。

  • Chapter1 .NET FrameworkとC#プログラミング
    Visual Studioの使い方、C#コーディング方法、C#のデータ型、制御構造
    などの言語仕様に関するテクニックやTIPSを収録。

  • Chapter2 Windowsアプリケーション
    Windowsフォームやコントロールを使用した、Windowsアプリケーション
    作成のテクニックやTIPSを収録。

  • Chapter3 データベース処理
    .NET Frameworkにおけるデータベース処理に関するテクニックやTIPS
    を収録。

  • Chapter4 Webとネットワーク
    .NET Frameworkにおけるネットワーク処理について簡単に紹介。

 

ポイント

職場で一緒に仕事している人からのお勧めの一冊。借りました。

現在、C#のプロジェクトを一から作り始めて進行中なので、フレームワーク

作りの参考にしました。

 

タイトル "絶対現場主義" にもあるように、実際に現場で開発をする人たち

にとって役立つ内容となっています。

 

特に、C#プロジェクトはまだあまり経験がないけど、こんな感じでいいのかなぁ

とか、Javaのプロジェクトは経験したけど、C#ではどうするべきか・・・(悩)とか、

昔ながらのVBスタイルのプログラムは書けるけど、C#ってオブジェクト指向が

ベースだし、クラスとか、継承とか、カプセル化もいまいち良くわかんないよなぁ

とか・・そんな悩める人たちの手助けになると思います。

 

書き方も、従来の単純な解説書やリファレンス、TIPS集などとは違い、いちいち

現場目線での解説(こういう背景だからこんな疑問が発生し、こう解決すれば

良いのでは?スタイルでの記述)がされており非常に読みやすくなっています。

例示されているシーンも、一度は誰もが悩んできたであろう内容で納得できます。

(その分、普通のTIPS集では1ページで書かれている内容が3?5ページかけて

解説されていたりしますが・・)

 

特に、Windowsアプリケーションでは、開発のフレームワークをどうするべきかや、

コントロールの拡張方法、共通化などについても詳しく書かれていますので、

実際のプロジェクトの参考にできると思います。

 

最後に、Webアプリケーションの事については紹介として少しだけ解説されて

いますが、つい先日、この書籍の、"Webアプリケーション編"が出版されたよう

ですので、紹介だけしておきます。※私は.NETだと、APS.NET MVCの方に

興味があるため、こちらの書籍(MVCについては触れられていなさそう?)

なので購入するかどうかは今のところ未定です。

 

 絶対現場主義Visual C#実践講座(Webアプリケーション編)

 

  

最近仕事でC#をメインで使うようになってきたので。

新しいこともいろいろと習得中です。

 

業務アプリケーションにデータベース処理はつきもので、

さらにデータベース処理には、トランザクションがつきもので、

またまたトランザクション処理にはコミットと、ロールバックが・・・

 

今まではどんな言語を使うにしろ、トランザクション処理では、

トランザクションの開始と、コミット、そして例外時にはロールバックと

明示的に記述していた。

 

C#で、SqlTransactionを利用した従来の書き方

using (SqlTransaction tran = con.Begin.Transaction())

{

    try {

        //SQLによるデータベース更新処理

        :

        //コミット

        tran.Commit();

    }

    catch {

        //ロールバック

        tran.Rollback();

    }

}

 

しかし.NET Framework2.0ではもう少し簡単に書けるようになった、

System.Transaction.TransactionScopeクラスが用意されている。

TransactionScope.Complete()メソッドが呼ばれるとコミットされ、

TransactionScope.Dispose()メソッドが呼ばれるとロールバック

される仕組みとのこと。

なので、usingステートメントと組み合わせて、以下のように書ける。

using (TransactionScope tran = new TransactionScope()) {

    //SQLによるデータベース更新処理

    :

    //コミット

    tran.Complete();

}

※例外が発生したり、Complete()メソッドを呼び出さずに、

usingステートメントを抜けると自動的にロールバックされる。

 

また、TransactionScope クラスには自動的にコネクションや、

SqlCommandクラスを検出する機能があるため、今までのように

明示的にコネクションやSqlCommandのインスタンスとトランザクション

のインスタンスを結びつける必要が無くなっているのもポイント。

 

 

前回は、twitterの最新のつぶやきを表示する、

簡単なアプリケーションを作成してみました。

 

ロジックとしては、twitterで指定されたAPIを呼び出し、

XML形式のデータを取得し、XPathでXMLデータを解析して

表示するといった内容でした。

 

今回は、Webの世界ではXMLより手軽に扱えるとされている、

JSON形式のデータを扱うことにします。twitterのAPIでも標準で

JSON形式のデータに対応されています。

 

今回も、C#.netを使用してアプリケーションを作成してみました。

(プログラムの機能は前回と同じです)

 

ダウンロード

20090914.jpg

※実行にはJson.NETのライブラリも必要です(ダウンロード

 

JSON形式のデータをC#で定義したクラスにマッピングすることで、

マッピング後のデータの操作が簡単・柔軟になります。

 

ソース(TwitterForm.cs)

using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Net;
using System.IO;
using Newtonsoft.Json;

namespace TwitterApplication
{
    public partial class TwitterForm : Form
    {
        public TwitterForm()
        {
            InitializeComponent();
            lstItems.Items.Clear();
        }

        private String GetTweet(String URL)
        {
            //Request
            HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(URL);
            Request.Method = "GET";
            WebResponse Response = Request.GetResponse();
           
            //Read
            StreamReader Readar = new StreamReader(Response.GetResponseStream());
            String Results = Readar.ReadToEnd();

            //Return
            Readar.Close();
            Response.Close();
            return Results;
        }

        private void btnTimeLine_Click(object sender, EventArgs e)
        {
            String URL = "http://twitter.com/statuses/user_timeline/" + txtUser.Text + ".json?count=50";
            String JSON = GetTweet(URL);
            List<Status> StatusList = (List<Status>)JsonConvert.DeserializeObject(JSON, typeof(List<Status>));
           
            lstItems.Items.Clear();
            lstItems.HorizontalScrollbar = false;
            foreach (Status StatusObject in StatusList)
            {
                lstItems.Items.Add(StatusObject.Text);
            }
            //ScrollBarSetting
            lstItems.HorizontalScrollbar = true;
        }
    }
}

 

ソース(Twitter.cs)

namespace TwitterApplication
{
    public sealed class Status
    {
        public string In_reply_to_status_id { get; set; }

        public bool Favorited { get; set; }

        public string In_reply_to_user_id { get; set; }

        public string Source { get; set; }

        public string Created_at { get; set; }

        public string In_reply_to_screen_name { get; set; }

        public User User { get; set; }

        public string Id { get; set; }

        public bool Truncated { get; set; }

        public string Text { get; set; }
    }

    public sealed class User
    {
        public string Profile_sidebar_border_color { get; set; }

        public string Description { get; set; }

        public string Url { get; set; }

        public string Screen_name { get; set; }

        public string Following { get; set; }
           
        public bool Verified { get; set; }

        public string Profile_text_color { get; set; }

        public int Followers_count { get; set; }

        public string Profile_background_image_url { get; set; }

        public string Created_at { get; set; }
       
        public string Notifications { get; set; }

        public int Friends_count { get; set; }

        public string Profile_link_color { get; set; }

        public bool Profile_background_tile { get; set; }
       
        public int Favourites_count { get; set; }

        public string Profile_background_color { get; set; }

        public bool Protected { get; set; }

        public string Time_zone { get; set; }
       
        public string Location { get; set; }

        public string Name { get; set; }

        public string Profile_sidebar_fill_color { get; set; }
       
        public string Id { get; set; }

        public int Statuses_count { get; set; }
       
        public int Utc_offset { get; set; }

        public string Profile_image_url { get; set; }
    }
}

 

twitter(ツイッター)とは、"つぶやき"という短いテキストを投稿して公開する

サービス(マイクロブログサービス)である。

 

ま、大抵の人は名前だけは知っていると思いますが、このtwitterには、API

が公開されており、簡単に呼び出して外部アプリ等と連携することができます。

 

今回は、C#.netを使用してアプリケーションを作成してみました。

  • C#.net 2008
  • .net framework2.0

ダウンロード

 

20090913.jpg

 

内容は、テキストボックスに、ユーザ名を入力して表示ボタンを押すと、

リストボックスに最新のつぶやきが50件まで表示されるというシンプルなもの。

 

APIとしては、

http://twitter.com/statuses/user_timeline/ユーザ名.xml?count=50

上記へリクエストした結果のXMLを解析して表示するだけです。

コメント"count"パラメータが取得する最大件数です。

XPathにて"//statuses/status/text"のノードリストを取得します。

 

ソースコード

using System;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Xml;

namespace TwitterApplication
{
    public partial class TwitterForm : Form
    {
        public TwitterForm()
        {
            InitializeComponent();
            lstItems.Items.Clear();
        }

        private String GetTweet(String URL)
        {
            //Request
            HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(URL);
            Request.Method = "GET";
            WebResponse Response = Request.GetResponse();
           
            //Read
            StreamReader Readar = new StreamReader(Response.GetResponseStream());
            String Results = Readar.ReadToEnd();

            //Return
            Readar.Close();
            Response.Close();
            return Results;
        }

        private void btnTimeLine_Click(object sender, EventArgs e)
        {
            String URL = "http://twitter.com/statuses/user_timeline/" + txtUser.Text + ".xml?count=50";
            String XML = GetTweet(URL);
            XmlDocument Doc = new XmlDocument();
            Doc.LoadXml(XML);
            XmlNodeList XMLNodes = Doc.SelectNodes("//statuses/status/text");

            lstItems.Items.Clear();
            lstItems.HorizontalScrollbar = false;
            foreach (XmlNode Node in XMLNodes)
            {
                lstItems.Items.Add(Node.InnerText);
            }
            //ScrollBarSetting
            lstItems.HorizontalScrollbar = true;
        }

        private void TwitterForm_Load(object sender, EventArgs e)
        {

        }
    }
}

 

 

2009年9月7日、オープンソース給与・勤怠システム「MosP」の

フレームワークとAPIが公開された。

MosPは、Mind Open Source Project の略で、「モスプ」と呼ぶ。

 

MosPはマインドが開発し公開しているJava Webアプリケーションであり、

Strutsと同様にMVCアーキテクチャをとる構造となっている。

 

画面サンプル

mosp0.jpg

mosp1.jpg

 

フレームワークの特徴

Action基本クラスは簡易ワンタイムパスワード機能や認証情報確認機能等を備えて

おり、データベースにアクセスするためのクラスとしてDaoとDtoクラスがある。

またjOpenDocumentを利用したOpenOffice.org帳票作成クラスと、Apachi POIを

利用したMicrosoft Excel帳票作成クラスがある。OpenOfficeまたはExeclで作成

したテンプレートに値を埋め込んで帳票を作成できる。

 

ドキュメントとして、アプリケーションの作成方法を記述した「MosPフレームワーク

手順書」と、APIのドキュメントが用意されている。 また、開発者向けにコミュニティ

MosP Developer's Communityを開設されており、情報を入手することができる。

 

標準機能(給与計算)
・SaaS基盤対応    ・賞与計算
・勤怠データ取込   ・個別賞与計算
・給与計算       ・賞与情報一覧
・個別給与計算    ・賞与明細出力
・給与情報一覧    ・賞与データ出力
・給与明細出力    ・社員賞与情報管理
・給与明細出力    ・賞与項目管理
・給与データ出力   ・MosP連携
・社員給与情報管理
・給与計算情報管理
・給与項目管理

標準機能(勤怠管理)

・SaaS基盤対応    ・個人情報登録
・出勤入力       ・MosP連携
・退社入力
・休暇入力
・有休管理
・確認変更
・承認機能
・帳票印刷
・スケジュール登録
・エクスポート
・基本情報登録

 

勿論、業務としてMospを採用するのは、それぞれの会社や、個人個人で、

意見は分かれるだろうが、オープンソースでどのように、給与システムや

勤怠管理システムが作られているかは技術者としては気になるところです。