himanago

Azure・C#などのMS系技術やLINE関連技術など、好きな技術について書くブログ

Oracle Database XE を Linux 32bit環境にインストールする

はじめに

どうにも最近業務が忙しく、なかなかブログが書けません。 下書きばかりがたまっていきます…。

さて、ここ数日久しぶりにOracleをいじっていたのですが、社内の研修用環境として、32bitのLinuxVM(CentOS 6.9)にOracleデータベースの無償版であるExpress Edition(以下XE)を入れようとしたら見事にハマりました。

11g以降のバージョンで、OracleデータベースのXEではLinuxは64bit版のみの提供で、32bit版は提供されなくなってしまっていたのです(Windows向けは両方あり)。
かといって、10gの32bit用XEも公開が停止されており、公式ではどうにもならない模様。
今回は要件的に32bitのLinux+XEという組み合わせがMUSTだったので、なんとか粘って解決策を見つけました。

この組み合わせが必要になった場面、実は今回で2度目なので(1度目はあきらめた)、需要あるかも?ということで備忘も兼ねて書いておきます。

基本的に32bitのLinux向けXEは入手不可

11g以降はXEについて32bitのLinux向けが提供されていないということで、検索してみるとやはりそれを求める人の質問が結構ヒットします。
しかし、それらの結論はXEはあきらめて上位エディション入れましょう、など「不可能」という回答ばかり。
海外の質問サイトで、ここにリンクが残っていますよ、というような回答をみつけたりもしたのですが、すでにリンク切れ。
あきらめずに根気よく探すと、以下の記述を発見…!

「この中にあるよ」

unix.stackexchange.com ここには、 http://oss.oracle.com/debian/ に10gXEが含まれていると書かれていました。

探ってみると、こちらから10gXE(32bit)のパッケージがダウンロードができました! https://oss.oracle.com/debian/dists/unstable/non-free/binary-i386/ (この中の「oracle-xe-universal_10.2.0.1-1.1_i386.deb」というやつです)

しかし、形式がdebなので、今回使うCentOSではインストールできません。
そこで、こちらの記事を参考に、rpmに変換してインストールしました。

dotnsf.blog.jp

ということで、無事Linux32bitの環境にOracleXEを入れることができました。

MCP試験(70-483:C#によるプログラミング)を受けてきました

はじめに

先月末、Microsoftの認定資格であるMCPの、「C#によるプログラミング(70-483)」を受けてきました。 今回は受けるにあたっての準備と実際の試験についてなどを書き残しておこうと思います。

動機

この試験をなぜ受けたか、というと理由は3つです。

1. スキルの証明

かれこれ7年半くらい前から業務でも頻繁に使っているC#について、スキルを持っているということを対外的に証明したかったというのがひとつ。

同じく継続的に使っているJavaについてもOracleの認定資格をとったりしているので、C#でもそれをやっておきたいと思ったため、時間があれば前から受けたいと思ってました。

2. 講師登壇の説得力

上記と少しかぶるのですが、今年度会社でC#関連の講座を担当するので、講師として説得力をもてるようにしたかったことです。
講師プロフィールに関連資格が書いてあると、とりあえず「この人ちゃんと知ってるのかな」って思いますよね。
もちろん、資格だけあればいいかというとそういうわけでないのはもちろんですが。

3. de:code MCP割引

これがいちばん大きかったです。 f:id:himanago:20170521210618p:plainde:code 2017 リーフレットより)

de:codeのMCP割引は税抜\56,000で、早期割引(税抜\68,000)よりも安いんです。
なので、まずはこのタイミングで試験を受けてしまって、だめだったら早期割引の値段で申し込むことにしました。
早期割引が4/28までだったので、駆け込みで4/24に受けました。

試験の概要

試験で出題されるC#のバージョンは、試験の概要に「Visual Studio 2012」と記載されているので、C# 5.0」となります。
async/awaitあたりまでが試験範囲に含まれることになります。

準備

この試験には日本語の対策書籍(MCP教科書 Windows 10(試験番号:70-697)などのいわゆる赤本)がないので、英語の書籍ですが、Exam Refというものを使いました。
MCP対策書籍としては定番もののようです。

https://www.amazon.co.jp/dp/0735676828/www.amazon.co.jp

すべてを読み込むことはできませんでしたが、練習問題が各パートごとに数問載っているので、どんな問題が出るのか知る上で重宝しました。

章立ては試験に沿っていて、

  • Manage Program Flow(プログラムフローの管理)
  • Create and Use Types(型の作成と使用)
  • Debug Applications and Implement Security(アプリケーションのデバッグとセキュリティの実装)
  • Implement Data Access(データ アクセスの実装)

と、試験範囲と同じ構成になっています(全384ページ)。
全部をじっくり読み込むのは相当骨が折れそうですし、ある程度C#経験があれば文法的な部分はおおよそ問題ないので、ほとんどは流し読みで、気になったところはじっくり読む、という使い方をしました。

個人的には、セキュリティの実装あたりは普段そこまで意識していなかったところなので、ちゃんと勉強する必要があるなと思いました。

しかし結局、4月は業務が忙しく、ろくに対策をする時間もとれず、「もう落ちてもいいや!」と当たって砕けろな覚悟で申し込みました。
すべてはde:codeのため。受験を先延ばしにして万が一そこで落ちて早期割引でも申し込めなかったり、さらにはチケット完売なんてなったりしてしまったら目も当てられませんから。

試験当日

夕方18:30からの予約だったので定時ダッシュして秋葉原の試験センターへ。

ひととおり手続きを終え、予約時間になったらPCの前へ。
案内には試験時間が150分と書いてあったのに実際には120分だったり、試験開始前に、「試験はどうでしたか?」的なアンケート答えさせられたりと、若干混乱させられましたが、試験が始まりました。

形式はほとんどが多肢選択式。
プログラムの虫食い部分に当てはまるコードや、正しい実行結果を選択します。

なかには、複数の選択肢から複数の虫食い部分にドラッグ&ドロップして解答するものも。
この形式でswitchのcase, default, breakの穴埋めが出たときは「ばかにしてるのか!」とも思いましたが、LINQのクエリ形式やasync/awaitまわりのキーワードを埋める問題も出たので、そこは楽しく解いていくことができました。

案の定、対策の不十分だった「アプリケーションのデバッグとセキュリティの実装」まわりの問題には苦戦しました。

またなかには、翻訳が微妙な問題(ひとつだけ「あれ?」と思ったものがあった)や、解答の選択肢のソースコードから単語間のスペースが消えて詰まってしまっているものなどがありました。

こういうときは、試験問題の表示を英語に切り替えることをおすすめします(試験問題の機能でできる)。
英語に切り替えると、ソースコードの空白がちゃんと表示され、読みやすくなりました。

また、自分の知識と照らし合わせて問題と選択肢が「何か変だな」と思ったら、英語の方を読んでみると、誤訳とまではいかなくても、ニュアンスの微妙な違いから英語のほうが本来の意味を理解できることがあります(そんなに英語が得意でなくても)。

こういう対応ができたのも、Exam Refを見ておいたことで英語の問題文への抵抗感がそこまでなくなっていたからかな、と思います。

結果

そんなこんなで試験を終え、結果は無事合格でした。合格点は700点とのことだったので、7割合格でしょうか。
点数はぎりぎりで、やはりというか、「アプリケーションのデバッグとセキュリティの実装」のところがやたら低かったです。
そこ以外でなんとか点数をとれていたのと、(全部でなくとも)Exam Refを見ておいたことが今回の勝因かと思います。

まとめ

Exam Refの確認はしておいたほうがいいなと思いました。
試験本番で英語に切り替えることも戦略として一つの手なので、その対策の意味でも必須だと感じました。

とはいえ、基本的なことがしっかりわかっているかが結果に大きく関わってくるので、やはり普段からの経験がものをいうのは事実でしょう。
実際、今回は試験対策が功を奏したというよりは地力で踏みとどまった感じですし。

このあとの認定パスとしては70-357:Developing Mobile Appsを受けてMCSA: Universal Windows Platformを目指すか、
70-486:Developing ASP.NET MVC Web Applicationsを受けてMCSA: Web Applicationsを目指すかの2択になりそうです。
UWPもASP.NETもきちんと勉強したいなと思っていた技術なので、どちらに挑戦しようかまだ悩み中です。今年度中には、ぜひ挑戦したいと思います。

そして明後日からはついにde:code 2017!
前夜祭のDay0と今回初となる「Hack Days」のDay3,4も含めて5日連続参加します。最新テクノロジに触れられる貴重な機会、楽しんできたいと思います。

以上です。

PCレスでXamarin ~ Xamarin入門者の集い #2 でLTやってきました

初投稿になります。

ひらりんと申します。

先日、「初心者歓迎XamarinのLT会!Xamarin入門者の集い #2」というイベントでLTをさせていただいてきたので、その報告と内容紹介をしたいと思います。 jxug.connpass.com

いま話題の「Xamarin」というクロスプラットフォームのモバイルアプリ開発ツールの入門者イベントでした。

MicrosoftによるXamarin社買収以降、無償化やVisual Studio 2017の登場などでかなり手を出しやすくなった印象です。

会社で技術系の社内講座などを開催している身としては、この流れには乗っておかねばと思い、今回入門者LTにも申し込んだ次第であります。

概要

テーマは「最近Xamarinを触った話」。

LTをやろうと決めてから、そのネタ探しもかねてXamarinをやろう!と環境作成やらいろいろ意気込んでやっていたら、なんとPCがブルースクリーンから復帰しなくなり、初期化すらままならない状況となってしまったのです。
f:id:himanago:20170420104217p:plain

手元に残ったコンピューターはiPhoneだけ…。
(実はちょっと前にMacも壊してしまったばかり)

これじゃあXamarinが触れない…

そこで思いついたのが Microsoft Azureです。

Microsoft AzureはMicrosoftクラウドサービスです。

そのAzureにVMを立てて、iPhoneからリモートでつなげばiPhoneだけでもXamarinできるはず!という発表でした。

XamarinとAzureの相性が抜群という話はよく聞くし、きっとAzure上での開発もわけないでしょう。
※本当はAzureをモバイルアプリのバックエンドとして使う際に便利、ということです

全体像

f:id:himanago:20170420105746p:plain

ということで実際にやってみたので、その流れをスクリーンショット交えて話しました。

LTでは時間の関係上端折った部分も補いつつ、以下書いていきたいと思います。

Azure VM作成

まずは、Azure VMWindows Server 2016の仮想マシンを作成します。
スマホに最適化されていないため、リージョン選択などやりにくい部分もありましたが、なんとかiPhoneSafariからAzureのVMを作ることができました。 f:id:himanago:20170420105804p:plain

リモートデスクトップアプリ

次に作ったVMへのリモート接続です。

Microsoft製のリモートデスクトップiOSアプリがあったので、それを使いました。

iPhone6sの小さな画面でWindows Serverをいじるのはどうなのかな…と思いましたが、ちゃんとズーム機能が備わっていて、慣れるとすいすい操作することができました。
f:id:himanago:20170420110211p:plain

Windows Server 2016自体がタッチ操作しやすいUIというところも手伝って、iPhoneからの操作はなかなか快適でした。

これは普通にサーバー管理するときにも使えそうな印象です。

Visual Studio 2017のインストール

最初につっかかったのがインストーラーのダウロードでした。

Windows Serverでは、デフォルトの設定のままではインターネットからファイルをダウンロードしたりできません。

Server ManagerのLocal Serverから、「IE Enhanced Security Configuration」をOffにしてあげる必要があります。 f:id:himanago:20170420122215j:plain

設定を変えると、ちゃんとVS2017のインストーラー(のインストーラー)がダウンロードできるようになります。
※ちゃんとサーバー運用する場合は、用が済んだら設定を戻す必要があります

さて、ダウンロードができたらいよいよVisual Studio 2017インストールです。

2017から、イントーラーが劇的な進化を遂げました。 必要なものを選んでインストールするのですが、このUIがとてもわかりやすくなっています。

今回はXamarinのみをインストールします。 f:id:himanago:20170420155655p:plain

Xamarin開発開始

いよいよ開発開始です。
通常通り、Xamarin.Formsのプロジェクトを作成します。 f:id:himanago:20170420155724p:plain

ちなみにWindows ServerではUWPの開発はできないようで、UWPのプロジェクトは作成されませんでした。

エミュレーターでの動作確認

PCが壊れる前、ローカルで試してたときはエミュレーターとしてXamarin Android Player使っていました。他のものと比べてかなり快適だったのでそれを入れたかったのですが、VM上でVirtualBoxが動かなかったので断念しました。

さらにVS EmulaterやHAXMも使用不可だったので、結局使えそうなのはARMエミュレーターのみに。

ARMエミュレーターを立ち上げてみました。 iPhoneの中のWindowsの中のAndroid…!なかなかに衝撃的な画です。
(ここがたぶんいちばんウケました) f:id:himanago:20170420161522p:plain

エミュレーターが立ち上がったのはいいのですが、肝心のXamarinでビルドしたアプリのデプロイに失敗してしまいました。

ARMのエミュレーターはものすごく重いので、おそらくタイムアウトしてしまったのだと思います。

VMのスペックを上げる

でもそこはAzure。

VMの性能をもっと上げてしまえばいいのです。

最初はケチってHDDで作っていたのをSSDにしたら無事動きました。 f:id:himanago:20170420161648p:plain

まとめ

ということで、PCレスでもXamarinはできる!ということが証明されました。

もちろん、実際にはこんな形で開発することはないとは思いますが、今回のようなある意味縛りプレイをやってみると、意外な気づきがあるのだな、と感じました。

f:id:himanago:20170420155940p:plain

この気づきがいつか何かに活きてくるといいなと思います。

追加:懇親会にていただいたアドバイス

LTを聞いていただいた方に、懇親会で「AzureにVM立ててやるなら、はじめからVisual Studioが入っているのを使うといいよ」という話をしていただきました。

なるほど、そういうものがあるんですね。

さっそくAzureを見てみました。

f:id:himanago:20170421181959p:plainf:id:himanago:20170421182311p:plain

いろいろな組み合わせが用意されています。
今回は「Visual Studio Community 2017 on Windows Server 2016」の組み合わせで試してみました。

作ってつないでみると、ちゃんとVisual Studio 2017が最初からインストールされてます!

f:id:himanago:20170421185742p:plain

なにやら他にもいろいろ入っているようだし、これならXamarinがすぐ使える!と思ったのですが、どうやらエミュレーターが用意されていないようです。

f:id:himanago:20170421213313p:plain

なので、Xamarinをやる場合はここに手間が余計にかかってしまうみたいですが、Unityなどもインストール済みのようなので、用途によってはこちらのほうが楽なのかもしれません。

LTを終えて

LT会の終了後、イベントのアンケート結果の中からLTの感想を共有いただいたのですが、その中に「ひらりんさんの面白かったです。」という感想がありました。

すっごくうれしいですね。当日もLT中みなさんにたくさん笑っていただけたので、とても楽しく話せました。

ほかにも「Xamarin+Azureに大きな未来を感じました」というコメントもありましたが、これ私のLTを聞いて…??

でも確かに、可能性は無限大ですね。

面白いことがたくさんできそうな組み合わせなのは事実。

いろいろな可能性を試していきたいです。

今回は初LTということであんまり余裕がなかったので登壇を楽しみきれなかったところがあるので、今度また何かしらで登壇できたらと思います。

そして、社内でも今年Xamarinセミナーをやるので、がんばります!

資料

資料はDocs.comにあげてみました。

そこまで需要ないと思いますが…ネタとしてお楽しみいただければと思います。

doc.co