「NGW」の記事
43 件
-
メールクライアントは作らなかった — Roundcube を選んだ4つの条件
Webメール連携で、IMAPクライアントは自作しなかった。PHP製・無料・自社製品での実績・AutoLoginがある、の4条件でRoundcubeを選んだ。開けたらAutoLoginはサンプルだったが、選定は正しかった。
-
仕上げは、レプリ設定で収まる — 一度きりの手順を、何度でも回せる一本にした
二台を組んだ「あと」の仕上げ ― 保管先を分ける、最初のバックアップ、預かり、監視を映す ― が、いくつものボタンと手作業に散らばっていた。それを一本にまとめた。肝は機能の多さではなく「何度でもやり直せる」ことのほうだった。今日はそこに二つ足した。複製が運んでくる大きすぎるメモリの取り分を直す「最適化」と、預かりの一日二回化。
-
バックアップは「取った」ではなく「戻せる」 — 監視の緑が隠していた三つの穴
監視画面が一列に緑を並べていても、それが答えているのは「取れた」だけで、「戻せる」ではない。対象に書いてあるのに一度も取れていなかった DB、「取った」と言い張る画面、静かに何もしなかった「完全初期化」。この夏の運用でまとめて踏んだ、取得と復元のあいだの三つの穴。
-
バージョン表記に β を付けた — ベータ版の決め手は、機能が揃ったことではなかった
8月21日、メールを「収受転送」で添付ごと収受文書にできるメール連携が完成した。併せて道具が揃い、残るのは現地でしかできない試験だけになった。だからログイン画面の版数に β が付いた。夜3時の67秒、52時間の誤警報、複製した機体で死んだメール、そして再試験でのログ増分0行。
-
Linux構築チームへ渡す — 私が Mac 使いのまま、新規団体のサーバを Ubuntu にした話
新規団体のサーバは Linux の実機にする。ただし私は Linux が苦手で、vi に至ってはお手上げである。だから組むのはパートナー企業にお願いすることにした。渡すのは Windows で動く構築ナビ一式。仮想環境の中で通してみたら、十を超える不具合と、送る直前にもう一つが出てきた。
-
取りに来るのか、送るのか — 仕様が決まらないまま、サイネージの「今日の会議」を無人化した
新しい庁舎の入口にデジタルサイネージが付く。そこへ「今日の会議」を出す。誰も更新しない仕組みにした。渡し方が決まっていないので、送る形と取りに来られる形の両方を用意した。作っている途中で、予約の時刻と会議の時刻は違うという当たり前に気づいた。
-
行ったり来たりで、よく忘れる — 構築の手順そのものをアプリにしたら、五つのバグが出てきた話
サーバ二台を建てるのに、三つのアプリを行ったり来たりしていた。順番は手順書の中にしかなく、覚えているのは私だけだった。それを工程順に案内するアプリにまとめたら、今まで見えていなかった不具合が五つ出てきた。どれも「動いているように見えて中身が違う」型で、人が目で見て気づけるものではなかった。
-
記憶なんて当てにならない — どこまで配ったか、どこまで配るべきかで悩んだ話
PDF共通関数は、外部ライブラリ用のディレクトリの下に置いてあった。それだけの理由で配布から落ち、呼び出す側だけが現場に届いた。関数が無いまま「対応済み」になるところだった。どこまで配ったのか、どこまで配るべきなのか。チェックひとつ付け忘れれば同じことが起きる仕組みを、憶えていなくても済む形に作り替えた一日。
-
リターンキーを、また「バーン」と叩くようになった — 体験用サーバ二台と、三十年前の手つき
二日かけて体験用のサーバを二台建てた。コマンドは覚えられないので、やることは全部ボタンにしてある。その途中で「画面にはオンと出ているのに誰も入れない Mac」に半日を溶かし、犯人は自分の設定ファイルの一行だった。そして夕方、自分がリターンキーを「バーン」と叩いていることに気づいた。昔やっていたように。
-
52時間、止まっていたのは見張りのほうだった — バックアップではなく、その周りを作り直した一日
朝、2台の画面が正反対のことを言っていた。片方は正常、片方は「52時間バックアップが止まっている」。追ってゆくと、バックアップは一度も止まっていなかった。止まっていたのは、それを見に行く先だった。その日、世代の預かりから監視アプリまで作って、最後にこう言われた。「十年後も正常に稼働しているためのバックアップシステムだと思う」。
-
「今日はここまでにしましょう」とAIに言われた — 完璧なバックアップは、たぶん無い
手順書をなぞって確認するだけの半日、のはずだった。終わったのは夜7時半で、コミットは20本を超えていた。5分ごとに静かに失敗していた同期、macOSが毎晩出す消せない警告、デモ機がCLONEを上書きしかけた事故。ついでにUSBケーブルが1本ポンコツだったせいで、新機能まで一つできた。そして最後に、疲れを知らないはずの相手から「今日はここまでにしましょう」と言われたのである。
-
毎晩3時に、ひとりでに立ち直る — 無人運用でつまずいた5つの落とし穴
現地に技術者はいない。Mac mini の上で動く Linux を、毎晩決まった時刻に止めて、立ち上げ直す。仕組みは半日で書けた。そのあとが長かった。ポートの奪い合い、SSHホスト鍵の食い違い、macOSの許可。どれも動いているように見えて、ある日静かに止まる種類だった。5つ潰した。実測ダウンタイムは67秒。
-
全部は運ばないほうが、きれいに移る — データ移行を保守コンソールのワンクリックにするまで
現行の Mac+MySQL 5.7 から、新しい Linux+MySQL 8.4 へデータを移す。全部を書き出して全部を読み込む。それで詰まった。新しい土台は古い書き方を受けつけない。答えは、運ぶものを減らすこと。そして「エラーが出なかった」ではなく「全部移った」を件数で確かめること。その一連を保守コンソールのワンクリックに畳んだ。
-
影武者は、本番の邪魔をしてはいけない — そっくりな予備機を、母艦を止めずに最新へ保つ
機器が壊れた日にすぐ入れ替えられるよう、本番そっくりの予備機を1台立てた。難所は動かすことではなく、本番に指一本触れずに最新へ保つことだった。派手なレプリケーションではなく、既にあるバックアップに相乗りする地味な同期に落ち着くまでの記録。
-
速いマシンは、優しい嘘をつく — 非力なLinuxがあぶり出した遅さを、母艦のMacごと直す
新しく建てたLinuxで、ホーム画面の起動に6秒かかった。RAMの潤沢なMacでは、この遅さが一度も表に出たことはない。非力な1台があぶり出したのは、何年も全職員が少しずつ払い続けていた全表スキャンだった。Linuxで見つけて直した手を、そのままMacへ持ち帰る。速いマシンほど、遅さを上手に隠す。
-
バックアップは、あるだけでは足りない — 静かに止まり、小さすぎて不安になった一日
前回建てたLinuxの土台に保守コンソールを載せた。ダッシュボードの数字が実機とずれていた。追うと、再構築のときにバックアップが静かに止まっていた。復旧させたら今度は6.5GBのデータが480MBに縮んで不安になる。バックアップは「ある」だけでは足りない。開いて、末尾まで揃っていると確かめて、初めてバックアップになる。
-
VMに、自分の住所は要らなかった — NGW初のLinuxサーバと「玄関を貸す」構成
NGWは20年ずっとMac上で動いてきた。次の10年に備えて、初めてLinuxの一台を建てた。仮想マシンを作るところまでは順調だった。つまずいたのはネットワークだ。VMに自分のLAN住所を持たせる計画は現実で通らず、ホストのMacを玄関として貸す形に落ち着いた。道中に現れた二つの脅し文句は、どちらも退屈な理由だった。
-
74件のうち、配るのは6件だった — 「更新日で選ぶ」が壊れた話
NGWの更新を配る仕組みは、とうに完成している。壊れたのは「何を配るか決める」ところだった。20年動いてきた「ファイルの更新日で選ぶ」が、AIと働き始めた途端に無関係なファイルを拾い出す。犯人はAIではなくgitだった。診断から、UPDATE MAKER を内容差分へ、さらに「案件を選ぶ」へ作り替えるまでの一日。
-
つぎはぎのメニューを、一本の ngwMenu にまとめた話
同じデータから3通りに描かれていたNGWのメニューを、単一のサーバ描画メニュー ngwMenu に一本化した。標準とドロップダウンを1つの土台で出し分けるハイブリッド構成へ。150超のアプリを一切触らず、差引 −2,403 行。動くだけのコードを、読んで美しいコードへ近づける記録。
-
決裁箱を携帯する時代を、NGWで考える — 閉じた壁の、外から押す
弟分のCGWは最初からスマホが決裁箱だった。だが本丸のNGWは、外部から遮断された閉域網の中で動いている。出張の多い首長が、出先から決裁を押すにはどうすればいいのか。画面転送という現実解と、最新のサービス、そして保守にも同じ道が使えるという話を、正直に書く。
-
「かがみ書が反映されない」の取り違え — 一つの起案に、二つの宛先
「引用起案で保存してもかがみ書に反映されない」という問い合わせ。最初は意味が分からなかった。起案書とかがみ書は、宛先の違う別々の文書だった。その気づきと、判断を人に返す直し方の記録。
-
みんな土日が休みではなかった
きっかけは「休暇の申請ができない職員がいる」というひとつの報告だった。雇用契約によっては、土日に勤務し火・木が休みという職員もいる。だがNGWは「休日とは土日と祝日である」という思い込みを、休暇・時間外・出勤簿・カレンダーの至るところに埋め込んでいた。それをたったひとつの式に一般化した記録。三つの環境への横展開と、カレンダーのバージョン違いを吸収した一手まで。
-
シャットダウンを、待たない — AIと「退勤打刻」を組み上げた半日のタイムライン
常駐している決裁通知クライアントに、PC起動=出勤・シャットダウン=退勤の打刻をやらせられないか。その一言から始まった半日を、提案・AIの回答・条件追加・実機試験での発見と改修まで、往復の順に記録した。ハートビート方式、操作ログの意外な転用、ネットワーク越しのIP食い違い。
-
決裁箱を携帯する時代 — スマホが、そのまま決裁箱になった
机の上の決裁箱は、画面の中へ移り、ついにポケットの中へ入った。NGWから機能を大幅に削って作った外郭団体向けグループウェアCGWは、最初からスマホを決裁専用の道具として設計した。館長や会長が事務所に居なくても、どこにいても決裁ができる。残念なのは、閉じた行政ネットワークの中では使えないことだけだ。
-
サロゲートペアだけじゃなかった、日本語の難しさ — IPAmj明朝で解決した話
拡張漢字(サロゲートペア)を倒して外字は終わったと思っていた。ところが「囬」という一字が豆腐になった。原因はコード範囲ではなくフォントのカバレッジ。NGWの明朝をIPAmj明朝に切り替えるまでの話。
-
オンライン決裁は、進むか、やり直すかだけ — 決裁を、二択に整理した
紙の決裁は、いま案件がどういう状態なのか外から見えなかった。NGWのオンライン決裁は、決裁者の選択を「承認して進む」か「差し戻してやり直す」かのふたつに絞った。不在の停滞は代決・引き上げで逃がし、決裁中はロックする。文書管理シリーズ第8回。
-
文書管理は、捨てるためにある — 引継と廃棄が、本当の仕事だ
文書管理と聞くと、大切にためて取り出せるようにすること、と思うかもしれない。だが本当の目的は逆で、要らなくなった文書を、期日どおりに適切に捨てることにある。ためるのは簡単、正しく捨てるのは難しい。引継・廃棄という文書管理の本題。文書管理シリーズ第7回。
-
最初からXLSXで出す — どうせExcelで開くのだから
データ出力といえばCSVが定番だ。だが役所のデータをCSVで出すと、先頭のゼロが消え、コードが日付に化け、文字が壊れる。そして利用者は、結局それをExcelで開く。ならば最初からXLSXで出せばいい。NGWの出力はXLSXにした。文書管理シリーズ第6回。
-
決裁の時間を縮める、それがDXだ — 決裁箱を知らない世代が、もう庁舎にいる
NGWにとってのDXは、派手な新技術ではない。決裁を速くする、ただそれだけだ。2023年に作ったオンライン決裁は、紙とハンコの併用を残したのに、導入団体では8割以上が電子で決裁されている。長年の慣習は、正しい道具さえあれば、いとも容易く変わる。文書管理シリーズ第9回。
-
紙への印刷は、全てPDFにした — 帳票は一字もずらせない
役所の帳票は、罫線一本・一字のズレも許されない。だからNGWは画面から直接印刷するのをやめ、印刷をすべてサーバ生成のPDFに通した。PDFは紙面を固定するだけでなく、そのまま保存できる——ペーパーレスの土台になる。文書管理シリーズ第5回。
-
今ある棚と簿冊を、登録するだけ — 現状から始める文書管理
文書管理システムというと「まず全部を理想の形に整理してから」と身構える。NGWは逆で、今まさに使っている棚と簿冊を、そのまま登録すれば動き出す。理想のライフサイクルは、導入してから育てればいい。低い入口こそが、続く文書管理の条件だ。文書管理シリーズ第4回。
-
文書管理規程は、どこも似ている — なのに、誰も読んでいない
どの自治体にも文書管理規程があり、その中身は驚くほど似ている。だが正直に言えば、日々それを読んでいる職員はほとんどいない。読まれない規程を、どうやって現実の動きに変えるか。受発番号の「一連番号」を10,20,30と読み替えた話を例に、NGWは規程を「動く仕組み」に翻訳する。文書管理シリーズ第3回。
-
収受と起案は、受発簿から始まった — 文書の所在を管理する
NGWの文書管理は、大きな設計図からではなく、情報公開法に応えるための「文書の所在管理」から始まった。外から来る収受と、内から起こす起案。その二つの入口を、受発簿という一本の台帳で押さえる。文書管理シリーズ第2回。
-
全ての文書は、分掌事務で管理する — 業務は、分掌事務でしかない
役所の文書を「課・係」で管理すると、組織改編のたびに壊れる。NGWは文書を、条例で定義された分掌事務に紐づけて管理する。業務の実体は分掌事務でしかなく、組織はそれを盛る器にすぎない。文書管理シリーズの第1回。
-
AIが、初めてのWindowsアプリを書いた — 決裁通知クライアント NgwNotificationClient
オンライン決裁は決裁者を名指しで通知するが、NGWを開かなければ気づけない。文書管理だけのDOCU団体では毎日は開かない。そこでWindowsのトースト通知で知らせる常駐クライアントを、GET方式で、Goで作った。長く手が出せなかった初のWindowsアプリを、AIがあっという間にプロトタイプにした話。
-
メニューを、データで管理する — アプリメニューと NGWT_APP_MENU の JSON
NGWはアプリごとに専用のメニュー体系を出す。40超のアプリに40通りのメニュー。それをHTMLにベタ書きせず、NGWT_APP_MENU テーブルの1列にJSON配列として持つ。起動可能アプリは職員区分ごとに NGWT_BOOT_MANAGER で管理し、メニューで隠し起動で防ぐ。データで持つから、並べ替えも権限の出し分けも自治体ごとの差し替えも、デプロイなしでできる。
-
ひとりのワガママは、みんなの設定 — 個人設定 ngwPersonalInfo と Property枠
「カレンダーは日曜始まりがいい」「いや月曜だ」。どちらも正しい主張を、NGWはどちらかに決めず、各自で選べる個人設定に昇格させる。ngwPersonalInfo.php と NGW_STAFF_PROPERTY の汎用Property枠、そして「みんなの既定+ひとりの上書き」という設計の話。
-
日付は和暦で見せる — 日付ピッカーと ngwFunc_SWHenkan
役所の日付は和暦で表示する。単純な整形に見えて、改元・元号の表記ゆれ・区切りと、制度の重みが詰まっている。NGWはそれを ngwFunc_SWHenkan というひとつの関数に集約し、CreateDBWebで「DATE」と定義するだけで和暦の日付ピッカーが生成される。
-
セレクトボックスは6行で作る — 共通ヘルパー(function)に揃える
NGWには数えきれないほどのセレクトボックスがある。それを、たった6行とひとつの共通関数ngwFunc_MakeSelectBoxに統一している。しかもその6行はCreateDBWebが生成する。手書きしないから、ばらつきが入らない。
-
NGWを作るアプリ「CreateDBWeb」 — テーブルを定義すれば、動くアプリが生まれる
NGWの画面の多くは手書きではなく、DBのテーブル定義から自動生成されている。その生成器がCreateDBWebだ。架空のNGWT_SAMPLEテーブルを題材に、「アプリを作るアプリ」の仕組みと、それがNGWの一貫性を支えている理由を書く。
-
NGWのアプリはどう動くか — SubModeという背骨
「ひとつのアプリが動く仕組み」を公開していく連載の第1回。すべての画面が従う共通の型=SubModeディスパッチと、描画→部分再描画→確定→帳票というライフサイクルを、実際のコードで解説する。
-
NGW開発BLOG をはじめます
自治体向け行政システム NGW の設計判断や実装の裏側を、少しずつ言葉にして残していくブログを開設しました。その辞(ことば)です。
-
NGWとは — 自治体の内部業務を支えるグループウェア
市役所・町村役場の内部事務と意思決定を支える行政システム「NGW」の全体像と、その設計に潜む行政システム特有の難しさを概観する連載の第一回。