not president's blog

脳直で書きます。自分が覚えたい事を書いているだけです。

The Rules of work 読了

最初に記載しますが、「建設的な事」や「本の内容」 については、ほとんど記載できません。(覚えていないので) そしてあまり面白くも無かったです。 ただ本を読んだことに対するアウトプットをしたいがために書きます。

会社での処世術について、一つ一つをルールとして記載された本でした。

100個以上のルールが大体一つ2ページにわたって記述されていて、それらを守って、 会社で上を目指そうというのが主旨だったように思います。

多くのルールがあるので、共通点はいくつかあったかと思いますが、これも覚えてません。 ただ本を通して何度か出た内容として、以下のような事がありました。

  • 立場を上げるには、実際にその役職になる前に、その役職としての振舞いを理解しておく必要があること
  • とにかく全てのの悪人(他人の足を引っ張るのが好きな人。愚痴ばかり言うのが好きな人)には 肯定も否定もせず、腹の中で否定すること

あとたぶん一回くらいしか出てきませんでしたが、これが一番刺さりました。

  • 能力があるのは当然で、その努力を怠るならそもそも立場をあげようなんて思わないこと

買う前はすごく面白そうに思えた本ですが、読んでみるとあまりためになったとは言えない内容でした。

ここまで読んでくれた奇特な人で、本を既に読んでいて、ためになったという方がいれば教えてくれると幸いです。

・・・あと、DRUPALについて勉強した内容を記述するために始めたこのブログですが、

DRUPALは既にあきらめてしまいました。すみません。

別件になりますが、次こそは技術的な事を記述します・・・。

私は底辺である。役職はまだない。

「失敗のないファンクションポイント法」読了。
下っ端である私は、開発する内容に対して工数を見積もって欲しいと
言われる事がよくある。
だから私は私の全知全能を使ってKKDDによる見積もりをする。
そしてそれが誤っている事がよくある。
私は激怒した。

なので、根拠のある見積手法を身につけることを目指して、
本文一行目にある本を読みました。

結果から記述しますと、予想していたものは勉強できませんでした。
工数を計る手法を勉強していたつもりでしたが、ファンクションポイントは、
規模を計る手法らしく、工数のところまで落とし込む方法はありませんでした。
ネットで検索してみたところ、ファンクションポイント(以下FP)25くらいが一人月、
という記述もありましたが、自分が算出したFP値だと、実績値とかけはなれた
工数になってしまいました。
(一機能145FPとかおかしいだろ)

以下、本の概要とFP法の概要です。

本の概要

3章立てのわかりやすい構成になっています。

1章は見積手法の概要と歴史、種類など。
2章はFP法の見積手順
3章はシナリオに沿ったFP法の演習

になっています。
ちなみに3章途中でこれを書いています。

FP法の概要

自分なりに理解した内容で記述しています。
まあ、今までもずっとそうですが。

1.新規開発か、機能拡張か、納品後か判定
2.計測する範囲の設定と、アプリの切り分け(人、業務、データごと)
3.DB(ファイルも?)とカラム(項目)の数をタイプに分けて計測

DBは

  • ILF:本機能で管理されるもの
  • EIF:本機能外で管理されて、本機能で使用されるもの

項目は

  • DET:ユーザが識別可能な項目(利用者名やらなんやら)
  • RET:ユーザから見たデータのサブグループ(商品の割引対象・非対象など)

のタイプにわける。
その数をFPとして計測する。
(なんか表がある)

4.機能の処理(ボタン・要素)数を計測
以下の3タイプになる。

  • EI:ILFを管理するものか、システムの動作変更する入力処理。
  • EO:処理(計算、データ生成)を通した後出力する処理。
  • EQ:ILFやEIFを検索してデータを照会する処理。

上記の数をFPとして計測する。
(なんか表がある)

5.未調整FPの計算=3,4のFP合計

ここから本当によくわかっていません。
6.調整係数の計算
  14項目の評価点から、数値(Total Degree Of Influence:TDI)を求めて、
  以下の式にあてはめる。
  VAF=(TDI*0.01)+0.65
  これで未調整FPの値に+-35%を行う。

7.調整済みFPの計算
  1のタイプ別にFP計算方法を変えます。
  新規:
  (未調整FP+移行機能のFP(あれば、だと思います))*調整係数
  
  拡張:
  (((追加機能FP)+(変更機能FP)+(移行機能FP))*機能拡張後の調整係数)+(削除機能FP*機能拡張前の調整

  納品後:
  追加機能FP*調整係数
  

ちなみに私は大体5でやめます。
だからよくわからない数値になるのか。どうなのか。

今度はソースの実装工数を求めるような手法を探します。

誰も不幸なままで帰しゃしないぞ

今回も技術の話はありません。


広島行ってきました

  • 大阪~広島間(350kmくらい)
  • 250ccのバイクで行ってきました(カワサキ Z250)
  • ETCがないからずっと一般道
  • 途中で一泊したので、二日かけて広島へ
  • 6,7時間で200kmくらい。一日走るのはこれくらいが丁度良い(自分的には限界に近いです)

道中

東播磨自動車道を越えてからは国道2号線を道なりをひた走る。
(だったはず)

三原バイパスの前。
f:id:orenodrupal:20160918193838j:plain

広島では

お好み村にて
f:id:orenodrupal:20160918193855j:plain

呉にて
f:id:orenodrupal:20160918193902j:plain f:id:orenodrupal:20160918194323j:plain

くじら館にて
f:id:orenodrupal:20160918194006j:plain f:id:orenodrupal:20160918193926j:plain f:id:orenodrupal:20160918193930j:plain f:id:orenodrupal:20160918193938j:plain f:id:orenodrupal:20160918194000j:plain

これが噂の海軍カレー (と思います。名前は違った気もしますが) f:id:orenodrupal:20160918194011j:plain

大和ミュージアム、大和温泉物語にも行きましたが、写真はなし。
くじら館のみ入場無料でした。
実際の潜水艦を施設にしている部分がやっぱり一番面白かったです。
個人的には、この手の資料館は説明とかビデオより展示物を増やして欲しい・・・。
(ノートとかの小物でいいので)
一日遊ぶにはいいところでした。一日遊ぶには。

帰路

どこだっけ・・・? f:id:orenodrupal:20160918194019j:plain

特にイベントはなし。 終わり。

I came back

Drupal8カスタムモジュール追加方法


Drupal8が出てもうしばらく経っておりますが、ついに導入しました。
そして早速カスタムモジュール追加で迷ったので、覚書を残します。
以下の手順で進めます。

  1. モジュールinfoファイル作成
  2. コントローラファイル作成
  3. routingファイル作成

以下を参考にしました。 https://www.drupal.org/node/2464195
https://drupal.studio-umi.jp/blog/Drupal-8-tutorial-custom-module-development

1. モジュールinfoファイル作成


drupalのインストールフォルダ/modules以下に作成するモジュールフォルダを作成します。
(今回はfadeinフォルダを作成)
直下に「fadein.info.yml」ファイルを作成。
中身は以下。

name: fadeIn
type: module
description: 'This is your first module.'
core: 8.x

2.コントローラファイル作成


作成したモジュールフォルダ直下に以下のフォルダ/ファイルを作成する。
src/Controller/FadeInController.php
ここで呼び出すメソッドを作成します。中身は以下。

<?php

// 名前空間の定義
namespace Drupal\fadein\Controller;

use Drupal\Core\Controller\ControllerBase;

/**
 * Hello World を表示するコントローラとメソッド
 */
class FadeInController extends ControllerBase {
      public function fade() {
          $builder = array(
          '#type' => 'markup',
          '#markup' => $this->t('<p id="one">Hello World</p>'),
    );
    return $builder;
    }
}

3.routingファイル作成


作成したモジュールフォルダ直下に以下のファイルを作成する。
fadein.libraries.yml
ここで、モジュールにアクセスするパスを記述します。
中身は以下

fadein.fade:
  path: '/fade'
  defaults:
    _controller: '\Drupal\fadein\Controller\FadeInController::fade'
    _title: 'Fade In'
  requirements:
    _permission: 'access content'

これで「/fade」にアクセスすると、Hello Worldが表示されます。
f:id:orenodrupal:20160111210139p:plain ソースファイル名や結果がばらばらなのは、本来やろうとしていたことができなかったからです。
カスタムモジュールでJqueryを追加しようとしていました。
できたらまた書きます。

振り返れば何も残ってなかった

「生き方」(稲盛和夫著)読了

仕事しかしてないクリスマスイブだー!V8!V8!V8!
というわけで、時節にも、上の言葉にも全然関係ない事を
書きます。
読んでいる途中から気づき始めましたが、読み終わっても
何も身についてません。

■とは言いつつ本の生かし方を考えてみました。

やっぱり本で書かれている考え方や生き方を、実践していくしか無いように思えます。
自分でやらないと身につかないのは、技術書と同じなんじゃないでしょうか。
だとしたら、大事な事は本を読み終えた今からだ!

■でもやっぱり何も実践しません。

なぜならあまり内容を覚えていないからです。
本を譲ってくれた方がとある恩人でしたので、
読んだ事を報告しようと思って何とか読みきりましたが、
あまり内容に 共感できませんでした。
「生きていれば必ず苦労はある」とか、
「方法はわからなくても、何とかしようと思わなくては
なんとかならない」とか、
所々共感できるところもありましたが、他の大部分は、
私には高尚過ぎて、三毒を吐きつつ読むことに
なってしまいました。
ですので、啓発本を読むのはこれでしばらく止めておこうと思います。
大昔に読んだ啓発本の内容も、まだ何も実践していませんし。

■せめて本の概略くらいは

残します。 本はプロローグを除いて5章から出来ていて、各章のタイトルについて、著者の体験や学んだ
事の話を交えながら、どういう事か丁寧に説明されておりました。 各章のタイトルは以下の通りです。

  1. 思いを実現させる
  2. 原理原則から考える
  3. 心を磨き、高める
  4. 利他の心で生きる
  5. 宇宙の流れを調和する

終わり。

Apatanaデバッグ方法(終わり)

デバッグできたので、覚書として記述していたものを書き直しました。

1.Aptanaを起動して、
ウィンドウ→設定→PHPデバッグにて以下を設定

  • デバッガ:Xdebug
  • サーバー:Default PHP Web Server
  • php実行ファイル
    f:id:orenodrupal:20151219204227p:plain

2.実行→実行構成→PHPWebページを右クリックから新規を選択
f:id:orenodrupal:20151219204243p:plain

3.以下を設定

  • 名前 適当
  • サーバー・デバッガー Xdebug
  • phpサーバー +か■を押下して以下を設定
  • 名前 適当
  • ベースURL http://localhost
  • 文書ルート デバックプロジェクトのルートフォルダ
  • ファイル デバックプロジェクトフォルダのIndex

4.php.iniファイルを設定
 XDebugの設定

[XDebug]
zend_extension = "c:\xampp\php\ext\php_xdebug.dll"
;extension=php_xdebug-2.2.2-5.3-vc9-nts.dll
xdebug.remote_enable = on
xdebug.remote_mode = req
xdebug.remote_host = localhost
xdebug.remote_port = 9000
xdebug.remote_handler = dbgp

これで虫ボタンからデバッグが行えるはず。
どうもこれまではphp.iniの設定で、remote_modeの設定が抜けていたようです。

フォームAPIの最終回

Ajaxを使用したプログレスバー

できませんでした。
バーは表示されるけど、時間経過でバーを延ばす表現がつかない。
でも次の章にいきたいので、一旦置いて次にいきます。

以下は途中まで実装したプログレスバー

プログレスバーの追加

1.Formの定義

<?php 
/**
 * Hook_menuの実装
 */
 function ajax_test_menu(){
     $items['ajax_test'] = array(
        'title' => 'Ajaxのテスト',
        'page callback' => 'drupal_get_form',
        'page arguments' => array('ajax_test_form'),
        'access arguments' => array('access content'),
     );
     $items['ajax_test/fade_js'] = array(
        'page callback' => 'ajax_test_fade_js',
        'type' => MENU_CALLBACK,
        'access arguments' => array('access content'),
     );
     $items['ajax_test/interval'] = array(
        'page callback' => 'ajax_test_interval_js',
        'type' => MENU_CALLBACK,
        'access arguments' => array('access content'),
     );
     return $items;
 }
 
 /**
  * フォーム定義
  */
  function ajax_test_form(){
      $form['target'] = array(
        '#type' => 'markup',
        '#prefix' => '<div id="target">',
        '#markup' => t('ボタンをクリックすると幸せな気分になれますが、それは幻想です'),
        '#suffix' => '</div>',
      );
      
      $form['submit'] = array(
        '#type' => 'submit',
        '#value' => t('クリックしてね!'),
        '#ajax' => array(
            'path' => 'ajax_test/fade_js',
            'wrapper' => 'target',
            'method' => 'replace',
            'effect' => 'fade',
            'progress' => array(
                'type' => 'bar',
                'message' => t('ちょっとまっててー'),
                'interval' => 2,
            ),
       ),
      );
      return $form;
  }
?>

これを表示して、Submitを押すと、
f:id:orenodrupal:20150505113212p:plain f:id:orenodrupal:20150505113221p:plain アニメアイコンが表示される。
次回からはフィルタシステムに入ります。