Articles tagged with: マクロ

アクアビット航海記 vol.33〜航海記 その19


あらためまして、合同会社アクアビットの長井です。
弊社の起業までの航海記を書いていきます。以下の文は2018/2/22にアップした当時の文章が喪われたので、一部を修正しています。

社員になること


正社員になった私。
今までずっと派遣される側だった立場から派遣する立場へ。

正社員の話をいただき、それを受け入れる決断。そこにどのような葛藤があったのか。正直なところ、自分自身のことなのにあまり覚えていません。
正社員のお話が来たことで、これ幸いと満面の喜びを必死に隠し、内心で快哉を叫びながら受け入れたのか。はたまた、かつて尼崎市役所の外郭団体のお話を蹴った時のような気概を持ちながら、妥協の結果として正社員の話を受け入れたのか。
うーん、どちらでもないような。そんな記憶は残っていません。
ただ、本連載の第三十一回(https://www.akvabit.jp/voyager-vol-31/)で、オペレーターさんとの絆がなくなったことにショックを受けたと書きました。
私が正社員に取り立てられたことは、オペレーターさんとの断絶をさらに広げたはずです。

当時の私の心境を慮るに、ただお話をいただくままに受け入れた、という程度だと思います。
差し出された水を、さほど疑わずに飲むように。もちろん、水の匂いぐらいは嗅いだはず。つまり、正社員の話が自分にとって損か得か、は考えたはずです。

過去の私に質問


では、得とはなんでしょう。身分の安定。対外的な信用。収入の安定。挙げてみればそんな感じでしょうか。
逆に、損とはなんでしょう。収入の減少。束縛の発生。将来の固定。そんな要因が思い浮かびます。
当時の私が何をどう考えていたのか、今の私からQ&A形式で問うてみたところ、関西弁で返事が返ってきました。

まず損の観点から。
Q. 収入の減少についてどう思っていましたか?
A. スーパーバイザーの収入はなんやかんやと手取りで30万はもろてました。残業したらその分も精算してもらえたっちゅうのも大きいです。いやぁ、ぎょうさんもらえましたわ。今まで勤めていたアルバイト、派遣社員、ブラック企業のどこよりもお金もらえてありがたかったです。当時、ぼんやりと思とったのは、実年齢よりも手取りが上回っとったらええんちゃう?ということ。20代なかばで30万以上はもらえとったから、ええんと違うかなあと。
正社員になったら、給与は固定性になるし、残業代も減らされるし。うーん。どないしょ、と思ったのは事実。そやけど、ま、正社員の提示額を計算したらせいぜい数万円ぐらいの減で済みそうやし、まあ損にはならんかぁ、と思ってました。
Q. 束縛が発生することは考えませんでしたか? 正社員になれば社員としての身分に縛られるし、対外活動にも制約が課せられます。
A. うん、考えたよ。束縛についてはぼんやりとね。そらぁ確かに正社員の立場は損になるかもしらん。でも、社員になったからといって公私までは束縛されへんやろ?少なくとも大成社よりブラックちゃうやろ?って思ってたぐらい。そもそも対外活動っちゅうても、当時はSNSとかないし、書いたり喋ったりしようにもどこにも場所がなかったし。そやからそもそも損とか全く思わへんかったわ。
Q. 将来が固定されてしまう、とかは思いましたか?
A. 正社員になったら、将来の自分の道が狭なってしまうってか?たしかに関西におった頃は、クリエイティブな職を考えとったけどね。そやから正社員になってもうたら、将来勤め人で固まってまうがな、っていう心配もちぃとだけありました。でも、今までも何回も転職繰り返しとったからね。まぁ次の道が決まれば辞めてもええかなぁ、くらいに思ってました。そやから将来が固まってまうこともあんまり損とか考えてへんかった。

続いて、得とは何かについて考えてみます。
Q. 身分の安定は得ではありませんか?
A. たしかにアルバイトとか派遣社員を転々としてばっかりやったからねぇ。でもあんまり正社員には憧れてへんかったなぁ。自分が人からどう見られるかも興味ないし。無頓着ってやつ?身分がどうとかも興味なかったし、だから正社員になりたいとかもなかった。なので、得とはあまり思わんかったなぁ。
Q. 対外的な信用は得られたのではありませんか?
A. 確かにね。相方が歯医者やし、結婚する時も相方の親族からは結構冷たい視線を浴びたからなぁ。たしかに正社員になって見返したろ、っちゅう気持ちはちょっとあったかも。歯医者の夫やし、せめて正社員の肩書ぐらいは持っとかんとなぁ。という気持ちもちょっとはね。
でもな、もうすでに乗り越えて結婚した後に来たんや、正社員の話って。これが結婚前やったら釣り合いとるために正社員にもう少し前向きやったかもしらんけど、すでに結婚してたから、今さら対外的な信用、っていわれてもピンと来ぉへんやん?そやから、対外的な信用のことはあまり重要とは考えへんかったなぁ。
Q. 収入の安定はどうなんでしょう?
A. これは……一番大きな理由やったかもしれへん。所帯も持ったし、奥さんも派遣社員の不安定よりは正社員を、っていうことは思ってたはずやしね。でもね、一年ちょっとスーパーバイザーやってたけど、毎月結構なお金もろててんよ。定期的に30万と少しは。そやし、その頃はうちの相方も大学病院に勤めてたし、お金に不足は感じひんかったんとちゃうかなぁ。
ただね、ちょうど正社員の話が来た頃って、相方がお仕事休まんならん事情ができたんよね。え?なんでかって? 子ども。子どもがでけてん。まぁ子どもができるまでもいろいろあってなぁ。話せば長くなるから、今日は堪忍して。ただ、それでいろいろあったから、正社員の話にふらっと流れてしもたのかもしらんなぁ。
Q. 忘れかけの怪しげな関西弁でお答えしてくださり、ありがとうございます。

正社員になったことで得たもの


結局、私が正社員の話を受け入れたのは、将来的な視点からというより、その時の事情、とくに子どもを授かったことが理由でした。
その時の私が変なプライドを発揮して正社員の話を断らなかったことに感謝です。当時の私といえば、さりとて正社員に過大な幻想を抱くこともせず、自然に正社員の話を受けたのでした。

正社員になったことで、私はより多くの仕事を任されるようになりました。
今までは派遣社員だったので、現場で滞りなく集計業務を進めていくだけでよかったのです。でも正社員である以上、違う仕事も担っていかねばなりません。

正社員になったことで、私はより上のスキルや広い視野を得られました。
たとえば、当時手掛けていたオペレーターさんやスーパーバイザーさんの出退勤管理システムのメンテナンスもその一つ。
パソナソフトバンクに所属する皆さんは、出退勤の際に社員証に印字されたバーコードを読み取ります。Microsoft Accessによって作られたそのシステムは、現場と事務所の二カ所に設置されていました。現場の打刻用と、横浜ビジネスパーク(YBP)の別フロアにあるパソナソフトバンクが分析システムための二つです。
ところがこのAccessはカスタムメイドで、しかも作った方がすでに離任していました。そのため、私はこの勤怠管理システムのメンテナンスを任されました。
また、これは少し後の話ですが、パソナソフトバンクからスカパーさんへ毎月提出する請負業務の請求書の作成も私に任されました。そしてこれも少し後ですが、外のお客様の案件も手掛ける機会をいただきました。スカパーの現場だけでなく、違う現場も経験させないと、という上司の判断だったのでしょう。
そんな私の下には、常勤のオペレーターさんが配属され、私は上司になりました。人に指示する立場。それは社会人になって初の経験でした。

次回は、当時の私が抱えていた仕事からいったん離れ、子どものことについて書こうと思います。
初めて子を持つにあたり、いろんなことがありました。
それらの出来事も、私の起業を語る上では外せません。
ゆるく長くお願いいたします。


kintoneにシステム移したいんや


kintone Advent Calendar 2020の22日目の記事です。

  Topへ↓

おかげさまで今年はkintoneの案件が大幅に増え、ありがたい限りです。引き続き、頑張っていきまっせ^+++^

さて、案件が増えたのはめっちゃうれしいんやけど、今年は今までと比べ、案件の傾向に少し変化がありましてん。その傾向っちゅうのは旧システムからkintoneへ移行する案件の増加ですねん。
もちろん、昨年までも移行案件は請けてました。でも、今年はC/S(Cliend/Server)型の旧システムからkintoneへの移行案件をぎょうさんご依頼いただきまして。その数はめっちゃ増えましたわ。

おそらく今後もこうした移行案件は増えていくと思てますねん。そやさかい今年のkintone Advent Calendarは7回目の参加にして、初めて連携開発ではなく、移行について書いてみようと思とります。
これからkintoneへのシステム移行を手掛ける方の参考になればうれしいねん。

システム移行の建前と本音

  Topへ↑

システムを移行する目的はお客様によって千差万別です。
でも、システムを移行すると決断するのは経営層、少なくとも部署の責任者でっしゃろ?

この時、経営層と現場でシステムを扱う方の見る視点は違います。
経営層は人件費の削減や処理効率の改善に重きを置きます。一方で現場の視点は日々の業務の負担を軽減することと、業務を止めないことに向きがちです。

その時、建前上では業務改善を同時に行いながらシステム導入も行う、という意見が出ます。そりゃせやんなぁ。わてら提案側にとっても業務改善を錦の御旗に立てたほうが提案は通りやすいっちゅうもんで。

そやけど、往々にして現場の本音とは従来の業務フローを変えずに、なおかつ業務負担が軽くなることにあると思とります。業務改善によってオペレーションが大きく変わるのはいややなあ。新たなやり方になれるまでが大変やわ。てなわけで抵抗を覚えがちです。

わてがこの時に心がけとるんは、営業の相手である経営層や上層部とのお話がまとまったら、なるべく早いうちに現場の業務担当に挨拶し、現場の方とのコミュニケーションを増やし、現場の本音を伺いながら開発することですねん。
この時の建前と本音と取り違えると、あとあとまでボタンの掛け違いがえらいこっちゃになります。
また、営業目線でお客様の上層部とだけ話をしていると、現場のニーズが後から後から噴出してがっちゃがちゃになります。わては何度もこれでえらい目に遭っとります。

構築の順番

  Topへ↑

現場の方にとっては、慣れ親しんだ旧システムからkintoneという未知のシステムに触れるわけです。不安になって当然やんなぁ。
そやからわてはkintoneの良さ、つまり現場の方々が簡単にシステムが触れまっせ、簡単に設定ができまっせ、ということを早めにご説明します。

このあたりは旧来のシステム開発のセオリーとは違いますわな。要件定義、内部/外部設計、コーディング、単体テスト、結合テストが終わったあたりでようやくマニュアルが用意され、ユーザー受け入れテストで現場の方が触る。それが旧来のシステム開発。

わてはkintoneの場合はより早いうちに現場の方に触ってもらうことを重視します。フィールドコードは触らんといて、プラグインやJavaScriptはいじらんといて、という点だけお願いし、あとは積極的に使ってもらいます
その結果、kintoneってうちらでも触れるんや、現場でもシステム開発に参加してええんや、という実感を持ってもらえればもうしめたもんですわ。
この場合の現場というのは現場の統括者ではなく、文字通り日次の業務で手を動かしている方全員のことやからね。

これで現場の方からkintoneへの警戒感や拒否感が取り除けて、システム開発へ参加しているという実感を持ってもろたら、kintoneのファンにだってなってもらえます。そうなればシステム導入の成功は約束されたも同然ですねん。

その時、最後になるまでシステムを見せへん、という手法は逆効果。
まず移行が順調にできていることを示すためにも、一番やりやすいマスタ系からアプリを作っていくとよろしおま。
マスタは業務の基本であり、なおかつマスタアプリ自体には複雑なロジックはそれほど必要ないよって、導入側にとっても取り掛かりやすいはずですわ。
あと、早めにお客様にシステムに関わってもらうことによって、kintoneが苦手な部分をわかってもらうのも重要!なんでかいうたら、システム導入間近になっての仕様変更で断れるからやねん。

また、フィールドの追加や編集も自在にできるkintoneの特性がお客様に喜ばれるのもこの時。もちろん、ビジネスロジックに関わりの少ないフィールドを除いてやで。
例えば分析用に得意先種別を増やしたいねん、というご要望にもさくっと対応できるkintone。このかっこええ姿をアピールするだけで、好感度アップは間違いなしや。

また、ここで現場の方に新旧両方のシステムにマスタの入力を行ってもらえれば、次に述べるデータ移行の手間が大幅に減ります。ほんまやで。

データ移行の基本

  Topへ↑

kintoneへのシステム移行でいっちゃん肝心なんは、おそらくこの部分だと思とります。
kintoneはご存じの通り、簡単にアプリが構築できますやろ。そやから、元のシステムのデータの項目を再現するのはそれほど難しくない。そないに思うかたもおるんとちゃいますか?
ところが、ここを甘く見とったら後で苦労しますねん。

とくに、もともとのシステムの仕様で、マスタ上で管理する項目が制限されとったら要注意です。
入れたい情報を入れるべき項目がない。その場合、おうおうにしてお客様は備考欄にあれこれ詰め込みますねん。苦肉の策で本来ならメールアドレスやURLを入れるべき欄にまで雑多な情報を入れてしまいます。
kintoneでは簡単にフィールドを追加できまっしゃろ?でも、おうおうにして旧システムでは項目を追加するのに別途費用がかかります。だから、そないな状態になってしまうんですわ。
こうした雑多な情報がどこで管理されとるんか。その情報をkinotneのどの項目に移すんか。きちんと体系化されたデータとして活用したいんやったら、お客様ときちんと押さえとかなあきません。

次に、マスタをルックアップで呼び出す際の仕様は早めに定めとかなあきまへんで。御存じの通り、ルックアップでは関連付けるアプリを設定しますよって。
そしたら、コピー元のフィールドも設定せんならん。ルックアップフィールドではフィールドに文字を入力することで、候補を事前に絞り込むことができます。ただしコピー元のフィールドに設定した値に限りますけどな。

例えば得意先マスタの得意先コードを指定しておくと、マスタの得意先コードで検索が可能です。ですが、一度ルックアップフィールドをこさえた後にお客様から得意先名でも検索したい、と言われたらもうバンザイせなあきません。なんでかちゅうたら、コピー元のフィールドは一度設定すると変更でけへんよって。
もしどうしても変更の必要が生じたら、新たにルックアップフィールドを追加せんならんのです。もちろん古いルックアップのデータから新しいルックアップにデータを移さなあかん。そんなんいけずやんかぁ。

また、検索したい対象は得意先名だけに限りません。よくいわれるのは着信時の電話番号の末尾四桁ですわ。それ以外にもフリガナやらなんやら。つまり複数の項目で検索したいというご要望が出てきますねん。
この時は、わては検索キーっちゅう項目を設け、複数の項目の値を連結させとります。
この時はスペースなしでがっちゃんこしてまうとうまく検索がでけへんようになるから、半角スペースなどを間に挟んで連結するとよろしい。

さらに、その時は文字数にも気ぃ付けましょう。コピー元のフィールドに指定できるのは文字列(1行)です。
こちらのヘルプにも書かれとるけど、文字列(1行)の文字数に制限はあらへん。
ところが、今のページにはこうも書かれとったよね。
値の重複の禁止を設定すると、入力できる文字数が全角または半角で64文字までに制限されます、てな感じ。なんでやねん。

では、値の重複の禁止を設定せんかったらええんちゃうん?そう思いたなるやん?え?ならへん? いや、なってぇや。
なぜなら、ヘルプには以下のように書かとるからやねん。
既存のレコードを更新する場合、CSVファイルを読み込んで一括更新する方法が便利やと思うですわ。
けど、ヘルプにはこうも書かれとるねん。

こないな制限があったら、もうあかん。更新がでけへんのですわ。
APIで更新する場合も同じですわ。
ここのリファレンスにも。
システムの移行には、データの更新が欠かせませんわな。CSVで更新する場合も、APIで更新する場合も。
ルックアップ項目を更新するためには、値の重複の禁止せなあきません。ちゅうことは、連結した文字列の文字数が64文字を越えんようにせんならんのです。つまり、移行元のシステムの項目の文字数を考慮にいれなあかんちゅうわけですわ。難儀やなぁ。

もう一つ、移行にあたって注意しておかなあかんことがあります。
それは住所データの扱いです。日本の住所の場合、以下の4つの項目からなっとります。

  • 都道府県
  • 郡市町村
  • 住所(町・字・地番)
  • 建物・マンション名

これが旧システムでも四つに分かれとったら問題ないんよ。
そやけど、住所1、住所2という感じで二つだけのフィールドでしか管理されていない場合、えらいこっちゃになります。

なんでかゆうたら、それを分割する作業が発生するからですわ。分割?そんなんせんでええわ。てゆわれたかて、後々の分析のこと考えたらそうもゆわれへん。正味、お客様に後々の分析のことを考えてと提案してみたら、kintoneでは分割して管理するお客様が多いんですわ。
例えば旧システムの住所1に「東京都中央区日本橋2−7−1」。住所2に「東京日本橋タワー」の値が入っていたとしますやろ。そしたら、住所1から「東京都」「中央区」「日本橋2-7-1」を分割せんならんことになります。さて、ぼんやったらどないする?

わてはそんなとき、VBA(Excelマクロ)を活用しますねん。
その中でこちらのサイトを参考に正規表現から分割しますねん。
この正規表現をVBAの中に仕込んだら、都道府県と郡市町村と住所(町・字・地番)を分割できるんよ。
以下に簡単やけどコードを掲示してみたから、よかったらみてみて。必ず本番では使う前にテストしたってぇやぁ。もちろん当方では一切の責任は負われへんから。

Sub ConvertSplitAddressData()
    Dim regExp              As Object           '正規表現オブジェクト
    Dim strPattern          As String           '正規表現パターン
    Dim lngRowCounter       As Long             '行カウンター
    Dim intRegMatchCount    As Object           '結果
    Const clngMaxRowCount   As Long = 65535     '行の末尾
    Const cintTargetColumn  As Integer = 18     '結合された住所列番号
    Const cintPrefColumn    As Integer = 14     '結果の都道府県を格納する列番号
    Const cintCityColumn    As Integer = 15     '結果の郡市町村を格納する列番号
    Const cintAddressColumn As Integer = 16     '結果の住所を格納する列番号
    Const cintAnotherColumn As Integer = 17     '結果の建物を格納する列番号

    Set regExp = CreateObject("VBScript.RegExp")
    strPattern = "(...??[都道府県])((?:旭川|伊達|石狩|盛岡|奥州|田村|南相馬|那須塩原|東村山|武蔵村山|羽村|十日町|上越|富山|野々市|大町|蒲郡|四日市|姫路|大和郡山|廿日市|下松|岩国|田川|大村)市|.+?郡(?:玉村|大町|.+?)[町村]|.+?市.+?区|.+?[市区町村])(.+)"
    With regExp
        .Pattern = strPattern
        .IgnoreCase = True
        .Global = True
        For lngRowCounter = 2 To clngMaxRowCount
            If ActiveSheet.Cells(lngRowCounter, cintAddressColumn).Value = "" Then
                Set intRegMatchCount = .Execute(ActiveSheet.Cells(lngRowCounter, cintTargetColumn))
                If intRegMatchCount.Count > 0 Then
                    ActiveSheet.Cells(lngRowCounter, cintPrefColumn).Value = Trim(intRegMatchCount(0).SubMatches(0))
                    ActiveSheet.Cells(lngRowCounter, cintCityColumn).Value = Trim(intRegMatchCount(0).SubMatches(1))
                    If InStr(intRegMatchCount(0).SubMatches(2), " ") > 0 Then                '建物以降が全角空白で分割されている場合
                        ActiveSheet.Cells(lngRowCounter, cintAddressColumn).Value = Trim(Mid(intRegMatchCount(0).SubMatches(2), 1, InStr(intRegMatchCount(0).SubMatches(2), " ")))
                        ActiveSheet.Cells(lngRowCounter, cintAnotherColumn).Value = Trim(Mid(intRegMatchCount(0).SubMatches(2), InStr(intRegMatchCount(0).SubMatches(2), " ") + 1, 100))
                    ElseIf InStr(intRegMatchCount(0).SubMatches(2), " ") > 0 Then             '建物以降が半角空白で分割されている場合
                        ActiveSheet.Cells(lngRowCounter, cintAddressColumn).Value = Trim(Mid(intRegMatchCount(0).SubMatches(2), 1, InStr(intRegMatchCount(0).SubMatches(2), " ")))
                        ActiveSheet.Cells(lngRowCounter, cintAnotherColumn).Value = Trim(Mid(intRegMatchCount(0).SubMatches(2), InStr(intRegMatchCount(0).SubMatches(2), " ") + 1, 100))
                    Else                                                                      '建物がないか続けて入力されている場合
                        ActiveSheet.Cells(lngRowCounter, cintAddressColumn).Value = Trim(intRegMatchCount(0).SubMatches(2))
                    End If
                End If
            End If
        Next lngRowCounter
    End With
    Set intRegMatchCount = Nothing
    Set regExp = Nothing
End Sub

データ移行の方法

  Topへ↑

kintoneにデータを取り込む方法はいくつかあります。そやけど、だいたいはCSVによる一括登録・更新か、APIでの登録/更新かcli-kintoneの三択ちゃうやろか。
わてはCSV経由で取り込むことがほとんどですわ。
なんでかいうたら、APIやとHTTP Client Tool for kintoneを使う場合でも、何かのプログラムで書く場合でも、コードのマッピングの記述が面倒になるからやねん。
あと、一リクエストでも100件しか登録や更新ができないAPIの仕様制限があるやんか。そやから、100万件をこえるデータを移行する場合、一日のAPIリクエスト回数制限にも引っかかってしまうんや。
cli-kintoneは便利やねんけど、上と同じくマッピングの部分が手間なのであまり使用しとりません。ただ、余談すると、Bashとcli-kintoneを使った効率化は追及せなあかんと思とります。そやから弊社としてはcli-kintoneを使ったツールの作成ははよ進めよ思てます。
ただ、それでも画面上でマッピングを確認できるcsv取込の方が安全ちゃうかと思います。ここはよぉ考えてみてください。その時、旧システムが出すcsvの見出し項目名とkintoneのフィールドラベルは合わせといたほうが移行マッピングが圧倒的に楽になるで。

先に挙げた住所や備考以外にも、データの加工はあちこちのフィールドで発生しますやろ。それらはめっちゃ面倒やと思うねん。それらをチェックとか加工とかせなあかんから。例えば下のような感じやね。

  • 項目の値の中に半角カンマは入っていないか。
  • 項目の値の中にダブルクォーテーションなどは入っていないか。
  • 項目の値の前後に空白は入っていないか。
  • 旧システムから出力されたファイルの文字コードは統一されているか。(複数のシステムからそれぞれ出力して取り込む場合、Shift-JISとUTF-8が混在しているとkintone側で文字化けの恐れあり)
  • ルックアップの値はkintoneの関連付けるアプリの参照アプリのコピー元のフィールドに等しいか。
  • 電話番号や郵便番号、メールアドレスやURLの書式は正しいか。
  • 日付書式は正しいか。(元データがyyyymmdd形式の場合、空白セルがあると空白に変換してくれずエラーになる等)
  • データの重複はないか。
  • kintoneのラジオボタン/チェックボックス/複数選択/ドロップダウンの選択肢に等しい値のみが含まれているか。

もしでけるんやったら、VBAマクロやcli-kintoneなんかでツールを作ったほうがええと思うで。
あと、ツールの作成と簡単に書いとるけど、旧システムによって項目がまちまちなんは、わかりますやろ?旧システムごとに工数と時間を使うから、わては移行ツールの作成には消極的で、あまりやってへんかったわ。

そやけど、毎度Excelの関数を駆使して移行データを作るんはもうしんどい。わても実は今年手掛けた数々の移行の中で、一つだけめっちゃ苦労した移行がありましてん。それをしおに、めんどいかもしれんけど、移行ツールを作ったほうがええなぁと痛感しましたわ。

ただし、早めにマスタの項目を固め、マスタアプリを作り、初回のデータ移行がでけたところで、それ以降は本番までお客様にマスタデータの入力をしてくれまへんやろか?とお願いしたほうがよろし。もしそれがでけたらマスタの移行ツールはいらんからね。
ま、それでもトランザクションデータの移行に関しては何かしら作らんといかんけどね。

なんでかいうたら、マスタのデータは生き物やねん。お客様によってガーっと追加され、あちこちでバァーっと更新されますやろ。
しかも住所の更新が起こるし、しかも項目が連結されている住所データやったら、さっき書いたみたいに分割の作業が毎度いるんでっせ?
それに、本番移行直前でせーので一回でガバっと取り込めば済むほどシステム移行は甘いわけやあらへん。

もちろん、どっかの時点で初回分を取り込み、定期的に差分データを取り込み、最後に移行日までの残り差分がきれいに取り込めた場合は楽ですわ。そやけど、そうした移行の運用ができるのは、こっち側が旧システムにアクセスできる場合だけやねん。

遠方のお客様で、しかもVPNでつながれへんような旧システムの場合、データの取り出しはお客様にご依頼するほかありませんやろ。
お客様のやり方によっては項目に抜け漏れがあるやろし、項目の順番が違っていたりします。ましてや差分データの時間の基準もあいまいになってしまいますねん。そやから、きれいなデータを毎度もらえないと考えなあきません。
そやから、移行ツールを作らんでええ場合は、旧システムにこちらから簡単にアクセスできる場合に限ったほうがええね。もしそないにアクセス出来るんやったら、毎回Excelのフィルターや並び替えや置換などを駆使しても円滑に移行できると思うけどね。
ただ、実際はそうでない場合が多いから、そないなリスクを考えたら、最初に工数と時間をかけてでもお客様専用の移行ツールを作り、それを運用したほうが格段に楽やと思うんやけどどない?

データ移行のTIPS

  Topへ↑

なんぼかTIPSを列挙しておきますわ。

  • データの本番移行までは、取り込み時には変更履歴はオフにしといたほうがええで。
    設定は、アプリの設定→高度な設定→変更履歴のチェックを外す。
    そうしないとサイボウズさんに注意されまっさかい。また、変更履歴だけで契約のディスク使用量を軽く超過してしまいますねん。(一度、うっかりしていて100万件のデータを何度も取り込みなおし、サイボウズさんに注意されてもうた。※EvaCamp 2020で言いそびれた失敗談の一つ)
  • 可能であれば、本番移行後は旧システムのトランザクションデータ(売上や仕入などの伝票データ)は、kintoneでも別アプリにした方がええで。
    しかも、旧システムのトランザクションデータのフィールドはルックアップをなくし、文字列(1行)と数値のみにしといたほうが楽やで。なんでかいうたら、過去分のデータはマスタデータの変更などで古い値として入っとるからやねん。過去のルックアップはその時のマスタデータの値を再現して保存しといて、てな具合にご要望もろたら、移行作業はめっちゃごっつい苦行になってまう。さっきも書いたけど、ルックアップのコピー元のフィールドはマスタにある値やなかったらエラーになるからね。そやから、ここは初めのころに決めておいた方がええかも。
    旧システムの部分については別アプリに分け、ルックアップを外してしまえば、旧システムの生データをそのまま取り込むだけ済むさかい、ごっつい楽ですわ。
    そやけど、一つだけ注意しとかな。アプリを分けた場合、新旧両方のアプリをまたいだ分析に対応できませんやろ。その場合は、自分でカスタマイズビューを作成するか、トヨクモさんのDataCollectのようなプラグインを活用するとよろし。便利でっせー。
  • 添付ファイルの移行が必要な場合は先にも挙げたcli-kintoneを使うとええで。また、要件定義の段階でDropboxやboxなどのオンラインストレージの移行を提案しとったら、kintoneではそちらのストレージとの連携を行えばええから、あんじょういきまっせ。
    オンラインストレージへのデータ移行と整理作業は、お客様にお願いしといたほうがええやろし。
    2019年のわてのAdvent Calendarもご参考にしたってやー。
  • C/S側の旧システムは、たいがいレイアウトが小さくまとまっとるやろ。それに比べるとkintoneのフラットデザインは、項目の間の余白もがっつりとられとるし、そこは一目で情報が見られる旧システムに劣ると思われるかもしれへん。
    無理やりJavaScriptでレイアウトを調整したったりもしたけど、それはあんまり本筋のやり方ちゃうしなぁ。
    これも早い段階で現場の担当者と話を詰めといたほうがええで。
    あ、もう一個。デザインについてはkintoneのアプリの設定→デザインテーマの設定でブラックを選ぶとお客様の印象が変わるかもしれんで。一度試すとよろしおま。
  • Excel上でデータの加工を行う時、何使てます?フィルタ? もしそやったら、スライサーの機能とか試すと幸せになれるで。
    スライサーはこの記事が参考になるんちゃうかな。
  • kintoneの難儀な仕様ってあるやんか。例えば英単語の一部分の文字だけで検索でけへんとか。
    ヘルプにもこない書かれとるし。
    もしそれやったら、Excelのフィルタ使たらええねん。まあJavaScriptで
    一文字検索の機能を作ってもええし、プラグインでもええのんあるけどね。
  • C/S側の旧システムのユニークの項目は早めにお客様と共通認識をもっといたほうがええ。さっきも書いたけど、お客様からデータをもらう際は、旧システムのデータ出力方法を把握して、その設定や出力操作は完全に共通認識をもっといたほうがええ。あと、これも上で書いたけど、旧システムのデータを先に修正できるのならお客様に頼んで修正しといたほうがええ。

まとめ

Topへ↑

ちゅうわけで、本記事は皆様のkintoneへの移行のお役に、そしてご参考になればよろし思ぅて書きました。もちろん、これは弊社にとっても参考にすべき自社のノウハウですわ。
弊社も今年は一件、移行で苦労した案件がありましてん。だからこそ、一度ノウハウを言語化すべきやなぁと思ったんよ。それがきっかけです。
また、弊社の新規の案件の際にもお客様にも読んでもらお思ぅて、ここで知見を共有したいと思います。
なので、今後も折をみてアップデートを重ねていこうと思います。よろしゅうお願いいたします
また、こんなTipsや失敗談などありましたら、ガァーっとご意見をお寄せください。また本稿の内容に不備があった場合も遠慮せんとご指摘ください。

本稿が旧システムからkintoneへの移行をお考えの皆様にとってちょっとでも手助けになったら幸せやわ。


七日間ブックカバーチャレンジ-かんたんプログラミング Excel VBA 基礎編


【7日間ブックカバーチャレンジ】

Day5 「かんたんプログラミング Excel VBA 基礎編」

Day5として取り上げるのはこちらの本です。

私は、もう20年ほど技術者としてお仕事をしています。
開発センターでシステムの開発やテストに従事していた時期も長いです。銀行の本店でも数年間、常駐していました。
ここ数年は、5年近くkintoneのエバンジェリストとして任命をいただいております。
個人事業の主として9年、法人を設立してからは6期目に入りました。
その間、システム・エンジニアを名乗って仕事を得、妻子を養ってきました。

そんな私ですが、システムは誰からも教わっていません。
全て独学です。
高校は普通科でしたから、パソコンはありません。大学は商学部で、パソコンルームはあった気がしますが、私は無関心でした。一度だけ5インチのフロッピーディスクに一太郎で作った文章を保存する課外授業をうけたぐらい。
大学の一回生の頃に、ダブルスクールに通っていましたが、そこで学んだ事で今に活かせているのはブラインドタッチ。Basicの初歩も学んだ記憶はありますがほとんど覚えていません。
大学を出た後、一年近く芦屋市役所でアルバイトをしていた頃、出入りしていた大手IT企業のSEの方から盗み取ったマクロからここまでやってきました。

そして私は新卒で採用された経験も、真っ当な転職活動の経験もありません。ですから、企業で研修を受けた経験もほとんどないのです。

システム・エンジニアとして働く常住現場で、悠長にプログラミングを教えてくれる人などいません。誰もが忙しくコーディングや設計に追われている中、そんな間抜けな質問をしたら退場させられてしまいます。

そんな私がどうやってプログラムを学んだのか。
本書のような入門書からです。

私の場合、キャリアの初期に開発現場ではなく、オペレーションセンターで働き、某企業でシステムの全権を任してもらえるという幸運もありました。

試行錯誤しながらExcelの複雑なワークブックやシートやセルを操り、毎朝のタイトなスケジュールを縫って資料を作る。
Excelのマクロを駆使しなければ、とてもやり遂げられなかったでしょう。

本書は基礎編ですが、応用編とコントロール編も含めて何度も当時読み返したものです。私にとってプログラミングを学ぶ上でこのシリーズには大変お世話になりました。

特に、行列の二次元だけでしかExcelを理解していなかった私を、本書は三次元、四次元といった高次のレベルに引き上げてくれました。スカパーのカスタマーセンターで当時の部下だった元SEの女性にもヒントもらったのが懐かしい。
あれこそまさにブレークスルーの瞬間でした。

かつて、システムを扱うにはプログラミングやデータベース、ネットワークの知識が必須でした。
ですが、昨今のシステムにはそうした知識が不要になりつつあります。クラウドシステムやノンコードプログラミングの普及によって。
そして、ビジネスの現場で働く人にこそ、プログラミングの初歩的な理解が必要になる。そんな時代はすでに始まっています。

Excelマクロは、処理を自動的にマクロとして記述する仕組みがあります。それと本書を組み合わせると、システムの初歩の概念を学んでいただけるのではないでしょうか。
本書はプログラミングに不得手なビジネス現場のオペレーターの皆様にこそ読んでほしいと思います。

それでは皆さんまた明日!
※毎日バトンを渡すこともあるようですが、私は適当に渡すつもりです。事前に了解を取ったうえで。
なお、私は今までこうしたチャレンジには距離を置いていました。ですが、このチャレンジは参加する意義があると感じたので、参加させていただいております。
もしご興味がある方はDMをもらえればバトンをお渡しします。

「かんたんプログラミング Excel VBA 基礎編」
単行本 ソフトカバー:351ページ
大村あつし(著)、技術評論社(2004/3出版)
ISBN978-4-7741-1966-3

Day1 「FACTFULLNESS」
Day2 「成吉思汗の秘密」
Day3 「占星術殺人事件」
Day4 「ワーク・シフト」
Day5 「かんたんプログラミング Excel VBA 基礎編」
Day6 「?」
Day7 「?」

★ ★ ★ ★ ★ ★ ★
7日間ブックカバーチャレンジ
【目的とルール】
●読書文化の普及に貢献するためのチャレンジで、参加方法は好きな本を1日1冊、7日間投稿する
●本についての説明はナシで表紙画像だけアップ
●都度1人のFB友達を招待し、このチャレンジへの参加をお願いする
#7日間ブックカバーチャレンジ ##かんたんプログラミング


資本主義の極意 明治維新から世界恐慌へ


誰だって若い頃は理想主義者だ。理想に救いをもとめる。己の力不足を社会のせいにする時。自分を受け入れない苦い現実ではなく己の望む理想を望む誘惑に負けた時。なぜか。楽だから。

若いがゆえに知識も経験も人脈もない。だから社会に受け入れられない。そのことに気づかないまま、現実ではなく理想の社会に自分を投影する。そのまま停滞し、己の生き方が社会のそれとずれてゆく。気づいた時、社会の速さと向きが自分の生き方とずれていることに気づく。そして気が付くと社会に取り残されてしまう。かつての私の姿だ。

私の場合、理想の社会を望んではいたが、現実の社会に適応できるように自分を変えてきた。そして今に至っている。だから当初は、資本主義社会を否定した時期もあった。目先の利益に追われる生き方を蔑み、利他に生きる人生をよしとした時期が。利他に生きるとは、人々が平等である社会。つまり、綿密な計画をもとに需要と供給のバランスをとり、人々に平等に結果を配分する共産主義だ。

ところが、共産主義は私の中学三年の時に崩壊した。その後、長じた私は上京を果たした。そして社会の中でもがいた。その年月で私が学んだ事実。それは、共産主義の理想が人類にはとても実現が見込めないことだ。すべての人の欲求を否定することなどとてもできないし、あらゆる局面で無限のパターンを持つ経済活動を制御し切れるわけがない。しょせん不可能なのだ。

人の努力にかかわらず結果が平等になるのであれば、人はやる気をなくすし向上心も失われる。私にとって受け入れられなかったのは、向上心を否定されることだ。機会の平等を否定するつもりはないが、結果の平等が前提であれば話は別。きっと努力を辞めてしまうだろう。そう、努力が失われた人生に喜びはない。生きがいもない。それが喪われることが私には耐えがたかった。

また、私は自分の中の欲求にも勝てなかった。私を打ち負かしたのは温水洗浄便座の快適さだ。それが私の克己心を打ちのめした。人は欲求にはとても抗えない、という真理。この真理に抗えなかったことで、私は資本主義とひととおりの和解を果たしたのだ。軍門に下ったと言われても構わない。

東京で働くにつれ、自分のスキルが上がってきた。そして理想の世界に頼らず、現実の世界に生きるすべを身につけた。ところが、私が求めてやまない生き方とは、日常の中に見つからなかった。スキルや世過ぎの方法、要領は身についたが、それらは生き方とは言わない。私は生き方を日々の中にどうしても見つけたかった。それが私のメンタリティの問題なのだということは頭では理解していても、実際に社会の仕組みに組み込まれることへの抵抗感が拭い去れない。それは日々の通勤ラッシュという形で私に牙をむいて襲い掛かってきた。

果たしてこの抵抗感は私の未熟さからくる甘えなのか。それともマズローの五段階欲求でいう自己実現の欲求に達した自分の成長なのか。それを見極めるには資本主義をより深く知らねばならない、と思うようになってきた。資本主義とは果たして人類がたどり着いた究極なのだろうか、という問いが私の頭からどうしても去らない。社会と折り合いをつけつつ糧を得るために、個人事業主となり、法人化して経営者になった今、ようやく社会の中に自分の生き方を溶け込ませる方法が見えてきた。自分と社会が少しだけ融けあえたような感覚。少なくともここまで達成できれば、逃げや甘えと非難されることもないのでは、と思えるようになってきた。

それでもまだ欲しい。資本主義の極意が何で、どう付き合っていけばよいかという処方箋が。私にとって資本主義とは自らと家族の糧を稼ぐ手段に過ぎない。今までは対症療法的なその場しのぎの対応で生きてきたが、これからどう生きれば自らの人生と社会の制度とがもっともっと和解できるのか。その疑問の答えを本書に求めた。

著者の履歴はとてもユニーク。高校時代は共産主義国の東欧・ソ連に留学し、大学の神学部では神について研究し、外務省ではソ連のエキスパートとして活躍した。そのスケールの大きさや意識の高さは私など及びもつかない。しかし一つだけ私に共通していると思えることが、理想を目指した点だ。神や共産主義といったテーマからは、資本主義に飽き足らない著者の姿勢が見える。さらに外交の現場で揉まれた著者は徹底的なリアリストの視点を身に着けたはず。理想の甘美も知りつつ、現実を冷徹に見る。そんな著者が語る資本主義とはどのようなものなのか。ぜひ知りたいと思った。

本書は資本主義を語る。資本主義の中で著者が焦点を当てるのは、日本で独自に根付いた資本主義だ。「私のマルクス」というタイトルの本を世に問うた著者がなぜ資本主義なのか。それは著者の現実的な目には資本主義がこれからも続くであろうことが映っているからだ。私たちを縛る資本主義とは将来も付き合わねばならないらしい。資本主義と付き合わねばならない以上、資本主義を知らねばならない。それも日本に住む以上、日本に適応した資本主義を。もっとも私自身は、資本主義が今後も続くのかという予想については、少し疑問をもっている。そのことは下で触れたい。

著者はマルクスについても造詣が深い。著者は、マルクスが著した「資本論」から発展したマルクス経済学の他に、資本主義に内在する論理を的確に表した学問はないと断言する。私たちは上に書いた通り、共産主義国家が実践した経済を壮大な失敗だと認識している。それらの国が採用した経済体制とは「マルクス主義経済学」を指し、それは資本主義を打倒して共産主義革命を起こすことに焦点を与えていると指摘する。言い添えれば統治のための経済学とも言えるだろう。一方の「マルクス経済学」は資本主義に潜む論理を究明することだけが目的だという。つまりイデオロギーの紛れ込む余地が薄い。著者は中でも宇野弘蔵の起した宇野経済学の立場に立って論を進める。宇野弘蔵は日本に独自に資本主義が発達した事を必然だと捉える。西洋のような形と違っていてもいい。それは教条的ではなく、柔軟に学問を捉える姿勢の表れだ。著者はそこに惹かれたのだろう。

この二点を軸に、著者は日本にどうやって今の資本主義が根付いていったのかを明治までさかのぼって掘り起こす。

資本主義が興ったイギリスでは、地方の農地が毛織物産業のための牧場として囲い込まれてしまった。そのため、追い出された農民は都市に向かい労働者となった。いわゆるエンクロージャーだ。ただし、日本の場合は江戸幕府から明治への維新を通った後も、地方の農民はそのまま農業を続けていた。なぜかというと国家が主導して殖産興業化を進めたからだ。つまり民間主導でなかったこと。ここが日本の特色だと著者は指摘する。

たまに日本の規制の多さを指して、日本は成功した社会主義国だと皮肉交じりに言われる。そういわれるスタートは、明治にあったのだ。明治政府が地租を改正し、貨幣を発行した流れは、江戸時代からの年貢という米を基盤とした経済があった。古い経済体制の上に政府主導で貨幣経済が導入されたこと。それが農家を維持したまま、政府主導の経済を実現できた明治の日本につながった。それは日本の特異な形なのだと著者はいう。もちろん、政府主導で短期間に近代化を果たしたことが日本を世界の列強に押し上げた理由の一つであることは容易に想像がつく。

西洋とは違った形で根付いた資本主義であっても、資本主義である以上、景気の波に左右される。その最も悪い形こそが恐慌だ。第二章では日本を襲った恐慌のいきさつと、それに政府と民間がどう対処したかを紹介しつつ、日本に特有の資本主義の流れについて分析する。

宇野経済学では恐慌は資本主義にとって欠かせないプロセス。景気が良くなると生産増強のため、賃金が上がる。上がり過ぎればすなわち企業は儲からなくなる。設備はだぶつき、商品は売れず、企業は倒産する。それを防ぐには人件費をおさえるため、生産効率をあげる圧力が内側から出てくる。その繰り返しだという。

私が常々思うこと。それは、生産効率が上昇し続けるスパイラル、との資本主義の構造がはらんだ仕組みとは幻想に過ぎず、その幻想は人工知能が人類を凌駕するシンギュラリティによって終止符を打たれるのではないかということだ。言い換えれば人類という労働力が経済に要らなくなった時、人工知能によって導かれる経済を資本主義経済と呼べるのだろうか、との疑問だ。その問いが頭から去らない。生産力や賃金の考えが経済の運営にとって必須でなくなった時、景気の波は消える。そして資本すら廃れ、人工知能の判断が全てに優先される社会が到来した時、人類が排除されるかどうかは分からないが、既存の資本主義の概念はすっかり形を変えるはずだ。あるいは結果の平等、つまり共産主義社会の理想とはその時に実現されるのかもしれない。または著者や人類の俊英の誰もが思いついたことのない社会体制が人工知能によって実現されるかもしれないという怖れ。ただそれは本書の扱うべき内容ではない。著者もその可能性には触れていない。

国が主導して大銀行や大企業が設立された経緯と、日本が日清・日露を戦った事で、海外進出が遅れた事情を書く海外進出の遅れにより、日本の資本主義の成長に伴う海外への投資も活発にならなかった。その流れが変わったのが第一次大戦後だ。未曽有の好景気は、大正デモクラシーにつながった。だが、賃金の上昇にはつながらなかった。さらに関東大震災による被害が、日本の経済力では身に余ったこと。また、ロシア革命によって共産主義国家が生まれたこと。それらが集中し、日本の資本主義のあり方も見直さざるを得なくなった。我が国の場合、資本主義が成熟する前に、国際情勢がそれを許さなかった、と言える。

社会が左傾化する中、国は弾圧をくわえ、海外に目を向け始める。軍が発言力を強め、それが満州事変から始まる十五年の戦争につながってゆく。著者はこの時の戦時経済には触れない。戦時経済は日本の資本主義の本質を語る上では鬼っ子のようなものなのかもしれない。また、帝国主義を全面に立てた動きの中では、景気の循環も無くなる、と指摘する。そして恐慌から立ち直るには戦争しかないことも。

意外なことに、本書は敗戦後からの復興について全く筆を割かない。諸外国から奇跡と呼ばれた高度経済成長の時期は本書からスッポリと抜けている。ここまであからさまに高度経済成長期を省いた理由は本書では明らかにされない。宇野経済学が原理論と段階論からなっている以上、第二次大戦までの日本の動きを追うだけで我が国の資本主義の本質はつかめるはず、という意図だろうか。

本書の最終章は、バブルが弾けた後の日本を描く。現状分析というわけだ。日本の組織論や働き方は高度経済成長期に培われた。そう思う私にとって、著者がこの時期をバッサリと省いたことには驚く。今の日本人を縛り、苦しめているのは高度経済成長がもたらした成功神話だと思うからだ。だが、著者が到達した日本の資本主義の極意とは、組織論やミクロな経済活動の中ではなく、マクロな動きの中にしかすくい取れないのだろうか。

本書が意図するのは、私たちがこれからも資本主義の社会を生きる極意のはず。つまり組織論や生き方よりも、資本主義の本質を知ることが大切と言いたいのだろう。だから今までの日本の資本主義の発達、つまり本質を語る。そして高度成長期は大胆に省くのではないか。

グローバルな様相を強める経済の行く末を占うにあたり、アベノミクスやTPPといった問題がどう影響するのか。著者はそうした要素の全てが賃下げに向かっていると喝破する。上で私が触れた人工知能も賃下げへの主要なファクターとなるのだろう。著者はシェア・エコノミーの隆盛を取り上げ、人と人との関係を大切に生きることが資本主義にからめとられない生き方をするコツだと指南する。そしてカネは決して否定せず、資本主義の内なる論理を理解したうえで、急ぎつつ待ち望むというキリスト教の教義にも近いことを説く。

著者の結論は、今の私の生き方にほぼ沿っていると思える。それがわかっただけでも本書は満足だし、私がこれから重きを置くべき活動も見えてきた気がする。

‘2017/11/24-2017/12/01