欲張りスライムの備忘録

ソフトウェア関連の話題について記載する予定。「明日から本気出す」がモットー。

PyCon JP 2018に参加してまいりました

先日JOJO展で欲しいグッズがほぼ売り切れでへこんだ感動したAnaconda反対&Pandas派の欲張りスライムです。色々あって遅くなりましたが、PyCon JP 2018に参加してきましたので、簡単ではありますが個人的に重要だと思った部分だけ備忘録として上げておきます。

 

実践・競馬データサイエンス

  • 特徴量のエンジニアリング:(出走)履歴データの扱い

   (1) 過去X走までの情報を特徴量に加える:Xが増えると欠損データが増える

   (2) 過去X走の成績を集計する:次元数はXに依存しないが情報の欠損がある

   (3) 過去Xヶ月の成績を集計する:次元数はXに依存しないが情報の欠損がある

   (1) One-Hot-Encoding:対応する次元に1、対応しない次元に0を入れる方法

     カテゴリ数が多いと次元数が増えるので出現回数で足切るなどの工夫要

   (2) Target Encoding:過去のデータから該当カテゴリの目的変数を集計する方法

     「誰が」「どんなレース条件で」「どのような統計値になったか」

       ⇒機械的に特徴量を生成できる

  • 特徴量のエンジニアリング:Smoothing

   Target Encodingのような集計値を使う特徴量では、集計対象の数が少なくなると

   統計値の自信度、確信度が低くなる

     ⇒該当カテゴリが少ない場合に、集計値を全体平均に近づける

  • 特徴量のエンジニアリング:季節特徴量の扱い

   ・競馬だと季節は大きなファクターとして考えられている

   ・周期性のある特徴量変数を三角関数エンコーディングする

  • 予測モデルの学習:LightGBM

   (1) カテゴリカルデータのエンコーディングをしなくても

     カテゴリ変数を入力として受け付けてくれる

   (2) 欠損値を欠損値として扱うことができる

  • 予測モデルの評価:not only 定量評価 but also 定性評価

   実際に予測結果を目で見てみると、nDCG(関連度に基づいた評価)のような

   マクロな評価だけでは気づけない部分に気づくことがある

 

Pythonで時系列のデータを分析してみよう

  • 季節調整モデルの表示:トレンド、季節性、残差に分解・表示
  • 自己相関(ACF:Autocorrelation Function)

   ・過去の値が現在のデータにどれくらい影響しているか関係性を調べる

   ・ズラしたデータのステップ数をラグ(lag)と呼ぶ

   ・StatsModelsのtsa.stattools.acf()で求める

  • 偏自己相関(PACF:Pertial Autocorrelation Function)

   ・自己相関係数から時間によって受ける影響を除去した自己相関

   ・今日と二日前の関係には一日前の影響が含まれるが、一日前の影響を除いて

    今日と二日前だけの関係を調べられる

   ・StatsModelsのtsa.stattools.pacf()で求める

 

REST APIに疲れたあなたへ贈るGraphQL入門

  • GraphQLとは

   ・API用のクエリ言語

   ・TypeSystemを使用してクエリを実行するためのサーバ側のランタイム

   ・クライアントがサーバからデータを取得、変更、購読できるようにする

   ・REST APIの開発者、利用者間の課題

     API仕様のドキュメント管理が大変

     APIの叩き方を理解するのが大変

     APIのドキュメントと実装がずれててケンカ

   ・クライアント開発者からの不満

     1ページを表示するのに何個もAPIを叩かなければならない

     イベントドリブンに作っていてもサーバとの接続はREQUEST/RESPONSE

  • GraphQLのメリット

   ・クライアント、サーバ間のインターフェースがクリーンになる

   ・通信オーバーヘッドが削減される

   ・APIドキュメントの作成に費やす時間が不要になる

   ・APIを理解するのに費やす時間が削減される

  • GraphQLの特徴

   (1) 型指定されたスキーマ

     APIドキュメントを手動で記述する必要がなくなり、

     APIを定義したスキーマをベースに自動生成できる

   (2) クライアントからのレスポンス形式の指定

     クライアントからレスポンスの形式を指定できる

     オーバーフェッチ、アンダーフェッチがなくなる

   (3) サブスクリプションを利用したリアルタイム処理

     クライアントはデータをサブスクライブすることで、

     イベントドリブンに処理を実装することができる

  • AWS AppSync:すぐにGraphQLの利用を始められる

 

Pythonによる異常検知入門

  • まずは異常の定義から:異常検知の難しさ

   ・データのふるまいだけから異常であるかを判断することは難しい

   ・現象の背後にあるドメイン知識、オペレーション、状況を理解するのが重要

  • 異常検知の種類:Pythonなら簡単なコードで実装できる

   (1) 外れ値検知:正常解の分布から外れたデータを検知する

     ・ホテリング法

       長所:マハラノビス距離を使用しているため、変数毎に

          ばらつきが異なる多変量データでも扱うことができる

       短所:正規分布を仮定しているため、それ以外の分布のデータに

          あてはめられない

     ・近傍法

       長所:確率分布を仮定せずに、他データ点からの距離のみで

          異常判定ができる

       短所:クラスタ毎に密度が異なる場合は適切に動作しない;

          次元数が大きいと距離の情報が薄くなるため事前に

          次元を絞る必要がある

     ・LoF

       長所:クラスタ毎に密度が異なる場合にも利用可能

       短所:次元数が大きいと距離の情報が薄くなるため事前に

          次元を絞る必要がある

     ・One-Class SVM

       長所:カーネルの選択次第で、変数間の非線形性も扱うことができる

       短所:パラメータによって出力が大きく異なるためチューニングが必要

   (2) 変化点検知:データの傾向が変化した点を検知する

     ・複数モデルのあてはめ

       長所:直感的に理解しやすい?

       短所:計算量が大きい(O(N^2));オンラインに適用できない

     ・累積和法

       長所:データの分布を仮定しないため、様々なデータに適用可能

       短所:手動での閾値調整が必要

     ・Change Finder

       長所:オンラインでの変化検知を行うことができる

       短所:忘却率、ウィンドウサイズ毎のパラメータによって

          結果が大きく異なりチューニングが必要

   (3) 異常部位検知:非独立なデータの異常な区間を検知する

     ・近傍法

       長所:データの分布を仮定せず、クラスタからの距離のみで異常検知可

       短所:周期が変動するデータでは適切に動作しない;

          ウィンドウサイズを調整する必要がある

  • データのクレンジング

   (1) 季節性の除去

   (2) トレンドの除去

   (3) 分布の変換

     バースト性を持つデータを正規分布に近づける処理(BOX-COX変換)

 

Pythonで始めるウェブスクレイピング実践入門

   ・ウェブ上のリソースを取得し分析可能な構造化データへ変換すること

   ・ブラウザに見えてるデータであれば取得可能

   ・APIがなくてもデータ取得できる

   ・必要なデータに絞って取得できる

  • 注意点

   ・サーバ負荷の増加

   ・取得したデータの二次利用はやめよう

   ・サービス規約をよく読むこと

  • おおまかな手順

   (1) 対象のページを決める(自分で決める部分)

   (2) HTTPリクエストを送る/レスポンスを得る(ライブラリがやる部分)

   (3) HTMLのパース(ライブラリがやる部分)

   (4) 必要なデータの取得(自分で決める部分)

  • 基本編(技術的な部分のみ)

   ・try-exceptはしっかりやっておく

     不要なリクエストの送信を防ぐ

     夜実行する→朝起きてデータが何もないを防ぐ

   ・@retryデコレータを使うと再試行が簡単

  • 実践編(実例):ブラウザの気持ちになるのが大事

   ・ページング

     ⇒pageのクエリストリングをインクリメントして取得

     ⇒同じドメインに複数回アクセスするときはsleep()する

   ・ログイン必須のページ

     ⇒ブラウザの自動操作でログインする

   ・JavaScriptで要素を描画している(Ajaxなど)

     ⇒ブラウザによるJavaScriptの実行が必要

 

業務でもPythonを使っているのですが、改めてPython(プラスSymPy)の素晴らしさを再確認できたPyConだったと思います。 

情報処理安全確保支援士の登録申請方法について

暑いとこってりしたものより素麺が無性に食べたくなる、そんな欲張りスライムです。この度情報処理安全確保支援士の登録申請を行いました。登録申請に必要な書類や注意点について簡単にご紹介をさせて頂きます。結構面倒な手続きや書類が必要なので、これから登録申請しようと考えている方の何かお役に立てれば幸いです。

 

情報処理安全確保支援士の資格について

情報処理安全確保支援士とは、情報処理推進機構が資格付与するサイバーセキュリティ対策を推進する人材の国家資格です。詳細はこちら。

www.ipa.go.jp

一応士業ですが、独占業務も無いし講習費用も3年間で14万円と高いし、今のところこれといって特に持っているメリットは見受けられない資格です。セキュリティ得意アピールなら、「ZAPで脆弱性検査行ったことあります」とか「CTFで結構いいところまでいきました」とか「XSSで攻撃するの大好きですw」とか言った方が、現場(面接)のエンジニア受けもよいでしょう。おそらく情報セキュリティ業界の上の方が腐っているので、若手からお金を搾取し日本のセキュリティ発展に逆行するような仕組みづくりしか現状できていないのだろうと推察されます。まだ過渡期的なところもあるので、金銭面の負担も含めて本当にこの資格が必要かどうかよく検討してから、取得を志した方がよいと思います。

最近、情報処理安全確保支援士が必要なセキュリティ対策が講じられていることを担保することが条件の一つとなっている税制措置が創設されたそうです。詳細はこちら。

www.meti.go.jp

合格するにあたって、午後試験が鬼門となります。午後試験では、きちんと核となるポイントを押さえた記述をし、解答欄を全て埋めることが点数を稼ぐコツです。ぶっちゃけ試験に求められるのは情報セキュリティ分野の最低限の知識とそれを生かす国語力です。私は国語力が無いので、とても苦労しました。

 

登録申請に必要な書類

情報処理推進機構のサイトに記載されているとおり、次の9点が最低限必要になります。登録手数料の領収書が欲しい場合は、さらに長形3号または長形4号の領収書返信用封筒(82円切手)が必要です。詳しくは以下「登録の手引き」を参照のこと。

https://www.ipa.go.jp/files/000063891.pdf

  1. 登録申請書(PDFに入力して印刷し署名押印 登録免許税の収入印紙(9,000円) 登録手数料(10,700円)の振込を証明する書類が必要 Adobe Acrobat Reader DCインストール要https://www.ipa.go.jp/files/000062237.pdf
  2. 現状調査票(1.と同じPDFに入力して印刷 Adobe Acrobat Reader DCインストール要)        https://www.ipa.go.jp/files/000062237.pdf
  3. 誓約書(PDFを印刷し、記入、署名押印)                                               https://www.ipa.go.jp/files/000055028.pdf
  4. 登記されていないことの証明書(法務局等で取得、原本を提出)
  5. 身分証明書(本籍地の市区町村役所などで取得、原本を提出)
  6. 情報処理安全確保支援士試験の合格証書のコピー又は合格証明書の原本
  7. 戸籍の謄本若しくは抄本又は住民票の写し(市区町村役所等で取得、原本を提出)
  8. 登録事項等公開届出書(PDFを印刷し、記入、署名押印)

    https://www.ipa.go.jp/files/000055029.pdf

  9. 登録申請チェックリスト(PDFを印刷し、記入)

    https://www.ipa.go.jp/files/000055030.pdf

注意点

  • 「1.登録申請書」「2.現状調査票」はAdobe Acrobat Reader DCをインストール後、必要項目をPDFで編集して記載する。印刷する場合は、最後のページの「申請書印刷」ボタンを押して印刷し、QRコードが問題なく生成されているか確認する。
  • 「1.登録申請書」の収入印紙は郵便局等で取得できる。その際に、消印や割印等は絶対行わないように注意する。
  • 「4.登記されていないことの証明書」は出張所では取得できないので注意する。
  • 本籍地が現住所と離れていて、郵送で「5.身分証明書」の申請をするケースでは、身分証明書が手元に届くまで時間がかかる場合があるので時間に余裕をもって申請する。

 

PyCon JP 2017チュートリアル「Pythonを用いたデータ分析入門」に参加してまいりました

このたび、PyCon JP 2017のデータ分析のチュートリアルに参加してまいりました、当日Macの電源忘れて最後の1時間程PCすら起動できなくなってしまった…欲張りスライムです。

さて!簡単ではありますが、当日の内容を備忘録として上げさせて頂きます。といっても詳細を残すのではなく、ざっくりとしたものになります。コードの説明も記載しておりません。今回公開を前提としていないチュートリアルということで、ご了承ください。

チュートリアル内容は、データサイエンティストを目指す方の導入としてちょうどよい内容だったと思います。開催時間は11:00~12:00,13:00~18:00の約6時間で、午後から参加する方もいらっしゃいました。

コードをとりあえずコピペで実行させながら学ばせていくスタイルで講義がありましたが、内容が6時間で消化しきれていなかったこともあり、やや内容を詰め込みすぎだった感はありました(自分は満足しましたが)。

 

準備

  • Python 3.5.0 以降
  • Pandas + scikit-learnの導入
  • Jupyter Notebookを利用できる環境

これは基本Anaconda入れておけば、ほぼ問題ありません。Jupyterも公式でAnaconda推奨しております。ちなみに自分はanaconda3-4.4.0(Python 3.6.1)をインストールしました。ターミナルツールはMacのデフォルトのものより、iTermが便利なのでそちらを使っております。

使用環境:macOS Sierra バージョン 10.12.6

 

Jupyter Notebookで"Helo, World!"

次の流れで、Jupyter-notebook上にコードを書いて実行させていけばOK。各ノートブックのタイトルも画面から変更できます。

  1. ターミナル上で$jupyter notebook コマンドを実行してJupyter-notebookを起動
  2. 右上の"New"から"Python [conda not]" または "Python3"を選択しノートブック画面を表示
  3. セルにコードを書いて実行

 

Python文法基礎

放送大学Python講義位の基礎レベルでした。変数・関数の扱いや順次・分岐・反復など基本を押さえた上で、下記内容を把握していればOK。

  • Pythonでは、モジュールの読み込みにimport文を使う
  • Pythonでは、シングルクォートとダブルクォートで意味は特に違わない
  • Pythonでは、複数要素をまとめて取り扱うためにリスト・タプル・ディクショナリがある
    (リスト:ミュータブル(変更可能)、タプル:イミュータブル(変更不可能)なリスト、ディクショナリ:key-valueのペア)

 

ビジネスにおけるデータ分析の流れ

印象に残ったのは、次の2点でした。

  • あるべき姿と現状の差(ギャップ)が問題となるが、メンバーによって問題が異なることがあるので、みんなの現状とあるべき姿を調査して共通認識をつくることが重要。
  • データ分析依頼者の目的(意思決定支援か自動化・最適化)によって、使うデータ分析手法も変わってくる。

 

基礎統計量による分析

確率と尤度の違いや、t検定の意味などすっかり忘れてしまっていたので、ちょうど受講して色々思い出すことができました。たしか分散でnでなくn-1で割るのが、母集団でなく標本だったよねって感じで。

以下メモ。

  • 記述統計学:全件調査を扱う/多すぎるデータを要約するための統計学

   (1) 真ん中を知る:平均値/中央値

   (2) 構成を知る:比率

   (3) ばらつきを知る:分散/標準偏差

  • 推測統計学:標本調査を扱う/一部の情報から全体を推測するための統計学

   (1) 断言が間違える確率を知る:検定

   (2) 全体の真ん中が同じ確率を知る:t検定

   (3) 全体の構成が同じ確率を知る:χ二乗検定

   (4) 全体のばらつきが同じ確率を知る:F検定

   (5) データ同士の関係の強さを知る:相関分析

   (6) 関係の強さを参考に全体に分ける:クラスタリング/因子分析/主成分分析/コレスポンデンス分析

 

Pandasの使い方

リストからSeriesの作成ができたり、リスト・Series・ディクショナリからDataFrame作成できたり、Series形式でファイルを読み込めたり、DataFrame形式でファイルを読み込めたり、基礎統計量が簡単に確認できたり、データの抽出・ソート・結合・集約・出力が簡単にできたりと…Pandasの便利さが分かりました!

 

データの可視化

MATLABみたいな感じでコードを書けたのが印象的。

対象が1変数のみで要素の数え上げを行いたい場合はヒストグラム

種類と数量の関係性を見たい場合は棒グラフを利用するといった具合に

目的によって、グラフを使い分けるのが大事みたいです。

 

データの相関と回帰

相関分析と回帰分析について学習。回帰分析は、scikit-learnという機械学習ライブラリを読み込み、モデルを構築することで実行できます。

あとは擬似相関の例が印象的でした。小学生の算数のテストが身長が高いほど点数が良かったからといって、身長とテストの間の関係に相関関係はないというもの。「擬似相関であるかどうかを社会的要素なしに識別できる手段はないのかなぁ。」とふと思いました。

 

データの分類

バッテリーが尽き、ここでコードが一切書けない状態に。。

分類とクラスタリングの違いは、正解となるデータが不可欠かどうか。分類は正解データが不可欠だが、クラスタリングは正解データがなくてよいとのことです。

 

機械学習による回帰・分類

ここの説明に入る前に終了時間が来てしまいましたので、説明は特になし。

PHPCON2016に参加してまいりました

イー加減Yii(イー)じゃなくて流行りのLaravelとかFuelPHPを業務で扱いたい…そんな欲張りスライムです。

PHPCON2016に参加してきましたので、簡単ではありますが備忘録として上げておきます。個人的には和田さんのセッションが一番聴き応えがありました。Enumで値を制限する予防的プログラミングの手法など積極的に取り入れていきたいです。ひとまず午前のセッションの部分だけ。他の箇所に関してはこれから更新予定です。

 

PHPの今とこれから2016

現在使用しているPHPのバージョンは、会場ではPHP5.6が多数派のようでした。

PHP 7.0 ⇒ PHP 7.1の変更のポイントは次の通り(下記4点以外にも変更点はありますが、個人的に重要と思った部分だけここでは記載)。

  • 複数例外のキャッチのシンプル記述可(複数の例外のキャッチについてcatch文を複数使わなくてすむ)
  • リスト構文の改善(添字が0からでなくても、リスト形式の代入が可能になる;list記述不要になる)
  • クラス定数のアクセサ指定可(従来クラス定数は全てpublicでアクセス制限機能がなかったが、public以外のアクセス範囲も指定可能になる):
  • Nullable型指定可(?を付けることでヌルを引数/戻り値の型として指定可能になる)

 

Composerプラグインを作ってみよう

@Hirakuさんの講演。

講演内容をざっと会話方式でまとめてみました。

Composerプラグインの作り方は、以下のURLを参考にするとよいとのことです。

https://getcomposer.org/doc/articles/plugins.md

 

A:今のComposerはあまり速くないし、たとえばGo言語とかPHP以外の言語でComposerを実装した方がもっと性能よくなるんじゃないの?

B:いやぁ、あれはPHPで書いてあるからこそ、PHPで拡張できるんだよ~。

A:なるほど、「PHPで拡張できること」がComposerの強みというわけか。Composerに拡張を行うことで次のことが可能になるもんね。

  1. (イベントフック型)composerコマンドの前後で任意の処理を実行
  2. (サブコマンド型)サブコマンドをComposerに生やす

C:初心者が通ります。Composer拡張とかやってみたいんだけど、まずどうすればいいの?

A:まずcomposer.jsonのscriptsというプロパティを作って試してみるといいよ。任意のスクリプトを実行したり、イベントフックで自動実行も手動実行もできる。簡単だし。

B:ただscriptsだけだと、他のcomposerプロジェクトで使い回したいときに不便になる。可能であればプラグイン化しておくと、requireするだけで使い回せるよ~。

C:なるへそ。まずscriptsをいじればいいんだな。ところでComposerとは何ぞや?

A:パッケージを作るためのフレームワークだよ。プロジェクトの全てを掌握する存在でもある。パッケージの役割・必要としているライブラリからプログラムの起動方法まで把握している、まさにプロジェクトの神みたいな存在さ。

C:パッケージって?

B:Composerは何でも「パッケージ」っていう単位で扱うんだよ~。簡単に言えばComposerが定義するPHPプログラムの単位のことさ~。

C:なるほど。分からん。

 

 

ハンガリー(ブダペスト)での地下鉄の24時間乗車券の購入方法

マフィアアニメ『91Days』にハマってる欲張りスライムです!禁酒法時代を描いた作品はディ・モールトベネ(^▽^) そしてハンガリーといえばロシアン・マフィアですね。

突然ですが、ハンガリーの首都ブダペスト内での移動に便利な地下鉄の24時間乗車券の購入方法をご紹介したいと思います!なにげに一人旅などでは、ハンガリー語が難しくて購入方法が分からず詰まってしまうという方もいらっしゃると思いますので、よろしければご参考にして下さい。

f:id:Cokeesque_DF:20161010224032j:plain

f:id:Cokeesque_DF:20161010231938j:plain

f:id:Cokeesque_DF:20161010224132j:plain

f:id:Cokeesque_DF:20161010224206j:plain

f:id:Cokeesque_DF:20161010224229j:plain

上記手順でボタンを押していくと、次の料金精算画面が出ます。f:id:Cokeesque_DF:20161010224257j:plain

あとは、料金を支払えば、ご所望の24時間乗車券が出てきますー。f:id:Cokeesque_DF:20161010224316j:plain

f:id:Cokeesque_DF:20161010224335j:plain

なおハンガリーでは、日本と違って傘を売っているお店が見つからないので、傘を持っていくことをおすすめします。

医療情報技師の勉強について

いやぁ~乱世乱世!未熟な20代ソフトウェアエンジニアの欲張りスライムです。この度2015年の医療情報技師の試験に合格致しました。ささやかながら自分が行ってきた学習方法・内容について簡単にご紹介をさせて頂きます。同じ試験を受検しようと考えている方の何かお役に立てれば幸いです。特別難しい試験というわけでもないですが。

 

医療情報技師の資格について

医療情報技師(Healthcare Information Technologist)とは、日本医療情報学会が資格付与する民間資格です。IPAが携わるようなIT系の国家資格ではありません。試験の申し込みは、申し込み期間中に以下HPから行うことができます。

www.jami.jp

医療情報技師は、医療情報技師育成部会によると、「保健医療福祉専門職の一員として、医療の特質をふまえ、最適な情報処理技術にもとづき、医療情報を安全かつ有効に活用・提供することができる知識・技術および資質を有する者」と定義されています。具体的には、日々の診療業務に関わる保健医療福祉情報システムの企画・開発および運用管理・保守を仕事とし、保健医療福祉の現場を知り,そこで活躍することができる情報処理技術者のことを指すらしいです。ですので、医療情報システムの企画・開発・運用・保守が主な業務となります。日本医療情報学会が厚生労働省に国家資格への実現を働きかけていますが、2015年10月現在、まだ実現には至っていません。ちなみに受検料は15,000円でした。高いよ!安くしろ!

医療情報システムの導入・開発・運用・保守に携わっておられる(将来的に携わりたい)方、または病院の院内SEへの転職を視野に入れておられる方、もう金融系SEはこりごりだという方であれば、視野を広げる意味でも取っておいて損は無い資格だと思います。実際に医療機関で働かれておられる方のお話を聞く限り、逆にこの程度の知識が無ければ、おそらく医療機関や医療情報システムを提供するベンダでシステムの専門家として仕事ができないと思われます。院内SEの場合、求人内容を見る限りピンキリな感じはしますが。。

ちなみに、医療情報技師の上位資格として、上級医療情報技師があるそうです。

試験内容

情報処理技術系と医療情報システム系と医学医療系の3科目から成ります。マークシートで5拓です(正解が1つとは限らない問題も含まれます)。

  • 情報処理:60分
  • 医療情報システム:90分
  • 医学・医療:60分

試験結果

以下の通りでした。医療情報システム系あぶねェー!

  • 情報処理:86/100         (合格:60/100 点以上)
  • 医療情報システム:78/120     (合格:76/120 点以上)
  • 医学・医療:62/100        (合格:48/100 点以上)

資格取得のために要した学習内容と勉強時間

学習に使ったのは、以下の過去問のみです。分からない用語があれば、その都度ググって調べていました。

Amazon CAPTCHA

勉強時間は約1ヶ月、といっても、通勤の電車に乗っている時間や寝る前に過去問を熟読していた程度です。自分より要領が良い方であれば、全科目7割取れれば確実に合格ですので、2,3週間みっちり勉強すれば合格できると思います。といっても、受検料がバカになりませんので、確実に全科目一発で合格するために勉強にできるだけ多くの時間をかけた方が良いでしょう。ただ、少なくとも専門学校や通信講座にお金を出して取得するほどの資格ではないと考えています。数学やプログラムなど頭を使って解くタイプの問題はなく、頭を使わない暗記タイプの問題(しかもマークシート)だけですので、過去問の熟読を反復するだけで十分学習効果があり、対策できます。

  • 情報処理技術系:基本情報の午前程度の問題ですので、ITエンジニアのご経験がある方や情報工学をかじられた方でしたら、無勉で余裕で合格できます。自分も無勉でした。
  • 医療情報システム系:医学医療系とほぼ同様に、ひたすら過去問の問題&正解と解説を暗記。IT企業の勤務経験がある方でしたら、導入・運用系の問題の解答の選択肢に明らかにありえない選択肢が含まれているのが自然と分かりますので、それを除外するようにすれば実質2拓ぐらいになり、解答の精度を高められます。OECDの8原則と電子保存の3原則、医療情報の標準規格、医療情報システムの安全管理に関するガイドラインの記載内容、各検査システムの特徴位は全部しっかり暗記しておくこと。最近は遠隔診療に関する出題が目立っている気がします。
  • 医学医療系:自分のように医療機関に勤務したことがない方ですと、この辺りは最初過去問を見ても歯が立たないと思います。知らないことは分かるわけがないので、初めの頃は解かずに正解を見て問題の選択肢の正解に○印をつけてしまい、ひたすら暗記し続けました。大体3年分位、問題&正解と解説を暗記すると、出題内容の肝みたいな部分が分かってきますので、後は時間を測って他の年の問題を解いていき合格に必要な最低限の知識を得ていきました。患者基本情報、腫瘍マーカー、炎症マーカー、主な疾患(または臓器)と検査の組み合わせ、DPC制度、日本の医療保険制度、処方せん、各記録の保存期間、医療資格の権限に関する理解は必須。医療法と医師法の規定内容も整理して頭に入れておきましょう。「助産師は女性でなければならない」「助産師は看護師国家試験の合格者でなければならない」というのも常識ですので、「誤っているのはどれか」というイヤラシイ問いで、間違って選ばないようにしましょう(^o^)

PHPCON2015に参加してまいりました

はじめまして。欲張りスライムです。昨日PHPCON2015に参加させて頂きました。

目的のセッションを聴けただけでなく、サイン本もGETでき、なぜかグラサンも沢山?ただで頂けましたので非常に満足しております。ざっとセッションの内容を共有させて頂きますと、以下のような感じでした。ご参考になれば幸いです。

 

PHPの今とこれから2015

大まかな内容は以下の通り。日本PHPユーザ会の会員になるのに特に制限があるわけではなく、ご連絡頂ければどなたでも会員になれる?とのことでした。

  • PHPリリースサイクルは1年、ライフサイクルは3年(バグ修正:2年、セキュリティ修正のみ:1年)
  • 5.4までは2015年10月の時点でサポートが切れるので注意。
  • PHP7がPHP5.6よりとにかく大幅高速化していることをアピールしていました。その他、変数コンテナ等、内部構造を大幅最適化し、メモリを削減しているとのことです。
  • PHP7では、従来に無い型チェックをStrictモードを使って有効にしたり、致命的エラーをtry~catch文を使って簡単に例外捕捉可能にすることができるようになっているらしいです。
  • PHPのこれからとして、PHP7.1の開発、PCO(PHP Cryptography Objects)、JIT?を挙げていました。

PHP7の変更点

  • 大幅高速化
  • 致命的エラーを例外補足可能に
  • 古いSAPI、エクステンションの削除
  • ヌル合体演算子(??)
  • 結合比較演算子(<=>)
  • 戻り値型宣言
  • スカラー型宣言
  • 匿名クラス

今どきのSQLインジェクションの話題総まとめ

徳丸先生のセッション。

SQLインジェクションが原因のクレジットカード情報漏洩裁判で、必要なセキュリティ対策の指示をしなかった発注側の会社でなく、受注側の開発会社に、債務不履行という判決が下った。

 ⇒開発会社は、自衛のため、最低限のセキュリティ対策と積極的な提案をすべき。

というお話が印象的でした。SQLインジェクションに関する事例や話題が中心で、徳丸先生の日記の内容以上に踏み込んだお話は特にされず。プレースホルダの自作は徳丸先生に怒られることが確定。

OWASPよりPHPプログラマに贈るセキュリティ実装虎の巻

昨日(2015/10/3)、OWASP Cheat Sheet Seriesの概要日本語版を公開したとのこと。URLは下記に記載。
http://blog.owaspjapan.org/…/owasp-cheat-sheet-series%E3%82…

ウェブセキュリティをかじった者であればOWASPは皆ご存知だと思われますが、そうでなければIPAしかご存知ないというような方がまだ多いんじゃないかなと思います。その他、ウェブ脆弱性テストツールとしてZAPを紹介していました。

他個人的な感想というか希望:概要だけでなくCheat Sheetも日本語訳お願いします!

Rasmus Lerdorf氏の基調講演

途中で別セッションに行ってしまったため、直接居合わせたわけではありませんが、ツイートを見る限り、最後に

質問者「オススメの、フレームワークとかある?」
Rasmus「PHP作ってる人がPHP知ってると思うなよ……PHPC言語で書いてんだからオレにはC言語しかわからんよ……」

的なやり取りがあったらしいです(ちなみにRasmus氏はPHPの生みの親です)。そりゃそうっすよね。

↓スライドはこちら

talks.php.net

 

徳丸先生に怒られない、動的SQLの安全な組み立て方

なぜSQLインジェクションが発生するのか? ⇒ 文字列連結でSQLを組み立ててるから

なぜ文字列連結でSQLを組み立てるのか? ⇒ SQLを文字列で指定できてしまうから

そこで、SQLインジェクションを防ぐには

  1. 文字列連結でない方法で動的SQLを組み立てれば良い
  2. SQL文字列ではない方法でSQLを指定できるようにすればよい

ということとなり、具体的には

とのことでした。聴講側の徳丸先生が怒っておりませんでしたので、これらの方法は大丈夫だと思われます(テキトー)。

Database Theory, Models and Abstractions

NoSQLとRDBSのそれぞれの特徴について述べてられました。結果的に、どちらがよいか正解・間違いがあるわけでなく、comment systemだとNoSQLがよいが、your HR systemだとRDBSがいいんじゃないかという感じでお話しされていました。ビッグデータの活用を考えると、やっぱりNoSQLの検討もありだなぁという月並みな感想。

↓スライドはこちら

speakerdeck.com

デプロイツールの紹介

主なPHPデプロイツールとして、下記3つを紹介。ざっくりと。

①Envoy

  • アプローチはシンプル (タスクを記述したファイルをコンパイル ⇒ タスクごとにリモートサーバへ ⇒ symfony/processによる接続 ⇒ コマンドを実行) ※コンパイル必要?
  • 記述したタスクのみを実行
  • ローカルタスクはタスクごとに記述

②Deployer

  • アプローチ (タスクを記述したファイルを読み込む ⇒ タスクごとにリモートサーバへ接続 ⇒ phpseclib/phpseclibによる接続 ⇒ コールバックでコマンドを実行)
  • ローカルタスクをリモートタスク内で実行可能

③Rockerteer

  • アプローチは複雑 (サービスをコンテナへ登録し、タスクを記述したファイルを読み込む ⇒ サービスロケータを介してタスクごとにリモートサーバへ接続 ⇒ phpseclib/phpseclibによる接続 ⇒ コマンドを実行)
  • ローカルタスクはタスクごとに