modest violet

modest violet

開発者としてのあれこれや、日々の雑記など

your future hasn't written yet. no one's has.
by Emmett Lathrop "Doc" Brown

auのマモリーノ3 (mamorino3)で「センターにEメールあり」が表示され続ける症状を無料で解決するには

f:id:shin21sk:20170617235524p:plain

auのキッズケータイ マモリーノ3 (mamorino3) に、「センターにEメールあり」と表示され続ける現象が現れました。

受信を試みても、「受信できませんでした」とエラーが表示されるばかりです。しかも、新着メールが受信されないという非常に迷惑な状況に陥ります。

体験すると判るのですが、この現象は非常にイライラします。子供が使うモノですから、緊急時を考えると余計にキチンと対処したいですよね。

サクッと、無料で且つ確実に解決できる術をシェアしたいと思います!

まずは根本的な問題か確認する

 いきなり結論を述べると、確実に解決するにはauショップSIMカードを交換してもらう事です。ですが、単に一時的に受信出来ていないだけかもしれませんので、まずは以下の事柄を試してみましょう。

電源を切って、再起動する

 ベタですが、大抵の不具合が治ってしまうのが「端末の再起動」です。おそらく、ショップに持っていっても、店員さんが最初に試されると思います。それだけ有効性の高い確認方法です。これで直るなら、混雑するショップに行かなくて済むので、非常にお手軽です。

SIMカードを抜き差ししてみる

 電源を切って、裏蓋を外して、SIMカードを抜きます。指紋をつけないように注意しましょう。
 SIMを指し直した後、再び電源をONにします。

数日間様子を伺い、再発しないか確認する

 電源の再起動や、SIMの指し直しで改善する事もありますが、再発する事もあります。再発する場合は、1〜2日で再び症状が現れます。症状が再発すれば、ショップに持って行きましょう。

auショップSIMカードを交換してもらう

 症状が改善されない場合は、ショップに相談に行きましょう。

 注意すべき点は、ショップの店員さんによって対応が異なる場合がある事です。すんなりSIMカードを交換してくれる店員さんもいれば、メールの設定を確認したり、電源の再起動やSIMの指し直しで確認をする店員さんもいます。

 体験談として確実に症状が改善されたのは「SIMカードの交換」です。SIMカードの交換は、無料で行ってくれますので、「メールが受信できなくなったから故障した!」とは思わずに、ショップに持っていきましょう。

 もしかすると、SIMカードの交換という対応までしてくれないまま、一時的な電源再起動やSIMの指し直しで症状が改善した風に見えて「これで様子をみてください」と言われる場合があります。
 ※実際にそう言われました

 その場合は、「再発する可能性があるので、出来ればSIMカード自体を交換して欲しい」とお願いしましょう。おそらく、交換してくれます。

SIM交換後に確認すべき事項

 SIMカードを交換してもらったら、必ずその場で以下の事を確認しましょう。

 1. 電話が正しく着信するか
 2. Eメールの項目が使用できるか
 3. Eメールの受信ができるか

 私の場合、SIM交換時に初期設定を忘れられてしまい、Eメールの項目が使用できなくなっていました。再びショップに行く羽目になり、二度手間を味わったので、是非ともその場で確認されることをお薦めします。

さいごに

 キッズケータイの新機種はリリース予定がないので、mamorino3は本当に重要な端末だと思っています。少しでも長く使えるように、参考になれば幸いです。

shin21.hatenablog.com

【de:code2017】「変わらない開発現場」を変えていくと決めた瞬間

今年もMicrosoft de:codeに参加しました!


de:code(デ・コード)とは

マイクロソフト テクノロジのビジョンと、「クラウド」「モバイル」を最大限に活かせる最新テクノロジをすべてのITエンジニアの皆様にご紹介するイベント

『変わらない開発現場』はツボ過ぎる

昨年度のde:codeでは直接セッションを受けていなかったので、今年は先陣切って日本マイクロソフト株式会社 赤間信幸さんのセッション『変わらない開発現場』を変えていくために〜エンプラ系レガシー SIer のための DevOps 再入門〜を受講しました。

昨年度の内容はこの記事に想いを込めています。
shin21.hatenablog.com

SIerに欠けている「技術を熟知したアーキテクチャー」

SIerから協力会社へ開発を依頼する際に、軸となるアーキテクトに関してはSIer側のプロパーが押さえておくべきであり、そこは右から左へ流すモノでは無いという事に関しては、全くの同意見です。
中でどういう仕組みで動いているかも分からない、ブラックボックス的な代物をそのままお客様へ提供する事例もありました。大抵は後々揉めています。

ただ、大抵はプロパー側で進捗管理はしても、内部の技術部分は「おまかせ!」っていう形も多い訳です。
何故ならば、「アーキテクチャー」というキャリアパスが準備されている企業はまだまだ少ないといえるからです。

SIerキャリアパスっていうと、大抵はプログラマーとして入社しても、仕様設計が出来るようになるとSEというポジションに昇格され、プログラムを組むという機会がだんだん少なくなります。じゃあプログラムは誰がするのか、というと外注業者さんに依頼して、管理側に回る(回らされる)事が多いです。現に私の会社でもそうです。

でも、中には最新技術を追いかけていたい、管理職なんて興味が無いという人たちもいます。そういった人たちの会社にいる居場所が少ない、というジレンマを取り上げられていました。
本当はその会社にいたいけれど、居場所が無い人たちは新天地を求めて会社を去ります。会社側も優秀な人員が離職し痛手を負います。双方不幸ですよね、と。悲しきすれ違いです。

継続的インテグレーションの目的は「ビルドの可視化」

継続的インテグレーションは自動ビルドを行い、自動デプロイする一連の自動処理です。
ビルドを自動化してどうするの?と言うことです。私自身もそう思っていました。

ビルドを自動化するのが目的では無く、そこから取得できる計数データや何件ビルドした、どれくらいソースを修正したという変更情報を取得し、それをグラフ化する事により、「自分の直感を客観的にとらえる」という事が目的である。

目から鱗とはこの事かと。真なる目的を知らずに目先の単語に惑わされていたようです。

近代的なプロマネは「サーバントリーダーシップ

上の人が下の人にあれこれ指示を出し、下手すれば奴隷のごとく扱うかつてのプロマネのイメージとは真逆で、下の人たちが働きやすいように上の人が色々と調整し、メンバーのやる気やモラールを引き出す事が重要である、という事です。

トップダウンがかつてのシステム開発におけるイメージですが、ボトムアップも上手く取り入れることで、マネージャーの管理工数の負荷を減らし、皆が幸せに働ける道筋を作るという事がプロマネに求められていると感じました。

さいごに

今の環境に嘆くのでは無く、自分で出来ることを考えて、小さな事からコツコツと変えていく必要があります。

今回記事の中で触れていませんが、他にも色々と考えさせられる内容でしたので、画像でご紹介しておきます。


Visual Studioを使用中に「SQL Serverは動作を停止しました」が頻繁に発生する場合の対処法

特定の環境でVisual Studio 2015 または 2017 を使用していると、「sqlservr.exeは動作を停止しました」というメッセージボックスが頻繁に発生します。

現に私もこの現象に悩まされていました。一回一回のメッセージ表示は何ともないのですが、定期的に絶えず表示されるため、イライラが募るわけです。精神衛生上宜しくない。

原因はSQL Server Local Db

Visual Studioインストール時におそらくSQL Server Local Dbも一緒にインストールされているのですが、古いバージョンのLocal Dbがこのメッセージボックスの原因でした。

実際にSQL Server 2016 Express LocalDB に更新すると、今までのメッセージボックスが嘘のように、現象は回避されました。

インストール手順

下記のサイト様が大変判りやすく記載されています。

www.hiskip.com


自分の備忘録を兼ねて。。。

sqlservr.exe has stopped working

AutoMapper6でのプロファイル設定とユニットテスト

AutoMapperという自動マッピングライブラリーが便利なのです。ただ、少しばかり使い方を誤っていたようで、下記のサイトを参考に再勉強させて頂きました。

iyemon018.hatenablog.com

この記事のお陰で、今までの自分があまりにも恩恵を受けない無駄な記載をいっぱいしていたという事に気づきました。例えば、逆マッピングもわざわざ定義を書いていたとか、同じ名前のオブジェクトもわざわざ定義書いていたりだとか・・・。

いざ自分でも定義をプロファイル単位にしようと試していたのですが、どうも仕様が違っている様子・・・。
最新のAutoMapperは6.0.2になっており、プロファイルのオーバーライド辺りが変更になっていたようです。ですので、自分の備忘録も兼ねて手順を記載します。

マッピングの定義

以前のAutoMapperでは、Configure()メソッドをオーバーライドして定義を書いていましたが、バージョン6以降は互換がなくなったようで、コンストラクターに定義を記載する事になります。

public class HogeProfile : Profile
{
    // コンストラクターでマッピング定義を記載します
    public HogeProfile()
    {
        CreateMap<SourceClass, DestinationClass>()
            .ForMember(d => d.XXXXXXXXXX, o => o.MapFrom(s => s.YYYYYYYYYY))
            .ReverseMap()
            .ForMember(s => s.XXXXXXXXXX, o => o.MapFrom(d => d.YYYYYYYYYY))
            ;
    }
}


上記のように、必要な定義ごとにクラスを分ける方が管理しやすくて良いと思います。以前一つのクラスの中に定義をまとめて書いていたのですが、数が多くなると判りにくくて仕方が無いという経験からの意見です。

作成したプロファイル設定は、ASP.NET MVCであればGlobal.asaxなどに呼び出しの記述を行います。

Mapper.Initialize(config =>
    {
        config.AddProfile<HogeProfile >();
        config.AddProfile<HogeHogeProfile>();
    });

// マッピング設定の検証
Mapper.AssertConfigurationIsValid();

マッピングユニットテスト

基本的にそのまま値の受け渡しが行われるので、ユニットテストは不要という考えもできます。
但し、型が違うことによりAutoMapperで変換をかけたり、固定値を入れたりなど絶対不要か、といえばそうでも無いと思います。ユニットテストを書く癖をつけるためにも書いてみました。

簡単ですが、MSTestで書いたテストクラスはこんな感じです。

[TestClass()]
public class HogeProfileTests
{
    [ClassInitialize]
    public static void ClassInit(TestContext context)
    {
        Mapper.Initialize(config =>
        {
            // Global.asaxの呼び出し代わりにClassInitializeでプロファイルを呼び出しておく
            config.AddProfile<HogeProfile>(); 
        }); 
    }

    [TestMethod()]
    public void マッピング設定の検証()
    {
        // マッピングエラーならException
        Mapper.AssertConfigurationIsValid();
    }

    [TestMethod()]
    public void コピー元からコピー先へのマッピング検証()
    {
        var srcModel = new SourceClass()
        {
            // コピー元の値を適当に設定
        };

        var destModel = Mapper.Map<DestinationClass>(srcModel);

        // コピー元とコピー先で値が同じか
        Assert.AreEqual(destModel.xxxxxx, srcModel.xxxxxx); 

    //以下・・・省略
    
    }


    [TestMethod()]
    public void コピー先からコピー元への逆マッピング検証()
    {
        var destModel = new DestinationClass()
        {
            // コピー先の値を適当に設定
        };

        var srcModel = Mapper.Map<SourceClass>(destModel);

        // コピー元とコピー先で値が同じか
        Assert.AreEqual(srcModel.CategoryId, destModel.CategoryId);

        //以下・・・省略

    }
}


名前や型が同じプロパティー部分は比較検証しなくてもいいかな、というのが率直な感想です。
AutoMapperで何かしらのマッピング定義を施した箇所を中心にテストを作成するのが合理的だと思います。

20年以上使っていてはじめて知ったWindowsの機能

2017年4月11日をもって、Windows Vistaの延長サポート期間が終了しました。
私自身もよくよく考えると、Windows利用歴が20年以上なんですよね・・・。文字にすると恐ろしいな・・・、20年かぁ・・・。

さて、それだけ長年Windowsに触れてきた訳ですが、まだまだ知らないこともたくさんあります。

つい最近も、偶然に知ったWindowsの機能に驚愕していたところです。本当に奥が深いよ、Windows

メッセージボックスに隠された機能

f:id:shin21sk:20170412190524p:plain

よくあるメッセージボックスです。これは、何かを書きかけている最中に閉じるボタンを押すと表示される「よく見かける」メッセージです。

この一見、何の変哲も無いメッセージボックス。

タイトル欄辺りをクリックして、メッセージボックスが選択されている状態にします。

そのまま、Ctrl + C キーを押してクリップボードにコピーします。

そして、適当なメモ帳などを新規で開いて、貼り付けを行うと・・・

[Window Title]
メモ帳

[Main Instruction]
無題 への変更内容を保存しますか?

[保存する(S)] [保存しない(N)] [キャンセル]


テキストとして、コピペができたんです!!


知っていました?かなり衝撃的だったんですけど・・・。

メッセージボックスでエラー内容とかいちいち見ながら打ち込んでたあの日は一体なんだったんだ!?と。


余談ですが、Excelのメッセージボックスではできませんでした・・・。パターンがあるのかな。